@arbidocs/blocks 0.5.50 → 0.5.51
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/README.md +22 -0
- package/dist/{ConnectedCallDock-5OLBZED2.js → ConnectedCallDock-7NYH6DKB.js} +6 -6
- package/dist/{ConnectedCallDock-5OLBZED2.js.map → ConnectedCallDock-7NYH6DKB.js.map} +1 -1
- package/dist/{ConnectedCallDock-GHJTVUSQ.cjs → ConnectedCallDock-NBEAQYTJ.cjs} +7 -7
- package/dist/{ConnectedCallDock-GHJTVUSQ.cjs.map → ConnectedCallDock-NBEAQYTJ.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-SSSKBQA7.js → ConnectedCallRoom-CUV5VWGU.js} +6 -6
- package/dist/{ConnectedCallRoom-SSSKBQA7.js.map → ConnectedCallRoom-CUV5VWGU.js.map} +1 -1
- package/dist/{ConnectedCallRoom-GVNZ3S6R.cjs → ConnectedCallRoom-WRWKPC7R.cjs} +7 -7
- package/dist/{ConnectedCallRoom-GVNZ3S6R.cjs.map → ConnectedCallRoom-WRWKPC7R.cjs.map} +1 -1
- package/dist/agents/index.cjs +355 -343
- package/dist/agents/index.js +3 -3
- package/dist/agents/tasks/WorkflowThreadStrip.d.ts +2 -1
- package/dist/agents/workflows/ProgressChevron.d.ts +37 -0
- package/dist/agents/workflows/StepBarFrame.d.ts +5 -2
- package/dist/agents/workflows/index.d.ts +1 -0
- package/dist/agents/workflows/stepWindow.d.ts +9 -0
- package/dist/calls/index.cjs +2 -2
- package/dist/calls/index.js +2 -2
- package/dist/chat/index.cjs +80 -80
- package/dist/chat/index.js +3 -3
- package/dist/{chunk-JGFBC66V.js → chunk-2J34E5AH.js} +3 -3
- package/dist/{chunk-JGFBC66V.js.map → chunk-2J34E5AH.js.map} +1 -1
- package/dist/{chunk-RTS3B2W7.cjs → chunk-2QV2SCEB.cjs} +5 -5
- package/dist/{chunk-RTS3B2W7.cjs.map → chunk-2QV2SCEB.cjs.map} +1 -1
- package/dist/{chunk-YRORPDIY.js → chunk-3YJZGYSL.js} +3 -3
- package/dist/{chunk-YRORPDIY.js.map → chunk-3YJZGYSL.js.map} +1 -1
- package/dist/{chunk-IQ3VDTR7.js → chunk-42UKJPIQ.js} +3 -3
- package/dist/{chunk-IQ3VDTR7.js.map → chunk-42UKJPIQ.js.map} +1 -1
- package/dist/{chunk-TQYEHARI.cjs → chunk-AAHLGSSR.cjs} +5 -5
- package/dist/{chunk-TQYEHARI.cjs.map → chunk-AAHLGSSR.cjs.map} +1 -1
- package/dist/{chunk-IOPGY3IP.cjs → chunk-AEG44LPK.cjs} +23 -23
- package/dist/{chunk-IOPGY3IP.cjs.map → chunk-AEG44LPK.cjs.map} +1 -1
- package/dist/{chunk-THNTNAYI.js → chunk-CHEU7XI5.js} +3 -2
- package/dist/chunk-CHEU7XI5.js.map +1 -0
- package/dist/{chunk-O4LORAFC.js → chunk-EIJHL6ZX.js} +135 -100
- package/dist/chunk-EIJHL6ZX.js.map +1 -0
- package/dist/{chunk-7G4N2HP7.js → chunk-EJVM5IVT.js} +4 -4
- package/dist/{chunk-7G4N2HP7.js.map → chunk-EJVM5IVT.js.map} +1 -1
- package/dist/{chunk-7QJNWQ7O.js → chunk-GXNHLM5R.js} +3 -3
- package/dist/{chunk-7QJNWQ7O.js.map → chunk-GXNHLM5R.js.map} +1 -1
- package/dist/{chunk-EZLZ3MDU.cjs → chunk-JWYWP5EE.cjs} +3 -2
- package/dist/chunk-JWYWP5EE.cjs.map +1 -0
- package/dist/{chunk-JYR55F3P.cjs → chunk-K6T255ST.cjs} +211 -173
- package/dist/chunk-K6T255ST.cjs.map +1 -0
- package/dist/{chunk-4FIYA764.cjs → chunk-KKAKZSCR.cjs} +9 -9
- package/dist/{chunk-4FIYA764.cjs.map → chunk-KKAKZSCR.cjs.map} +1 -1
- package/dist/{chunk-MBGV6JHG.cjs → chunk-KYOVVXAS.cjs} +4 -4
- package/dist/{chunk-MBGV6JHG.cjs.map → chunk-KYOVVXAS.cjs.map} +1 -1
- package/dist/{chunk-PP3LWBIH.js → chunk-TFF3NMPV.js} +3 -3
- package/dist/{chunk-PP3LWBIH.js.map → chunk-TFF3NMPV.js.map} +1 -1
- package/dist/{chunk-226ILMHW.cjs → chunk-W3AYIOK2.cjs} +11 -11
- package/dist/{chunk-226ILMHW.cjs.map → chunk-W3AYIOK2.cjs.map} +1 -1
- package/dist/connect/index.cjs +351 -294
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +66 -9
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/files/upload/ConnectedUpload.d.ts +3 -1
- package/dist/connection/files/upload/ProcessingSettingsFooter.d.ts +31 -0
- package/dist/index.cjs +486 -474
- package/dist/index.js +6 -6
- package/dist/studio/index.cjs +4 -4
- package/dist/studio/index.js +3 -3
- package/dist/workflow-canvas/WorkflowCanvas.d.ts +2 -0
- package/dist/workflow-canvas/index.cjs +54 -52
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +5 -3
- package/dist/workflow-canvas/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/src/blocks.css +143 -0
- package/src/workflow-canvas/canvas.css +46 -27
- package/dist/chunk-EZLZ3MDU.cjs.map +0 -1
- package/dist/chunk-JYR55F3P.cjs.map +0 -1
- package/dist/chunk-O4LORAFC.js.map +0 -1
- package/dist/chunk-THNTNAYI.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agents/workflows/run.ts","../src/agents/workflows/StepDocuments.tsx","../src/agents/workflows/stepKinds.ts","../src/chat/useMentionAutocomplete.ts","../src/agents/workflows/StepChip.tsx","../src/lib/useElementSize.ts"],"names":["before","waiting","finished","jsx","StepChip","jsxs","cn","useState"],"mappings":"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","file":"chunk-CHEU7XI5.js","sourcesContent":["/**\n * The model of a stepped workflow (`run: { kind: 'steps' }`): the steps form a graph (each waits\n * for the steps in its `after`), and a run's progress is each step's `WorkflowStepState`, as the\n * run's thread records it (`stepStatesFromActivity`). Pure functions, shared by the thread runner\n * (`useWorkflowThread`), the builder's preview and the thread's top bar.\n */\n\nimport type {\n WorkflowActionStep,\n WorkflowActionType,\n WorkflowAgentStep,\n WorkflowAssignee,\n WorkflowDocumentRef,\n WorkflowField,\n WorkflowDefinition,\n WorkflowErrors,\n WorkflowInputs,\n WorkflowInputValue,\n WorkflowReviewStep,\n WorkflowStep,\n WorkflowStepState,\n WorkflowStepStatus,\n} from './types'\nimport { composeWorkflowPrompt, defaultInputs, validateInputs } from './workflow'\n\n/** A stepped workflow's steps; empty for a single-run one. */\nexport function workflowSteps(workflow: WorkflowDefinition): WorkflowStep[] {\n return workflow.run.kind === 'steps' ? workflow.run.steps : []\n}\n\nexport const isSteppedWorkflow = (workflow: WorkflowDefinition): boolean =>\n workflow.run.kind === 'steps'\n\n/* ------------------------------- graph ------------------------------- */\n\n/** What a step waits for: its `after`, else the step before it in the list (a sequence). */\nexport function stepDependencies(steps: WorkflowStep[], id: string): string[] {\n const i = steps.findIndex((s) => s.id === id)\n if (i < 0) return []\n return steps[i].after ?? (i > 0 ? [steps[i - 1].id] : [])\n}\n\n/** `a` waits for `b`, directly or through other steps. */\nexport function dependsOn(steps: WorkflowStep[], a: string, b: string): boolean {\n const seen = new Set<string>()\n const stack = [...stepDependencies(steps, a)]\n while (stack.length) {\n const id = stack.pop() as string\n if (id === b) return true\n if (seen.has(id)) continue\n seen.add(id)\n stack.push(...stepDependencies(steps, id))\n }\n return false\n}\n\n/**\n * The steps in dependency order, keeping the given order wherever the graph allows (a stable\n * topological sort). Every implicit dependency is written out as `after` first, so reordering\n * never changes what a step waits for. Steps in a cycle keep their place at the end; validation\n * reports them.\n */\nexport function orderSteps(steps: WorkflowStep[]): WorkflowStep[] {\n const explicit = steps.map((s) => ({ ...s, after: stepDependencies(steps, s.id) }))\n const known = new Set(explicit.map((s) => s.id))\n const placed = new Set<string>()\n const out: WorkflowStep[] = []\n let progress = true\n while (out.length < explicit.length && progress) {\n progress = false\n for (const s of explicit) {\n if (placed.has(s.id)) continue\n if (s.after.every((d) => placed.has(d) || !known.has(d))) {\n out.push(s)\n placed.add(s.id)\n progress = true\n break\n }\n }\n }\n return [...out, ...explicit.filter((s) => !placed.has(s.id))]\n}\n\nexport type WorkflowGraphProblem =\n | { code: 'duplicate'; step: string }\n | { code: 'unknown'; step: string; dependency: string }\n | { code: 'cycle'; step: string }\n | { code: 'order'; step: string; dependency: string }\n\n/** What makes a stepped workflow unrunnable. Empty = valid. */\nexport function validateWorkflowGraph(steps: WorkflowStep[]): WorkflowGraphProblem[] {\n const problems: WorkflowGraphProblem[] = []\n const ids = new Set<string>()\n for (const s of steps) {\n if (ids.has(s.id)) problems.push({ code: 'duplicate', step: s.id })\n ids.add(s.id)\n }\n steps.forEach((s, i) => {\n for (const d of stepDependencies(steps, s.id)) {\n if (!ids.has(d)) problems.push({ code: 'unknown', step: s.id, dependency: d })\n else if (d === s.id || dependsOn(steps, d, s.id)) problems.push({ code: 'cycle', step: s.id })\n else if (steps.findIndex((x) => x.id === d) > i)\n problems.push({ code: 'order', step: s.id, dependency: d })\n }\n })\n return problems\n}\n\n/**\n * The steps by depth (the longest chain before each): what the stepper shows side by side.\n * A sequence is one step per level.\n */\nexport function stepLevels(steps: WorkflowStep[]): WorkflowStep[][] {\n const depth = new Map<string, number>()\n for (const s of steps) {\n const deps = stepDependencies(steps, s.id).filter((d) => depth.has(d))\n depth.set(s.id, deps.length ? Math.max(...deps.map((d) => depth.get(d) as number)) + 1 : 0)\n }\n const levels: WorkflowStep[][] = []\n for (const s of steps) (levels[depth.get(s.id) as number] ??= []).push(s)\n return levels.filter(Boolean)\n}\n\n/* ----------------------------- progress ----------------------------- */\n\n/** One entry of a thread's activity log, as far as steps are concerned. */\nexport interface WorkflowActivityEvent {\n kind: string\n detail?: Record<string, unknown> | null\n actor_ext_id?: string | null\n created_at?: string\n}\n\nconst STEP_EVENTS: Record<string, WorkflowStepStatus> = {\n step_started: 'running',\n step_waiting: 'waiting',\n step_done: 'done',\n step_skipped: 'skipped',\n step_failed: 'failed',\n}\n\nconst str = (v: unknown): string | undefined => (typeof v === 'string' && v ? v : undefined)\nconst ACTION_TYPES: readonly WorkflowActionType[] = ['sign', 'email_draft', 'tabular_review']\nconst asAction = (v: unknown): WorkflowActionType | undefined =>\n ACTION_TYPES.includes(v as WorkflowActionType) ? (v as WorkflowActionType) : undefined\nconst asRecord = (v: unknown): Record<string, unknown> | undefined =>\n v && typeof v === 'object' && !Array.isArray(v) ? (v as Record<string, unknown>) : undefined\nconst asStrings = (v: unknown): string[] | undefined =>\n Array.isArray(v) ? v.filter((x): x is string => typeof x === 'string') : undefined\n\n/**\n * The documents (ids) a `waiting` step waits on to finish processing before its turn starts\n * (`waiting.documents`, from `step_waiting` and then `step_progress` as the set shrinks); none for\n * any other step. Action steps wait on people, not documents.\n */\nexport function waitingDocuments(state: WorkflowStepState | undefined): string[] {\n return state?.status === 'waiting' ? (asStrings(state.waiting?.documents) ?? []) : []\n}\n\n/** The documents a `step_waiting` / `step_progress` event names, if it names any. */\nexport function eventWaitingDocuments(detail: Record<string, unknown> | null | undefined) {\n return asStrings(asRecord(detail?.waiting)?.documents)\n}\n\n/** \"Waiting for 3 documents to finish processing\" (one: \"1 document\"). */\nexport function waitingForDocumentsText(count: number): string {\n return `Waiting for ${count} ${count === 1 ? 'document' : 'documents'} to finish processing`\n}\n\n/** The steps a `step_sent_back` reopens: its `reopened` list, else the one it went `to`. */\nfunction reopenedBy(detail: Record<string, unknown>): string[] {\n const to = str(detail.to)\n return asStrings(detail.reopened) ?? (to ? [to] : [])\n}\n\n/**\n * Each step's state from the thread's activity log (oldest first): its latest step event wins.\n * A send-back reopens the steps it lists as pending (only the one it went `to` is `sentBack`); a\n * `step_ready` records who was told and a `step_progress` what a waiting step now waits on, until\n * the step's next change. Mirrors the server (`workflow_steps.progress`).\n */\nexport function stepStatesFromActivity(\n events: WorkflowActivityEvent[]\n): Record<string, WorkflowStepState> {\n const states: Record<string, WorkflowStepState> = {}\n for (const e of events) {\n const detail = e.detail ?? {}\n const step = str(detail.step)\n if (!step) continue\n if (e.kind === 'step_sent_back') {\n const to = str(detail.to)\n for (const id of reopenedBy(detail))\n states[id] =\n id === to\n ? {\n status: 'pending',\n sentBack: true,\n hasNote: typeof detail.note_encrypted === 'string',\n }\n : { status: 'pending' }\n continue\n }\n if (e.kind === 'step_ready') {\n states[step] = { ...(states[step] ?? { status: 'pending' }), announcedTo: str(detail.to) }\n continue\n }\n if (e.kind === 'step_progress') {\n const before = states[step]\n const waiting = asRecord(detail.waiting)\n if (before?.status === 'waiting' && waiting) states[step] = { ...before, waiting }\n continue\n }\n const status = STEP_EVENTS[e.kind]\n if (!status) continue\n const before = states[step]\n const responseId = str(detail.response_id) ?? before?.responseId ?? null\n const startedAt = status === 'running' ? e.created_at : before?.startedAt\n const action = asAction(detail.action) ?? before?.action\n const documents = asStrings(detail.documents) ?? before?.documents\n const waiting = status === 'waiting' ? asRecord(detail.waiting) : undefined\n const output = status === 'done' ? asRecord(detail.output) : undefined\n const approved = Array.isArray(detail.approved)\n ? (detail.approved.filter(asRecord) as WorkflowStepState['approved'])\n : undefined\n const finished = status === 'done' || status === 'skipped' || status === 'failed'\n const declinedBy = str(detail.declined_by)\n // Skipped while it stood failed: what waits for it goes on without its result, and says so.\n const afterFailure =\n status === 'skipped' && (before?.status === 'failed' || !!before?.skippedAfterFailure)\n states[step] = {\n status,\n responseId,\n error: str(detail.error) ?? (afterFailure ? (before?.error ?? null) : null),\n ...(afterFailure ? { skippedAfterFailure: true } : {}),\n ...(startedAt ? { startedAt } : {}),\n ...(action ? { action } : {}),\n ...(documents?.length ? { documents } : {}),\n ...(waiting ? { waiting } : {}),\n ...(output ? { output } : {}),\n ...(approved ? { approved } : {}),\n ...(finished ? { by: e.actor_ext_id ?? null } : {}),\n ...(finished && e.created_at ? { at: e.created_at } : {}),\n ...(declinedBy ? { declinedBy } : {}),\n }\n }\n return states\n}\n\n/** The fields a person fills in on a step: a form's inputs, a review's fields. */\nexport function stepFields(step: WorkflowStep): WorkflowField[] {\n return step.kind === 'form' ? step.inputs : step.kind === 'review' ? (step.fields ?? []) : []\n}\n\n/** The fields the steps ask for (forms and reviews), in plan order. */\nexport const runFieldsOf = (steps: WorkflowStep[]): WorkflowField[] => steps.flatMap(stepFields)\n\n/** Every field the run asks for: the launch form's, then each form's and review's. */\nexport function runFields(workflow: WorkflowDefinition): WorkflowField[] {\n return [...workflow.inputs, ...workflowSteps(workflow).flatMap(stepFields)]\n}\n\n/** A fresh run's inputs: every field at its default, then the prefills. */\nexport function initialRunInputs(\n workflow: WorkflowDefinition,\n inputs: WorkflowInputs = {}\n): WorkflowInputs {\n return { ...defaultInputs({ ...workflow, inputs: runFields(workflow) }), ...inputs }\n}\n\nconst finished = (s: WorkflowStepState | undefined): boolean =>\n s?.status === 'done' || s?.status === 'skipped'\n\n/**\n * Where a step stands: `blocked` until everything it waits for has finished (done or skipped),\n * then `ready`, then its own status (`waiting`: an action step waiting on its people).\n */\nexport type WorkflowStepPhase =\n 'blocked' | 'ready' | 'running' | 'waiting' | 'done' | 'skipped' | 'failed'\n\nexport function stepPhase(\n steps: WorkflowStep[],\n states: Record<string, WorkflowStepState>,\n id: string\n): WorkflowStepPhase {\n const s = states[id]\n if (s && s.status !== 'pending') return s.status\n return stepDependencies(steps, id).every((d) => finished(states[d])) ? 'ready' : 'blocked'\n}\n\nexport const isRunFinished = (\n steps: WorkflowStep[],\n states: Record<string, WorkflowStepState>\n): boolean => steps.length > 0 && steps.every((s) => finished(states[s.id]))\n\n/** A step a person does (form, upload, review); agent and action steps start by themselves. */\nexport const isPersonStep = (step: WorkflowStep): boolean =>\n step.kind !== 'agent' && step.kind !== 'action'\n\n/** An action step whose waiting phase is a person's: signing, sending the email. */\nexport const isPersonAction = (step: WorkflowStep): step is WorkflowActionStep =>\n step.kind === 'action' && (step.action.type === 'sign' || step.action.type === 'email_draft')\n\n/** A step that can have an assignee and a reminder: a person step, or a signature or email. */\nexport const canAssign = (step: WorkflowStep): boolean => isPersonStep(step) || isPersonAction(step)\n\n/**\n * What the primary button does on the step in view:\n * - `complete`: finish this form, upload or review (approve) and move on;\n * - `move`: view the next step: this one is finished, or the next does not wait for it;\n * - `start`: start this agent or action step: it is ready but no run is under way to start it\n * (the run has no thread yet, or the server could not start it);\n * - `retry`: run this failed step again (what waits for it needs its result; skipping it is the\n * person's explicit choice, never the primary button);\n * - `finish`: show the completion (every step has finished);\n * - `wait`: nothing yet (this step is under way and the next waits for it, or it is blocked).\n */\nexport type WorkflowNextAction = 'complete' | 'move' | 'start' | 'retry' | 'finish' | 'wait'\n\nexport interface NextActionOptions {\n /**\n * No run is under way to start a ready agent or action step: the run's thread does not exist\n * yet (a run whose first open step is an agent step), or the server is not running it.\n */\n needsStart?: boolean\n /** The host can run a failed step again. */\n canRetry?: boolean\n}\n\nexport function nextAction(\n steps: WorkflowStep[],\n states: Record<string, WorkflowStepState>,\n current: string | null,\n { needsStart = false, canRetry = false }: NextActionOptions = {}\n): WorkflowNextAction {\n const i = steps.findIndex((s) => s.id === current)\n const step = steps[i]\n if (!step) return 'wait'\n const phase = stepPhase(steps, states, step.id)\n if (phase === 'blocked') return 'wait'\n const following = steps[i + 1]\n const independentNext = !!following && !dependsOn(steps, following.id, step.id)\n if (phase === 'done' || phase === 'skipped') {\n if (following) return 'move'\n return isRunFinished(steps, states) ? 'finish' : 'wait'\n }\n if (isPersonStep(step)) return 'complete'\n // An email draft is done when its person says it is sent; a signature, when its signers sign.\n if (phase === 'waiting' && step.kind === 'action' && step.action.type === 'email_draft')\n return 'complete'\n // Ready, but nothing will start it unless the person does (no thread yet, or no run under way).\n if (phase === 'ready' && needsStart) return 'start'\n // An agent step on its way (about to start, or running): look ahead if nothing there waits for it.\n if (phase !== 'failed') return independentNext ? 'move' : 'wait'\n // A failed step is never passed over by the primary button: what waits for it needs its result.\n // Retry it; skipping it anyway is a separate, explicit choice.\n const waitedFor = steps.slice(i + 1).some((s) => dependsOn(steps, s.id, step.id))\n if (!waitedFor && following) return 'move'\n return canRetry ? 'retry' : 'wait'\n}\n\n/**\n * The steps `id` waits for (directly or through others) that failed: still failed (so `id` is\n * blocked until they are retried), or skipped after failing (so `id` goes on without their\n * result). In plan order.\n */\nexport function failedUpstream(\n steps: WorkflowStep[],\n states: Record<string, WorkflowStepState>,\n id: string\n): Array<{ step: WorkflowStep; state: WorkflowStepState }> {\n return upstreamSteps(steps, id).flatMap((s) => {\n const state = states[s.id]\n return state && (state.status === 'failed' || state.skippedAfterFailure)\n ? [{ step: s, state }]\n : []\n })\n}\n\n/** A form's or a fielded review's problems (empty = it can move on); other steps have none. */\nexport function validateStep(step: WorkflowStep, inputs: WorkflowInputs): WorkflowErrors {\n const fields = stepFields(step)\n if (!fields.length) return {}\n return validateInputs(\n {\n id: step.id,\n title: step.title,\n description: '',\n inputs: fields,\n run: { kind: 'operation' },\n landing: 'chat',\n },\n inputs\n )\n}\n\n/* --------------------------- people and documents --------------------------- */\n\n/** Every step `id` waits for, directly or through others, in plan order. */\nexport function upstreamSteps(steps: WorkflowStep[], id: string): WorkflowStep[] {\n return steps.filter((s) => s.id !== id && dependsOn(steps, id, s.id))\n}\n\n/**\n * Where a ready step can send the work back to: an earlier step it waits for that has something\n * to redo (done, skipped or failed), nearest first.\n */\nexport function sendBackTargets(\n steps: WorkflowStep[],\n states: Record<string, WorkflowStepState>,\n id: string\n): WorkflowStep[] {\n return upstreamSteps(steps, id)\n .filter((s) => ['done', 'skipped', 'failed'].includes(states[s.id]?.status ?? 'pending'))\n .reverse()\n}\n\n/** Something a step still needs before it can run, for the builder to point out. */\nexport interface WorkflowStepProblem {\n step: string\n missing: 'document' | 'signers' | 'recipients' | 'tags' | 'documents'\n}\n\nconst isBlankRef = (ref: WorkflowDocumentRef): boolean =>\n 'step' in ref ? !ref.step : 'input' in ref ? !ref.input : !ref.id.trim()\n\n/** What the steps still need before they can run: an action's document, signers, … */\nexport function stepConfigProblems(steps: WorkflowStep[]): WorkflowStepProblem[] {\n const out: WorkflowStepProblem[] = []\n for (const s of steps) {\n if (s.kind === 'action') {\n const a = s.action\n if (a.type === 'sign') {\n if (!a.document || isBlankRef(a.document)) out.push({ step: s.id, missing: 'document' })\n if (!a.signers.length) out.push({ step: s.id, missing: 'signers' })\n } else if (a.type === 'email_draft') {\n if (!a.to.some((t) => t.trim())) out.push({ step: s.id, missing: 'recipients' })\n } else {\n if (!a.tags.length) out.push({ step: s.id, missing: 'tags' })\n if (Array.isArray(a.documents) && !a.documents.length)\n out.push({ step: s.id, missing: 'documents' })\n }\n }\n if (s.kind === 'agent' && s.editDocument && isBlankRef(s.editDocument))\n out.push({ step: s.id, missing: 'document' })\n }\n return out\n}\n\n/** A document version id (`doc-…@v3`) split into the document and its version. */\nexport function splitDocRef(ref: string): { id: string; version?: number } {\n const m = /^(doc-[A-Za-z0-9]+)(?:@v(\\d+))?$/.exec(ref)\n return m ? { id: m[1], ...(m[2] ? { version: Number(m[2]) } : {}) } : { id: ref }\n}\n\n/** How an assignee that names no one directly is described. */\nexport interface AssigneeWording {\n runOwner: string\n projectLead: string\n /** `{field}`: the person field's label. */\n input: string\n}\n\nexport const DEFAULT_ASSIGNEE_WORDING: AssigneeWording = {\n runOwner: 'whoever started the run',\n projectLead: 'the project lead',\n input: 'the person in “{field}”',\n}\n\n/**\n * Who a step is for, in words: the person it was announced to, the member it names, the person a\n * form field holds (each through `nameOf`), else its role. Undefined when it names no one.\n */\nexport function assigneeName(\n assignee: WorkflowAssignee | undefined,\n options: {\n nameOf?: (id: string) => string | undefined\n inputs?: WorkflowInputs\n fields?: WorkflowField[]\n /** Who the server told (the assignee resolved): wins over a role. */\n announcedTo?: string | null\n wording?: Partial<AssigneeWording>\n } = {}\n): string | undefined {\n const w = { ...DEFAULT_ASSIGNEE_WORDING, ...options.wording }\n const name = (id: string) => options.nameOf?.(id) ?? id\n const told = options.announcedTo ? options.nameOf?.(options.announcedTo) : undefined\n if (told) return told\n if (!assignee) return undefined\n if ('user' in assignee) return name(assignee.user)\n if ('input' in assignee) {\n const value = options.inputs?.[assignee.input]\n if (typeof value === 'string' && value) return name(value)\n const label = options.fields?.find((f) => f.name === assignee.input)?.label ?? assignee.input\n return w.input.replace('{field}', label)\n }\n if ('runOwner' in assignee) return w.runOwner\n return w.projectLead\n}\n\n/* ----------------------------- composing ----------------------------- */\n\nconst asText = (value: WorkflowInputValue | undefined): string =>\n typeof value === 'string' ? value.trim() : typeof value === 'number' ? String(value) : ''\n\n/**\n * Fill a step's `with` templates from the run's inputs: `{{a}}`, `{{a || b}}` (first non-blank).\n * A template that is exactly one bare reference passes the value through untouched.\n */\nexport function fillStepInputs(\n templates: Record<string, string> | undefined,\n inputs: WorkflowInputs\n): WorkflowInputs {\n const out: WorkflowInputs = {}\n for (const [name, template] of Object.entries(templates ?? {})) {\n const bare = /^\\{\\{\\s*([a-z][a-z0-9_]*)\\s*\\}\\}$/i.exec(template)\n if (bare) {\n out[name] = inputs[bare[1]] ?? ''\n continue\n }\n out[name] = fillRunText(template, inputs)\n }\n return out\n}\n\n/** A template over the run's inputs, as text (`{{a}}`, `{{a || b}}`). */\nexport function fillRunText(template: string, inputs: WorkflowInputs): string {\n return template\n .replace(/\\{\\{([^}]*)\\}\\}/g, (_, expr: string) => {\n for (const ref of expr.split('||')) {\n const text = asText(inputs[ref.trim()])\n if (text) return text\n }\n return ''\n })\n .trim()\n}\n\n/** The run thread's title: the workflow's `threadTitle` template, else its title. */\nexport function runThreadTitle(workflow: WorkflowDefinition, inputs: WorkflowInputs): string {\n const template = workflow.run.kind === 'steps' ? workflow.run.threadTitle : undefined\n return (template && fillRunText(template, inputs)) || workflow.title\n}\n\n/** What a review asks for: its instructions filled from the run, else its title. */\nexport function reviewInstructions(step: WorkflowReviewStep, inputs: WorkflowInputs): string {\n return (step.instructions && fillRunText(step.instructions, inputs)) || step.title\n}\n\nexport interface StepComposeOptions {\n /** Looks up the workflow a step names (`step.workflow`). */\n resolveWorkflow?: (id: string) => WorkflowDefinition | undefined\n /**\n * The host's wording for `operation` runs: the named workflow's id (or the step's own id when it\n * runs inline), its filled inputs, and the whole run's inputs (e.g. to ground it in the record).\n */\n compose?: (id: string, inputs: WorkflowInputs, runInputs: WorkflowInputs) => string | undefined\n}\n\n/** The prompt an agent step of `workflow` sends; '' when nothing could compose it (no binding). */\nexport function composeStepPrompt(\n workflow: WorkflowDefinition,\n step: WorkflowAgentStep,\n runInputs: WorkflowInputs,\n { resolveWorkflow, compose }: StepComposeOptions = {}\n): string {\n if (step.workflow) {\n const target = resolveWorkflow?.(step.workflow)\n if (!target) return ''\n const inputs = { ...defaultInputs(target), ...fillStepInputs(step.with, runInputs) }\n return target.run.kind === 'prompt'\n ? composeWorkflowPrompt(target, inputs)\n : (compose?.(target.id, inputs, runInputs) ?? '')\n }\n if (step.run?.kind === 'prompt') {\n return composeWorkflowPrompt(\n { ...workflow, inputs: runFields(workflow), run: step.run },\n runInputs\n )\n }\n return compose?.(step.id, runInputs, runInputs) ?? ''\n}\n","/**\n * The documents a step is about — what most steps of real work hand on, review and approve is a\n * document, not a message in the chat. A drafting step's are the versions it produced; an approval's\n * are the drafts it approves (the versions of the steps it waits for while it is open, exactly the\n * versions it recorded once approved). `StepDocumentCards` shows them as cards to open, and\n * `StepRecord` what a finished step recorded: who did it, when, and its answers.\n */\n\nimport { FileText } from 'lucide-react'\nimport { Button, cn } from '@arbidocs/react/ui'\nimport { splitDocRef, stepDependencies, stepFields } from './run'\nimport type { WorkflowField, WorkflowStep, WorkflowStepState } from './types'\n\n/** The document versions (`doc-…@v<n>`) a step is about, newest last, each once. */\nexport function stepDocuments(\n steps: WorkflowStep[],\n states: Record<string, WorkflowStepState>,\n id: string\n): string[] {\n const step = steps.find((s) => s.id === id)\n const state = states[id]\n if (!step) return []\n const own = [\n ...(state?.documents ?? []),\n ...((state?.output?.doc_ext_ids as string[] | undefined) ?? []),\n ]\n const refs =\n step.kind !== 'review'\n ? own\n : state?.status === 'done' && state.approved?.length\n ? state.approved.flatMap((e) => e.documents ?? [])\n : stepDependencies(steps, id).flatMap((dep) => states[dep]?.documents ?? [])\n return [...new Set(refs)]\n}\n\nexport interface StepDocumentLabels {\n open: string\n /** An approval's documents, before it is done. */\n toApprove: string\n approved: string\n produced: string\n /** `{version}` is replaced. */\n version: string\n}\n\nexport const DEFAULT_STEP_DOCUMENT_LABELS: StepDocumentLabels = {\n open: 'Open',\n toApprove: 'To approve',\n approved: 'Approved',\n produced: 'Drafted in this step',\n version: 'v{version}',\n}\n\n/** A step's documents as cards: the name, the version, and Open (the host's viewer or editor). */\nexport function StepDocumentCards({\n refs,\n heading,\n nameOfDoc,\n onOpen,\n labels,\n testId,\n}: {\n refs: string[]\n heading: string\n nameOfDoc?: (id: string) => string | undefined\n onOpen?: (ref: string) => void\n labels?: Partial<StepDocumentLabels>\n testId: string\n}) {\n const l = { ...DEFAULT_STEP_DOCUMENT_LABELS, ...labels }\n if (!refs.length) return null\n return (\n <div className=\"space-y-1\" data-testid={testId}>\n <p className=\"px-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground\">\n {heading}\n </p>\n {refs.map((ref) => {\n const { id, version } = splitDocRef(ref)\n return (\n <div\n key={ref}\n className=\"flex items-center gap-2 rounded-md border border-border bg-card px-2 py-1.5\"\n data-testid={`${testId}-${id}`}\n >\n <span className=\"wf-badge flex size-7 shrink-0 items-center justify-center rounded-md\">\n <FileText className=\"size-4\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span\n className=\"line-clamp-2 block break-words text-sm font-medium leading-snug\"\n title={nameOfDoc?.(id) ?? id}\n >\n {nameOfDoc?.(id) ?? id}\n </span>\n {version && (\n <span className=\"block text-[11px] text-muted-foreground\">\n {l.version.replace('{version}', String(version))}\n </span>\n )}\n </span>\n {onOpen && (\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"h-7 shrink-0 px-2 text-xs\"\n onClick={() => onOpen(ref)}\n data-testid={`${testId}-${id}-open`}\n >\n {l.open}\n </Button>\n )}\n </div>\n )\n })}\n </div>\n )\n}\n\nexport interface StepRecordLabels {\n /** `{name}` is replaced. */\n doneBy: string\n approvedBy: string\n someone: string\n}\n\nexport const DEFAULT_STEP_RECORD_LABELS: StepRecordLabels = {\n doneBy: 'Done by {name}',\n approvedBy: 'Approved by {name}',\n someone: 'someone',\n}\n\n/** A recorded time, in the reader's locale. */\nexport const formatDate = (iso: string | undefined): string => {\n const t = iso ? Date.parse(iso) : NaN\n return Number.isNaN(t)\n ? ''\n : new Date(t).toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' })\n}\n\n/** A recorded answer as text: a person's name, an option's label, a tick… */\nexport const shownValue = (\n v: unknown,\n field: WorkflowField,\n nameOf?: (id: string) => string | undefined\n) => {\n if (v === undefined || v === null || v === '') return '—'\n if (typeof v === 'boolean') return v ? '✓' : '✗'\n if (field.type === 'person' && typeof v === 'string') return nameOf?.(v) ?? v\n if (field.type === 'select') return field.options?.find((o) => o.value === v)?.label ?? String(v)\n return typeof v === 'object' ? JSON.stringify(v) : String(v)\n}\n\n/** What a finished step recorded: who did it (approved it) and when, and the answers it took. */\nexport function StepRecord({\n step,\n state,\n inputs,\n nameOf,\n labels,\n className,\n testId,\n}: {\n step: WorkflowStep\n state: WorkflowStepState | undefined\n inputs: Record<string, unknown>\n nameOf?: (id: string) => string | undefined\n labels?: Partial<StepRecordLabels>\n className?: string\n testId: string\n}) {\n const l = { ...DEFAULT_STEP_RECORD_LABELS, ...labels }\n if (state?.status !== 'done') return null\n const who = state.by ? (nameOf?.(state.by) ?? l.someone) : undefined\n const fields = stepFields(step)\n if (!who && !fields.length) return null\n return (\n <div className={cn('space-y-1 px-1', className)} data-testid={testId}>\n {who && (\n <p className=\"text-xs\">\n {(step.kind === 'review' ? l.approvedBy : l.doneBy).replace('{name}', who)}\n {state.at && <span className=\"text-muted-foreground\"> · {formatDate(state.at)}</span>}\n </p>\n )}\n {fields.length > 0 && (\n <dl className=\"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-xs\">\n {fields.map((f) => (\n <div key={f.name} className=\"contents\">\n <dt className=\"text-muted-foreground\">{f.label}</dt>\n <dd className=\"min-w-0 break-words\" data-testid={`${testId}-field-${f.name}`}>\n {shownValue(inputs[f.name], f, nameOf)}\n </dd>\n </div>\n ))}\n </dl>\n )}\n </div>\n )\n}\n\n/**\n * A step's document, one click from its chip: a button joined to the chip's right that opens the\n * latest version — the drafted letter, or the draft an approval is for. Icon-only where room is\n * short (the thread's bar), with the document's name in the chat.\n */\nexport function StepDocumentButton({\n kind,\n name,\n onOpen,\n showName = false,\n label = 'Open {name}',\n testId,\n}: {\n kind: string\n name: string\n onOpen: () => void\n showName?: boolean\n /** Its accessible name; `{name}` is replaced. */\n label?: string\n testId?: string\n}) {\n const text = label.replace('{name}', name)\n return (\n <button\n type=\"button\"\n onClick={onOpen}\n title={text}\n aria-label={text}\n className={cn(\n `wf-kind-${kind}`,\n 'wf-chip-addon',\n showName ? 'min-w-0 shrink' : 'shrink-0',\n '-ml-px flex h-8 items-center gap-1.5 rounded-r-lg border border-border bg-card px-2 text-xs font-medium shadow-sm hover:border-[hsl(var(--wf-accent)/0.55)] hover:text-[hsl(var(--wf-accent))]'\n )}\n data-testid={testId}\n >\n <FileText className=\"wf-kind-text size-3.5 shrink-0\" aria-hidden />\n {showName && <span className=\"max-w-[14rem] truncate\">{name}</span>}\n </button>\n )\n}\n","/**\n * The kinds of step, as every view of a workflow shows them: the builder's canvas, the runner's\n * stepper, a thread's top bar and the threads list. Each kind has one icon here and one colour in\n * `blocks.css` (`.wf-kind-<kind>`, on the `--wf-*` variables), so a step looks the same wherever\n * it appears.\n */\n\nimport { Bot, ClipboardCheck, FileInput, Mail, PenLine, Table2, Upload } from 'lucide-react'\nimport type { WorkflowStep } from './types'\n\n/** Each kind of step, with each platform action (an `action` step) as a kind of its own. */\nexport type WorkflowStepKind =\n 'form' | 'upload' | 'agent' | 'review' | 'sign' | 'email_draft' | 'tabular_review'\n\n/** Every kind, in the order the add menus list them. */\nexport const WORKFLOW_STEP_KINDS: readonly WorkflowStepKind[] = [\n 'form',\n 'upload',\n 'agent',\n 'review',\n 'sign',\n 'email_draft',\n 'tabular_review',\n]\n\n/** A step's kind: an action step is its action's type. */\nexport const stepKindOf = (step: WorkflowStep): WorkflowStepKind =>\n step.kind === 'action' ? step.action.type : step.kind\n\nexport const STEP_KIND_ICONS = {\n form: FileInput,\n upload: Upload,\n agent: Bot,\n review: ClipboardCheck,\n sign: PenLine,\n email_draft: Mail,\n tabular_review: Table2,\n} as const\n\n/** Each kind's name, as the canvas cards and the thread bar label a step. */\nexport const DEFAULT_STEP_KIND_LABELS: Record<WorkflowStepKind, string> = {\n form: 'Form',\n upload: 'Upload',\n agent: 'AI step',\n review: 'Approval',\n sign: 'Sign',\n email_draft: 'Email draft',\n tabular_review: 'Tabular review',\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type RefObject,\n type SyntheticEvent,\n} from 'react'\nimport { useListKeyNav, type UseListKeyNav } from '../lib/useListKeyNav'\nimport {\n filterMentionCandidates,\n findMentionQuery,\n insertMention,\n type MentionCandidate,\n} from '@arbidocs/react/shell'\n\nexport interface UseMentionAutocompleteOptions {\n /** The draft. */\n value: string\n /** Writes the draft (the same setter the composer uses). */\n onValueChange: (next: string) => void\n /** Who can be mentioned: workspace members and the assistant. */\n candidates: ReadonlyArray<MentionCandidate>\n /** The composer textarea; read for the caret and refocused after a pick. */\n textareaRef: RefObject<HTMLTextAreaElement | null>\n}\n\nexport interface UseMentionAutocomplete {\n isOpen: boolean\n /** Filtered candidates for the `@query` at the caret. */\n items: MentionCandidate[]\n /** Keyboard navigation; call `nav.handleKeyDown` first in the textarea's `onKeyDown`. */\n nav: UseListKeyNav\n /** Insert a candidate in place of the `@query`. */\n pick: (candidate: MentionCandidate) => void\n /** Wrap the composer's `onValueChange` with this so the caret is tracked as the user types. */\n onValueChange: (next: string) => void\n /** Spread onto the textarea (via `textareaProps`): tracks caret moves (clicks, arrows). */\n textareaProps: { onSelect: (event: SyntheticEvent<HTMLTextAreaElement>) => void }\n}\n\n/**\n * Headless `@mention` autocomplete for a textarea: finds the `@query` at the caret, filters the\n * candidates, and on pick replaces the query with `@<label> `. Pair with {@link MentionMenu}.\n */\nexport function useMentionAutocomplete({\n value,\n onValueChange,\n candidates,\n textareaRef,\n}: UseMentionAutocompleteOptions): UseMentionAutocomplete {\n const [caret, setCaret] = useState<number | null>(null)\n // Escape dismisses the menu for the `@` it was opened at, until the user starts another one.\n const [dismissedAt, setDismissedAt] = useState<number | null>(null)\n\n // The draft can change from outside (cleared on send, restored on error): once the dismissed\n // `@` is gone, re-arm so the next `@` there opens the menu again.\n useEffect(() => {\n if (dismissedAt !== null && value[dismissedAt] !== '@') setDismissedAt(null)\n }, [value, dismissedAt])\n\n const match = useMemo(() => {\n if (caret === null) return null\n const query = findMentionQuery(value, Math.min(caret, value.length))\n // A completed recipient followed by a space is no longer an autocomplete query.\n return query && candidates.some((candidate) => query.query === `${candidate.label} `)\n ? null\n : query\n }, [value, caret, candidates])\n const items = useMemo(\n () => (match ? filterMentionCandidates(candidates, match.query) : []),\n [match, candidates]\n )\n const isOpen = !!match && items.length > 0 && dismissedAt !== match.start\n\n const readCaret = useCallback(() => {\n const ta = textareaRef.current\n setCaret(ta ? ta.selectionStart : null)\n }, [textareaRef])\n\n const pick = useCallback(\n (candidate: MentionCandidate) => {\n if (!match || caret === null) return\n const next = insertMention(value, match.start, Math.min(caret, value.length), candidate.label)\n onValueChange(next.text)\n setCaret(next.caret)\n // The inserted `@<label> ` is complete: keep the menu shut for this `@`.\n setDismissedAt(match.start)\n requestAnimationFrame(() => {\n const ta = textareaRef.current\n if (!ta) return\n ta.focus()\n ta.setSelectionRange(next.caret, next.caret)\n })\n },\n [match, caret, value, onValueChange, textareaRef]\n )\n\n const nav = useListKeyNav({\n open: isOpen,\n items,\n onPick: pick,\n onDismiss: () => setDismissedAt(match?.start ?? null),\n resetKey: match?.query,\n })\n\n const handleValueChange = useCallback(\n (next: string) => {\n onValueChange(next)\n const ta = textareaRef.current\n setCaret(ta ? ta.selectionStart : next.length)\n // Deleting text (or the `@` itself) re-arms the menu: the user is editing that mention.\n if (dismissedAt !== null && (next.length < value.length || next[dismissedAt] !== '@')) {\n setDismissedAt(null)\n }\n },\n [onValueChange, textareaRef, dismissedAt, value]\n )\n\n return {\n isOpen,\n items,\n nav,\n pick,\n onValueChange: handleValueChange,\n textareaProps: { onSelect: readCaret },\n }\n}\n","/**\n * A step on a bar — the runner's stepper, a thread's top bar, the threads list — drawn as the\n * builder's canvas card in miniature (`.wf-chip` in `blocks.css`): its kind's accent and icon, its\n * phase in the badge (a filled check once done, a spinner while running, an hourglass while it\n * waits), and, for the step in view, the kind's name and what it waits on above its title, as a\n * canvas card heads itself. A button, so it can open a popover (`PopoverTrigger asChild`).\n */\n\nimport { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react'\nimport { AlertTriangle, Check, Hourglass, Loader2, MinusCircle } from 'lucide-react'\nimport { cn } from '@arbidocs/react/ui'\nimport type { WorkflowStepPhase } from './run'\n\n/**\n * What the badge shows: the kind's icon (filled in once done, as the canvas marks a done card), or\n * the phase while the step moves or when it went wrong.\n */\nexport function StepBadgeMark({ phase, icon }: { phase: WorkflowStepPhase; icon?: ReactNode }) {\n if (phase === 'done') return icon ? <>{icon}</> : <Check strokeWidth={3} />\n if (phase === 'running') return <Loader2 className=\"animate-spin\" />\n if (phase === 'waiting') return <Hourglass />\n if (phase === 'failed') return <AlertTriangle />\n if (phase === 'skipped') return <MinusCircle />\n return icon ? <>{icon}</> : <span className=\"size-1.5 rounded-full bg-current opacity-60\" />\n}\n\nexport interface StepChipProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** The kind (`form`, `agent`…, `start`, `adhoc`): its accent. */\n kind: string\n phase: WorkflowStepPhase\n /** The kind's icon (or the host's icon for the step). */\n icon?: ReactNode\n label: string\n /** The step in view: ringed, and headed with `heading` above its label. */\n current?: boolean\n /** The current chip's top line: the kind's name, and what the step waits on. */\n heading?: ReactNode\n /** The label's classes (how it gives up room on a crowded bar). */\n labelClassName?: string\n labelTestId?: string\n /** After the label: who acted in the step, a sent-back mark… */\n children?: ReactNode\n /** A static chip (the completion marker): not a button. */\n inert?: boolean\n}\n\nexport const StepChip = forwardRef<HTMLButtonElement, StepChipProps>(function StepChip(\n {\n kind,\n phase,\n icon,\n label,\n current,\n heading,\n labelClassName,\n labelTestId,\n children,\n inert,\n className,\n ...rest\n },\n ref\n) {\n const body = (\n <>\n <span className=\"wf-badge\" aria-hidden>\n <StepBadgeMark phase={phase} icon={icon} />\n </span>\n {current && heading ? (\n <span className=\"flex min-w-0 flex-col text-left\">\n <span className=\"wf-kind-text truncate text-[9px] font-semibold uppercase leading-3 tracking-wider\">\n {heading}\n </span>\n <span\n className={cn('wf-chip-label font-semibold', labelClassName)}\n data-testid={labelTestId}\n >\n {label}\n </span>\n </span>\n ) : (\n <span className={cn('wf-chip-label', labelClassName)} data-testid={labelTestId}>\n {label}\n </span>\n )}\n {children}\n </>\n )\n const classes = cn('wf-chip', `wf-kind-${kind}`, className)\n if (inert)\n return (\n <span\n className={classes}\n data-phase={phase}\n aria-current={current ? 'step' : undefined}\n {...(rest as Record<string, unknown>)}\n >\n {body}\n </span>\n )\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classes}\n data-phase={phase}\n aria-current={current ? 'step' : undefined}\n {...rest}\n >\n {body}\n </button>\n )\n})\n","import { useLayoutEffect, useState, type RefObject } from 'react'\nimport { observeResize } from './observe-resize'\n\nexport interface ElementSize {\n width: number\n height: number\n}\n\n/**\n * The border-box size of an element, kept current with a ResizeObserver. It is measured before\n * the first paint (layout effect), so a layout that depends on it never flashes the wrong mode.\n * Window resize is listened to as well (a no-ResizeObserver engine, jsdom, still re-measures).\n */\nexport function useElementSize<T extends HTMLElement>(ref: RefObject<T | null>): ElementSize {\n const [size, setSize] = useState<ElementSize>({ width: 0, height: 0 })\n useLayoutEffect(() => {\n const el = ref.current\n if (!el) return\n const measure = () => {\n const rect = el.getBoundingClientRect()\n setSize((prev) =>\n prev.width === rect.width && prev.height === rect.height\n ? prev\n : { width: rect.width, height: rect.height }\n )\n }\n measure()\n window.addEventListener('resize', measure)\n const stopObserving = observeResize(el, measure)\n return () => {\n window.removeEventListener('resize', measure)\n stopObserving()\n }\n }, [ref])\n return size\n}\n\n/** The root font size in px (what `rem` means), 16 when it cannot be read. */\nexport function rootFontSizePx(): number {\n if (typeof document === 'undefined') return 16\n const size = parseFloat(getComputedStyle(document.documentElement).fontSize)\n return Number.isFinite(size) && size > 0 ? size : 16\n}\n"]}
|
|
@@ -12,7 +12,7 @@ import { ActionLink } from './chunk-NXSGOC2M.js';
|
|
|
12
12
|
import { GridView } from './chunk-7F5Z4K5W.js';
|
|
13
13
|
import { TabHeader } from './chunk-ABEKUV6L.js';
|
|
14
14
|
import { EmptyState } from './chunk-P6GHJSLR.js';
|
|
15
|
-
import { DEFAULT_STEP_RECORD_LABELS, DEFAULT_STEP_DOCUMENT_LABELS, DEFAULT_STEP_KIND_LABELS, workflowSteps, canAssign, nextAction, validateStep, assigneeName, runFieldsOf, failedUpstream, stepPhase, sendBackTargets, formatDate, shownValue, stepKindOf, stepLevels, waitingDocuments, stepDependencies, reviewInstructions, splitDocRef, isPersonStep, stepFields, useMentionAutocomplete, eventWaitingDocuments, waitingForDocumentsText, StepChip, StepDocumentButton, isRunFinished, stepDocuments, STEP_KIND_ICONS, StepDocumentCards, StepRecord, composeStepPrompt, useElementSize, runFields, StepBadgeMark } from './chunk-
|
|
15
|
+
import { DEFAULT_STEP_RECORD_LABELS, DEFAULT_STEP_DOCUMENT_LABELS, DEFAULT_STEP_KIND_LABELS, workflowSteps, canAssign, nextAction, validateStep, assigneeName, runFieldsOf, failedUpstream, stepPhase, sendBackTargets, formatDate, shownValue, stepKindOf, stepLevels, waitingDocuments, stepDependencies, reviewInstructions, splitDocRef, isPersonStep, stepFields, useMentionAutocomplete, eventWaitingDocuments, waitingForDocumentsText, StepChip, StepDocumentButton, isRunFinished, stepDocuments, STEP_KIND_ICONS, StepDocumentCards, StepRecord, composeStepPrompt, useElementSize, runFields, StepBadgeMark } from './chunk-CHEU7XI5.js';
|
|
16
16
|
import { workflowsForHost, isWorkflowScope, fieldToFrontmatter, workflowFromFrontmatter, defaultInputs, validateInputs, mergeSkillWorkflows, composeWorkflowPrompt } from './chunk-TZGBRLPK.js';
|
|
17
17
|
import { useIsPhone } from './chunk-SLSBJRWW.js';
|
|
18
18
|
import { MentionMenu } from './chunk-GAGYAHYO.js';
|
|
@@ -22,7 +22,7 @@ import { ModalHeader } from './chunk-TX2ZICS7.js';
|
|
|
22
22
|
import { testIdOr, prefixedTestId } from './chunk-7F6CBP3Z.js';
|
|
23
23
|
import { cn, Label, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Textarea, Input, Switch, Button, Collapsible, CollapsibleTrigger, CollapsibleContent, Tooltip, TooltipTrigger, TooltipContent, EntityPill, Card, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Badge, Slider, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, VisibilityToggle, ThreadVisibilityIcon, DialogClose, Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandItem, Checkbox, UserEntity, ARBI_MARK_SRC, ProviderIcon, formatFriendlyDate, DropdownMenuSeparator, PopoverClose } from '@arbidocs/react/ui';
|
|
24
24
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
25
|
-
import {
|
|
25
|
+
import { forwardRef, memo, useState, useMemo, useRef, useEffect, useCallback, useSyncExternalStore, useLayoutEffect } from 'react';
|
|
26
26
|
import { ChevronDown, ChevronRight, Plus, Trash2, Globe, Terminal, Telescope, ListChecks, FileText, ImageIcon, Brain, Wand2, Glasses, Zap, Sparkles, Reply, Wrench, MessageSquare, Target, Cog, ClipboardList, CornerDownRight, Crown, Milestone, Bookmark, MessageCircleQuestion, Languages, ImagePlus, FilePlus, Bot, Link, Image, List, Search, UserRound, CornerUpLeft, ShieldCheck, Check, Hourglass, Clock, PenLine, X, ExternalLink, Mail, Table2, CheckCircle2, ArrowLeft, Loader2, ArrowRight, RotateCw, GitBranch, AlertTriangle, Library, NotebookPen, GanttChartSquare, Copy, Play, Pencil, Lock, Download, FileX, SkipForward, AlertCircle, KeyRound, Workflow, ChevronsUpDown, ChevronsDownUp, ListTodo, CheckCheck, MoreHorizontal, CalendarClock, ArrowUpRight, SendHorizontal, MessagesSquare, Eye, History, ChevronUp, Pause, Activity, MoreVertical, TriangleAlert, CheckSquare, Square, SquareArrowOutUpRight, LayoutGrid, CornerLeftUp, CircleDashed, RotateCcw, ListPlus, CircleCheck, Hand, BellRing, Flag, Disc, Phone, UserRoundCog, MessageSquareReply, ChevronLeft } from 'lucide-react';
|
|
27
27
|
import { unzip, strFromU8 } from 'fflate';
|
|
28
28
|
import { isSharedSkill, getStepTool, getAgentStepLabel, getCurrentStep } from '@arbidocs/sdk/browser';
|
|
@@ -593,11 +593,48 @@ function useWorkflowView(options) {
|
|
|
593
593
|
}
|
|
594
594
|
};
|
|
595
595
|
}
|
|
596
|
+
function ChevronShape({ className }) {
|
|
597
|
+
return /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn("wf-chevron", className) });
|
|
598
|
+
}
|
|
599
|
+
var ProgressChevronBar = forwardRef(
|
|
600
|
+
function ProgressChevronBar2({ complete, className, ...rest }, ref) {
|
|
601
|
+
return /* @__PURE__ */ jsx(
|
|
602
|
+
"ol",
|
|
603
|
+
{
|
|
604
|
+
ref,
|
|
605
|
+
className: cn("wf-seg-bar", className),
|
|
606
|
+
"data-complete": complete || void 0,
|
|
607
|
+
...rest
|
|
608
|
+
}
|
|
609
|
+
);
|
|
610
|
+
}
|
|
611
|
+
);
|
|
612
|
+
var ProgressChevron = forwardRef(
|
|
613
|
+
function ProgressChevron2({ kind, phase, current, className, children, ...rest }, ref) {
|
|
614
|
+
return /* @__PURE__ */ jsxs(
|
|
615
|
+
"li",
|
|
616
|
+
{
|
|
617
|
+
ref,
|
|
618
|
+
className: cn("wf-seg", kind && `wf-kind-${kind}`, className),
|
|
619
|
+
"data-phase": phase,
|
|
620
|
+
"data-current": current || void 0,
|
|
621
|
+
...rest,
|
|
622
|
+
children: [
|
|
623
|
+
/* @__PURE__ */ jsx(ChevronShape, {}),
|
|
624
|
+
children
|
|
625
|
+
]
|
|
626
|
+
}
|
|
627
|
+
);
|
|
628
|
+
}
|
|
629
|
+
);
|
|
596
630
|
|
|
597
631
|
// src/agents/workflows/stepWindow.ts
|
|
598
632
|
var LABEL_MAX_PX = 320;
|
|
599
633
|
var CHAR_PX = 6.5;
|
|
600
|
-
var
|
|
634
|
+
var CHEVRON_SIDES_PX = 10 + 4 + (10 + 6);
|
|
635
|
+
var CHEVRON_OVERLAP_PX = 10 - 2;
|
|
636
|
+
var CHIP_CHROME_PX = 20 + 6 + 8;
|
|
637
|
+
var LEVEL_CHROME_PX = CHIP_CHROME_PX + CHEVRON_SIDES_PX - CHEVRON_OVERLAP_PX;
|
|
601
638
|
var GROUP_CHIP_PX = 32;
|
|
602
639
|
function levelRoomPx(titles) {
|
|
603
640
|
const label = Math.max(0, ...titles.map((t) => Math.min(LABEL_MAX_PX, t.length * CHAR_PX)));
|
|
@@ -695,7 +732,7 @@ var STEP_EXTRA = "min-w-[3rem] shrink-[1000000] truncate font-normal opacity-80"
|
|
|
695
732
|
var fill = (template, values) => Object.entries(values).reduce((s, [k, v]) => s.replace(`{${k}}`, String(v)), template);
|
|
696
733
|
var NARROW_PX = 560;
|
|
697
734
|
var ARROWS_PX = 56;
|
|
698
|
-
var HIDDEN_PX =
|
|
735
|
+
var HIDDEN_PX = 28 + CHEVRON_SIDES_PX - CHEVRON_OVERLAP_PX;
|
|
699
736
|
function StepBarFrame({
|
|
700
737
|
levels,
|
|
701
738
|
phaseOf,
|
|
@@ -825,7 +862,7 @@ function StepBarFrame({
|
|
|
825
862
|
"button",
|
|
826
863
|
{
|
|
827
864
|
type: "button",
|
|
828
|
-
className: "flex shrink-0 items-center rounded-full px-1.5 py-1 text-[11px] tabular-nums text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
865
|
+
className: "wf-chip-addon flex shrink-0 items-center rounded-full px-1.5 py-1 text-[11px] tabular-nums text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
829
866
|
"aria-label": fill(l.position, { position: win.position, total: win.total }),
|
|
830
867
|
title: fill(l.position, { position: win.position, total: win.total }),
|
|
831
868
|
"data-testid": tid("steps-count"),
|
|
@@ -851,7 +888,7 @@ function StepBarFrame({
|
|
|
851
888
|
"button",
|
|
852
889
|
{
|
|
853
890
|
type: "button",
|
|
854
|
-
className: "flex shrink-0 items-center gap-0.5 rounded-full px-1.5 py-1 text-xs text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
891
|
+
className: "wf-chip-addon flex shrink-0 items-center gap-0.5 rounded-full px-1.5 py-1 text-xs text-muted-foreground hover:bg-accent hover:text-foreground",
|
|
855
892
|
"aria-label": fill(side === "before" ? l.hiddenBefore : l.hiddenAfter, { count }),
|
|
856
893
|
title: fill(side === "before" ? l.hiddenBefore : l.hiddenAfter, { count }),
|
|
857
894
|
"data-testid": tid(`hidden-${side}`),
|
|
@@ -891,19 +928,28 @@ function StepBarFrame({
|
|
|
891
928
|
};
|
|
892
929
|
const running = win.runningHidden;
|
|
893
930
|
const outOfViewChip = (s, kind) => /* @__PURE__ */ jsx(
|
|
894
|
-
|
|
931
|
+
ProgressChevron,
|
|
895
932
|
{
|
|
896
933
|
kind: kindOf(s),
|
|
897
934
|
phase: kind === "working" ? "running" : "failed",
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
935
|
+
className: "min-w-0 shrink",
|
|
936
|
+
children: /* @__PURE__ */ jsx(
|
|
937
|
+
StepChip,
|
|
938
|
+
{
|
|
939
|
+
kind: kindOf(s),
|
|
940
|
+
phase: kind === "working" ? "running" : "failed",
|
|
941
|
+
label: fill(l[kind], { title: s.title }),
|
|
942
|
+
labelClassName: narrow ? "sr-only" : "truncate",
|
|
943
|
+
onClick: () => select(s.id),
|
|
944
|
+
className: "max-w-[14rem] shrink",
|
|
945
|
+
title: fill(l[kind], { title: s.title }),
|
|
946
|
+
"data-testid": tid(`${kind === "working" ? "working" : "failed"}-${s.id}`)
|
|
947
|
+
}
|
|
948
|
+
)
|
|
904
949
|
},
|
|
905
950
|
s.id
|
|
906
951
|
);
|
|
952
|
+
const segment = (node, key, kind) => node ? /* @__PURE__ */ jsx(ProgressChevron, { kind, className: "shrink-0", children: node }, key) : null;
|
|
907
953
|
return /* @__PURE__ */ jsxs(
|
|
908
954
|
"nav",
|
|
909
955
|
{
|
|
@@ -915,60 +961,56 @@ function StepBarFrame({
|
|
|
915
961
|
"data-narrow": narrow || void 0,
|
|
916
962
|
children: [
|
|
917
963
|
arrow("back"),
|
|
918
|
-
win.
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
level.index === win.currentLevel
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
renderStep(level.primary, level, win, narrow),
|
|
931
|
-
level.others.length > 0 && /* @__PURE__ */ jsx(
|
|
932
|
-
GroupChip,
|
|
933
|
-
{
|
|
934
|
-
level,
|
|
935
|
-
label: fill(l.parallel, { count: level.others.length }),
|
|
936
|
-
heading: l.inParallel,
|
|
937
|
-
row: (s) => row(s, s.id === atId),
|
|
938
|
-
tid
|
|
939
|
-
}
|
|
964
|
+
/* @__PURE__ */ jsxs(ProgressChevronBar, { complete: !win.canForward, className: "min-w-0 flex-[1_1_auto]", children: [
|
|
965
|
+
win.start === 0 && segment(leading, "leading", "start"),
|
|
966
|
+
segment(overflow("before", win.hiddenBefore), "hidden-before"),
|
|
967
|
+
win.visible.map((level) => /* @__PURE__ */ jsxs(
|
|
968
|
+
ProgressChevron,
|
|
969
|
+
{
|
|
970
|
+
kind: kindOf(level.primary),
|
|
971
|
+
phase: phaseOf(level.primary.id),
|
|
972
|
+
current: level.index === win.currentLevel,
|
|
973
|
+
className: cn(
|
|
974
|
+
"min-w-[5.5rem] grow basis-auto",
|
|
975
|
+
level.index === win.currentLevel ? "shrink" : "shrink-[1000000]"
|
|
940
976
|
),
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
977
|
+
"data-role": level.role,
|
|
978
|
+
children: [
|
|
979
|
+
renderStep(level.primary, level, win, narrow),
|
|
980
|
+
level.others.length > 0 && /* @__PURE__ */ jsx(
|
|
981
|
+
GroupChip,
|
|
982
|
+
{
|
|
983
|
+
level,
|
|
984
|
+
label: fill(l.parallel, { count: level.others.length }),
|
|
985
|
+
heading: l.inParallel,
|
|
986
|
+
row: (s) => row(s, s.id === atId),
|
|
987
|
+
tid
|
|
988
|
+
}
|
|
989
|
+
),
|
|
990
|
+
renderAfter?.(level)
|
|
991
|
+
]
|
|
992
|
+
},
|
|
993
|
+
level.steps.map((s) => s.id).join("+")
|
|
994
|
+
)),
|
|
995
|
+
segment(overflow("after", win.hiddenAfter), "hidden-after"),
|
|
996
|
+
!win.canForward && segment(trailing, "trailing")
|
|
997
|
+
] }),
|
|
956
998
|
arrow("forward"),
|
|
957
999
|
running.length > 0 && /* @__PURE__ */ jsxs(
|
|
958
|
-
|
|
1000
|
+
ProgressChevronBar,
|
|
959
1001
|
{
|
|
960
|
-
className: cn("
|
|
1002
|
+
className: cn("shrink-[1000]", !narrow && "min-w-[6.5rem]"),
|
|
961
1003
|
"data-testid": tid("working"),
|
|
962
1004
|
children: [
|
|
963
1005
|
(running.length > 2 ? running.slice(0, 1) : running).map(
|
|
964
1006
|
(s) => outOfViewChip(s, "working")
|
|
965
1007
|
),
|
|
966
|
-
running.length > 2 && /* @__PURE__ */ jsxs(Popover, { children: [
|
|
1008
|
+
running.length > 2 && /* @__PURE__ */ jsx(ProgressChevron, { phase: "running", className: "shrink-0", children: /* @__PURE__ */ jsxs(Popover, { children: [
|
|
967
1009
|
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
968
1010
|
"button",
|
|
969
1011
|
{
|
|
970
1012
|
type: "button",
|
|
971
|
-
className: "flex shrink-0 items-center gap-1 rounded-lg border border-border bg-card px-2 py-1 text-xs text-muted-foreground hover:text-foreground",
|
|
1013
|
+
className: "wf-chip-addon flex shrink-0 items-center gap-1 rounded-lg border border-border bg-card px-2 py-1 text-xs text-muted-foreground hover:text-foreground",
|
|
972
1014
|
"data-testid": tid("working-more"),
|
|
973
1015
|
children: [
|
|
974
1016
|
/* @__PURE__ */ jsx(Loader2, { className: "size-3.5 animate-spin" }),
|
|
@@ -977,14 +1019,14 @@ function StepBarFrame({
|
|
|
977
1019
|
}
|
|
978
1020
|
) }),
|
|
979
1021
|
/* @__PURE__ */ jsx(PopoverContent, { align: "end", className: "w-72 p-1", children: running.slice(1).map((s) => row(s, false)) })
|
|
980
|
-
] })
|
|
1022
|
+
] }) })
|
|
981
1023
|
]
|
|
982
1024
|
}
|
|
983
1025
|
),
|
|
984
1026
|
win.failedHidden.length > 0 && /* @__PURE__ */ jsx(
|
|
985
|
-
|
|
1027
|
+
ProgressChevronBar,
|
|
986
1028
|
{
|
|
987
|
-
className: cn("
|
|
1029
|
+
className: cn("shrink-[1000]", !narrow && "min-w-[6.5rem]"),
|
|
988
1030
|
"data-testid": tid("failed"),
|
|
989
1031
|
children: win.failedHidden.map((s) => outOfViewChip(s, "failedStep"))
|
|
990
1032
|
}
|
|
@@ -1005,7 +1047,7 @@ function GroupChip({
|
|
|
1005
1047
|
"button",
|
|
1006
1048
|
{
|
|
1007
1049
|
type: "button",
|
|
1008
|
-
className: "shrink-0 rounded-md border border-border bg-card px-1.5 py-0.5 text-[11px] font-medium tabular-nums text-muted-foreground shadow-sm hover:text-foreground",
|
|
1050
|
+
className: "wf-chip-addon shrink-0 rounded-md border border-border bg-card px-1.5 py-0.5 text-[11px] font-medium tabular-nums text-muted-foreground shadow-sm hover:text-foreground",
|
|
1009
1051
|
"aria-label": label,
|
|
1010
1052
|
title: label,
|
|
1011
1053
|
"data-testid": tid(`group-${level.steps[0].id}`),
|
|
@@ -8194,7 +8236,7 @@ function TaskFlow({
|
|
|
8194
8236
|
const el = e.currentTarget;
|
|
8195
8237
|
following.current = el.scrollWidth - el.scrollLeft - el.clientWidth < 24;
|
|
8196
8238
|
},
|
|
8197
|
-
children: /* @__PURE__ */ jsx(
|
|
8239
|
+
children: /* @__PURE__ */ jsx(ProgressChevronBar, { className: "w-max min-w-full py-0.5", children: items.map((item) => {
|
|
8198
8240
|
const chip = (props) => /* @__PURE__ */ jsx(
|
|
8199
8241
|
StepChip,
|
|
8200
8242
|
{
|
|
@@ -8217,18 +8259,18 @@ function TaskFlow({
|
|
|
8217
8259
|
)
|
|
8218
8260
|
}
|
|
8219
8261
|
);
|
|
8220
|
-
return /* @__PURE__ */
|
|
8221
|
-
|
|
8262
|
+
return /* @__PURE__ */ jsx(
|
|
8263
|
+
ProgressChevron,
|
|
8222
8264
|
{
|
|
8223
|
-
|
|
8265
|
+
kind: "adhoc",
|
|
8266
|
+
phase: "done",
|
|
8267
|
+
current: item.current,
|
|
8268
|
+
className: "shrink-0",
|
|
8224
8269
|
"data-testid": `thread-flow-${item.id}`,
|
|
8225
|
-
children: [
|
|
8226
|
-
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
/* @__PURE__ */ jsx(PopoverContent, { className: "max-h-72 overflow-y-auto text-sm whitespace-pre-wrap", children: item.detail })
|
|
8230
|
-
] }) : chip({ inert: true })
|
|
8231
|
-
]
|
|
8270
|
+
children: item.onSelect ? chip({ onClick: item.onSelect }) : item.detail ? /* @__PURE__ */ jsxs(Popover, { children: [
|
|
8271
|
+
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: chip({}) }),
|
|
8272
|
+
/* @__PURE__ */ jsx(PopoverContent, { className: "max-h-72 overflow-y-auto text-sm whitespace-pre-wrap", children: item.detail })
|
|
8273
|
+
] }) : chip({ inert: true })
|
|
8232
8274
|
},
|
|
8233
8275
|
item.id
|
|
8234
8276
|
);
|
|
@@ -8812,7 +8854,6 @@ function WorkflowThreadStrip({
|
|
|
8812
8854
|
const barL = { ...DEFAULT_STEP_BAR_LABELS, ...barLabels };
|
|
8813
8855
|
const grouped = groupThreadActivity(steps, items);
|
|
8814
8856
|
const strays = signals.filter((s) => !steps.some((step) => step.id === s.step));
|
|
8815
|
-
const link = /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "wf-link wf-kind-start max-w-6", "data-done": true });
|
|
8816
8857
|
const [selected, setSelected] = useState(null);
|
|
8817
8858
|
const [open, setOpen] = useState(null);
|
|
8818
8859
|
const phaseOf = (id) => stepPhase(steps, states, id);
|
|
@@ -8951,36 +8992,30 @@ function WorkflowThreadStrip({
|
|
|
8951
8992
|
)
|
|
8952
8993
|
] }) : chip;
|
|
8953
8994
|
};
|
|
8954
|
-
const leading = startedBy || grouped.before.length ? /* @__PURE__ */
|
|
8955
|
-
|
|
8995
|
+
const leading = startedBy || grouped.before.length ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: grouped.before.length ? /* @__PURE__ */ jsx(
|
|
8996
|
+
EntriesChip,
|
|
8997
|
+
{
|
|
8998
|
+
kind: "start",
|
|
8999
|
+
icon: /* @__PURE__ */ jsx(Zap, {}),
|
|
9000
|
+
label: l.started,
|
|
9001
|
+
items: grouped.before,
|
|
9002
|
+
heading: l.beforeSteps,
|
|
9003
|
+
extra: startedBy && /* @__PURE__ */ jsx(WorkflowThreadStartedBy, { origin: startedBy, labels }),
|
|
9004
|
+
testId: "workflow-thread-start"
|
|
9005
|
+
}
|
|
9006
|
+
) : startedBy && /* @__PURE__ */ jsx(WorkflowThreadStartedBy, { origin: startedBy, labels }) }) : null;
|
|
9007
|
+
const trailing = grouped.after.length || strays.length ? /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
9008
|
+
grouped.after.length > 0 && /* @__PURE__ */ jsx(
|
|
8956
9009
|
EntriesChip,
|
|
8957
9010
|
{
|
|
8958
|
-
kind: "
|
|
8959
|
-
icon: /* @__PURE__ */ jsx(
|
|
8960
|
-
label: l.
|
|
8961
|
-
items: grouped.
|
|
8962
|
-
heading: l.
|
|
8963
|
-
|
|
8964
|
-
testId: "workflow-thread-start"
|
|
9011
|
+
kind: "adhoc",
|
|
9012
|
+
icon: /* @__PURE__ */ jsx(MessagesSquare, {}),
|
|
9013
|
+
label: l.after,
|
|
9014
|
+
items: grouped.after,
|
|
9015
|
+
heading: l.afterSteps,
|
|
9016
|
+
testId: "workflow-thread-after"
|
|
8965
9017
|
}
|
|
8966
|
-
)
|
|
8967
|
-
link
|
|
8968
|
-
] }) : null;
|
|
8969
|
-
const trailing = grouped.after.length || strays.length ? /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
8970
|
-
grouped.after.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8971
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "wf-link max-w-6" }),
|
|
8972
|
-
/* @__PURE__ */ jsx(
|
|
8973
|
-
EntriesChip,
|
|
8974
|
-
{
|
|
8975
|
-
kind: "adhoc",
|
|
8976
|
-
icon: /* @__PURE__ */ jsx(MessagesSquare, {}),
|
|
8977
|
-
label: l.after,
|
|
8978
|
-
items: grouped.after,
|
|
8979
|
-
heading: l.afterSteps,
|
|
8980
|
-
testId: "workflow-thread-after"
|
|
8981
|
-
}
|
|
8982
|
-
)
|
|
8983
|
-
] }),
|
|
9018
|
+
),
|
|
8984
9019
|
strays.map((s) => /* @__PURE__ */ jsx(SignalPill, { signal: s, l }, `${s.step}-${s.signal}`))
|
|
8985
9020
|
] }) : null;
|
|
8986
9021
|
const at = steps.find((s) => s.id === (selected ?? activeStepId(stepLevels(steps), phaseOf)));
|
|
@@ -12632,6 +12667,6 @@ function AgentCreateView({
|
|
|
12632
12667
|
] });
|
|
12633
12668
|
}
|
|
12634
12669
|
|
|
12635
|
-
export { ANNOTATE, ANNOTATE_ID, AUTOMATION_EVENTS, ActionStepBody, AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentConnectInstructions, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentMainView, AgentTypeSelector, ApprovalEvidence, AssigneeLine, AssistantEntity, BUILTIN_SKILLS, CHRONOLOGY, CHRONOLOGY_ID, CUSTOM_TASK, CUSTOM_TASK_ID, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DASHBOARD_OPERATIONS, DASHBOARD_PINNED, DEEP_RESEARCH, DEEP_RESEARCH_ID, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CAPABILITIES, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TEMPLATES, DEFAULT_AGENT_TYPES, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_THREAD_LAUNCHER_LABELS, DEFAULT_THREAD_STATE_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_RUN_STATUS_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GENERATE_IMAGE, GENERATE_IMAGE_ID, GoalCriteria, IMAGE_ASPECT_AUTO, IMAGE_ASPECT_RATIOS, MAX_TASK_DEPTH, MODEL_NAME_ICONS, MODEL_TIER_ICON_MAP, MODEL_TIER_LABELS, NewThreadDialog, PillSelect, REMIND_TASK, REMIND_TASK_ID, RecurrenceBuilder, SKILL_FIELD_TYPE_LABELS, SKILL_MAIN_FILENAME, SKILL_SOURCE_LABELS, SKILL_TYPES, SKILL_TYPE_LABELS, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, STEP_ICON_MAP, SUMMARISE, SUMMARISE_ID, SendBackControl, SkillActionButton, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillLibraryDetail, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TAG_ICONS, TASK_COLUMN_ORDER, TIMELINE, TIMELINE_ID, TIMELINE_PROMPT, TOOL_ICON_MAP, TRANSLATE, TRANSLATE_ID, TRANSLATE_LANGUAGES, TRIGGER_LABELS, TaskActivityDialog, TaskActivityTimeline, TaskComposer, TaskEmptyState, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TasksToolbar, ThreadActivity, ThreadLauncher, ThreadNotifyDialog, ThreadStatusLine, TupleArrayField, UploadTaskItem, UploadTaskList, WEB_WORKFLOWS, WEEKDAYS, WORD_ASK, WORD_ASK_ID, WORD_CONTINUE, WORD_CONTINUE_ID, WORD_SUMMARISE, WORD_SUMMARISE_ID, WORD_SUPPORT, WORD_SUPPORT_ID, WORD_WORKFLOWS, WORKFLOW_REGISTRY, WorkflowRunStatus, WorkflowRunner, WorkflowStepAction, WorkflowStepBar, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsToolbar, activateOnKey, activeStepId, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildLibrarySkills, buildRRule, buildTaskRows, buildZipSkillImport, closeWorkflowLaunch, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveAnnotationName, deriveWorkflowName, descendantIds, describeRRule, describeTrigger, filterConversationRows, filterLibrarySkills, firstWords, formatElapsed2 as formatElapsed, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, getAgentStepIcon, getAgentStepPresentation, getCurrentAgentStepPresentation, getModelIcon, goalProgress, groupThreadActivity, hasTaskFields, humanizeSection, importMarkdownSkill, importSkillFile, importSkillFromUrl, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isIncompleteSignal, isMainSkillFile, isOutOfBounds, isPlainTodo, isSupersededStop, isValidAgentName, isoToLocalInput, latestMessageTime, layoutFromPlanSteps, linkedRunsFromActivity, localInputToIso, moveTargets, newThreadToRequest, nextCriterionId, notifiedLabel, openWorkflowLaunch, ownerExtId, parseRRule, parseSkillFrontmatter, prettifyKey, readSkillArchive, recordWorkflowUse, renderWorkflowIcon, resetWorkflowUsage, resolveScopeInputs, serializeSkill, skillSlug, sortByRecentUse, stepAccent, stepWindow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskActivityHeadline, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, toPlanAssignee, toPlanDocumentRef, toPlanSteps, unnotifiedMentions, useWorkflowLaunchRequest, useWorkflowUsage, useWorkflowView, workflowFromSkillMarkdown, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowWhen };
|
|
12636
|
-
//# sourceMappingURL=chunk-
|
|
12637
|
-
//# sourceMappingURL=chunk-
|
|
12670
|
+
export { ANNOTATE, ANNOTATE_ID, AUTOMATION_EVENTS, ActionStepBody, AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentConnectInstructions, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentMainView, AgentTypeSelector, ApprovalEvidence, AssigneeLine, AssistantEntity, BUILTIN_SKILLS, CHRONOLOGY, CHRONOLOGY_ID, CUSTOM_TASK, CUSTOM_TASK_ID, CapabilityGrid, CapabilityTile, ChevronShape, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DASHBOARD_OPERATIONS, DASHBOARD_PINNED, DEEP_RESEARCH, DEEP_RESEARCH_ID, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CAPABILITIES, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TEMPLATES, DEFAULT_AGENT_TYPES, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_THREAD_LAUNCHER_LABELS, DEFAULT_THREAD_STATE_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_RUN_STATUS_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GENERATE_IMAGE, GENERATE_IMAGE_ID, GoalCriteria, IMAGE_ASPECT_AUTO, IMAGE_ASPECT_RATIOS, MAX_TASK_DEPTH, MODEL_NAME_ICONS, MODEL_TIER_ICON_MAP, MODEL_TIER_LABELS, NewThreadDialog, PillSelect, ProgressChevron, ProgressChevronBar, REMIND_TASK, REMIND_TASK_ID, RecurrenceBuilder, SKILL_FIELD_TYPE_LABELS, SKILL_MAIN_FILENAME, SKILL_SOURCE_LABELS, SKILL_TYPES, SKILL_TYPE_LABELS, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, STEP_ICON_MAP, SUMMARISE, SUMMARISE_ID, SendBackControl, SkillActionButton, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillLibraryDetail, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TAG_ICONS, TASK_COLUMN_ORDER, TIMELINE, TIMELINE_ID, TIMELINE_PROMPT, TOOL_ICON_MAP, TRANSLATE, TRANSLATE_ID, TRANSLATE_LANGUAGES, TRIGGER_LABELS, TaskActivityDialog, TaskActivityTimeline, TaskComposer, TaskEmptyState, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TasksToolbar, ThreadActivity, ThreadLauncher, ThreadNotifyDialog, ThreadStatusLine, TupleArrayField, UploadTaskItem, UploadTaskList, WEB_WORKFLOWS, WEEKDAYS, WORD_ASK, WORD_ASK_ID, WORD_CONTINUE, WORD_CONTINUE_ID, WORD_SUMMARISE, WORD_SUMMARISE_ID, WORD_SUPPORT, WORD_SUPPORT_ID, WORD_WORKFLOWS, WORKFLOW_REGISTRY, WorkflowRunStatus, WorkflowRunner, WorkflowStepAction, WorkflowStepBar, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsToolbar, activateOnKey, activeStepId, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildLibrarySkills, buildRRule, buildTaskRows, buildZipSkillImport, closeWorkflowLaunch, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveAnnotationName, deriveWorkflowName, descendantIds, describeRRule, describeTrigger, filterConversationRows, filterLibrarySkills, firstWords, formatElapsed2 as formatElapsed, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, getAgentStepIcon, getAgentStepPresentation, getCurrentAgentStepPresentation, getModelIcon, goalProgress, groupThreadActivity, hasTaskFields, humanizeSection, importMarkdownSkill, importSkillFile, importSkillFromUrl, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isIncompleteSignal, isMainSkillFile, isOutOfBounds, isPlainTodo, isSupersededStop, isValidAgentName, isoToLocalInput, latestMessageTime, layoutFromPlanSteps, linkedRunsFromActivity, localInputToIso, moveTargets, newThreadToRequest, nextCriterionId, notifiedLabel, openWorkflowLaunch, ownerExtId, parseRRule, parseSkillFrontmatter, prettifyKey, readSkillArchive, recordWorkflowUse, renderWorkflowIcon, resetWorkflowUsage, resolveScopeInputs, serializeSkill, skillSlug, sortByRecentUse, stepAccent, stepWindow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskActivityHeadline, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, toPlanAssignee, toPlanDocumentRef, toPlanSteps, unnotifiedMentions, useWorkflowLaunchRequest, useWorkflowUsage, useWorkflowView, workflowFromSkillMarkdown, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowWhen };
|
|
12671
|
+
//# sourceMappingURL=chunk-EIJHL6ZX.js.map
|
|
12672
|
+
//# sourceMappingURL=chunk-EIJHL6ZX.js.map
|