@arbidocs/blocks 0.4.91 → 0.4.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/agents/index.cjs +280 -280
  2. package/dist/agents/index.js +4 -4
  3. package/dist/{chunk-ZPERNIMP.cjs → chunk-2WLXQGWC.cjs} +8 -3
  4. package/dist/chunk-2WLXQGWC.cjs.map +1 -0
  5. package/dist/{chunk-3US5OIDQ.cjs → chunk-3WW32OUU.cjs} +3 -3
  6. package/dist/{chunk-3US5OIDQ.cjs.map → chunk-3WW32OUU.cjs.map} +1 -1
  7. package/dist/{chunk-EHF63UYP.cjs → chunk-AMC5PMJ3.cjs} +5 -5
  8. package/dist/{chunk-EHF63UYP.cjs.map → chunk-AMC5PMJ3.cjs.map} +1 -1
  9. package/dist/{chunk-IC2VHFWR.js → chunk-JJA6GQKH.js} +8 -3
  10. package/dist/chunk-JJA6GQKH.js.map +1 -0
  11. package/dist/{chunk-DDYXFALG.cjs → chunk-MROSCSPW.cjs} +43 -43
  12. package/dist/{chunk-DDYXFALG.cjs.map → chunk-MROSCSPW.cjs.map} +1 -1
  13. package/dist/{chunk-PGDL26TQ.js → chunk-SF4BDUZS.js} +3 -3
  14. package/dist/{chunk-PGDL26TQ.js.map → chunk-SF4BDUZS.js.map} +1 -1
  15. package/dist/{chunk-5NQIBJPP.js → chunk-SJVUKXS6.js} +5 -5
  16. package/dist/{chunk-5NQIBJPP.js.map → chunk-SJVUKXS6.js.map} +1 -1
  17. package/dist/{chunk-5RQOVALO.js → chunk-UO74FLRK.js} +3 -3
  18. package/dist/{chunk-5RQOVALO.js.map → chunk-UO74FLRK.js.map} +1 -1
  19. package/dist/connect/index.cjs +27 -29
  20. package/dist/connect/index.cjs.map +1 -1
  21. package/dist/connect/index.js +7 -9
  22. package/dist/connect/index.js.map +1 -1
  23. package/dist/facts/index.cjs +2 -2
  24. package/dist/facts/index.js +1 -1
  25. package/dist/files/ViewToggle.d.ts +6 -1
  26. package/dist/files/index.cjs +4 -4
  27. package/dist/files/index.js +1 -1
  28. package/dist/index.cjs +315 -315
  29. package/dist/index.js +7 -7
  30. package/dist/workflow-canvas/index.cjs +47 -47
  31. package/dist/workflow-canvas/index.js +4 -4
  32. package/package.json +4 -4
  33. package/dist/chunk-IC2VHFWR.js.map +0 -1
  34. package/dist/chunk-ZPERNIMP.cjs.map +0 -1
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
1
  "use client";
2
2
  export { ApplyLabelButton, ApplyLabelDialog, DEFAULT_APPLY_LABEL_DIALOG_LABELS, DEFAULT_RELEVANCE_STEPS, DEFAULT_SEARCH_BAR_LABELS, DEFAULT_SEARCH_EMPTY_STATE_LABELS, DEFAULT_SEARCH_GROUP_HEADER_LABELS, DEFAULT_SEARCH_NO_RESULTS_LABELS, DEFAULT_SEARCH_PAGINATION_LABELS, DEFAULT_SEARCH_TOTALS_LABELS, DOCUMENT_SEARCH_NOUNS, Highlight, RelevanceThreshold, SearchBar, SearchControlsBar, SearchEmptyState, SearchErrorBanner, SearchGroupCard, SearchGroupHeader, SearchNoResults, SearchPageBody, SearchPageFrame, SearchPageHeader, SearchPagination, SearchPillToggle, SearchResultList, SearchResultsInner, SearchResultsMain, SearchToolbarRow, SearchTotalsHeadline, getPageNumbers, highlightTerms, searchNouns, splitByTerms, stripMarkdownLinks } from './chunk-2MJWWPHY.js';
3
- export { UsageMeter } from './chunk-D5T53XCL.js';
4
3
  export { ActionCluster, AskField, AskRow, AskTrigger, DEFAULT_ASK_FIELD_LABELS, DEFAULT_INSTALL_PROMPT_LABELS, DEFAULT_MOBILE_BARS_LABELS, DEFAULT_OFFLINE_PILL_LABELS, DEFAULT_REMOTE_CONTROL_PILL_LABELS, DEFAULT_SIDEBAR_LABELS, DEFAULT_TIP_CARD_LABELS, DEFAULT_WORKSPACE_KIND_LABELS, DEFAULT_WORKSPACE_SWITCHER_LABELS, INSTALL_PROMPT_DISMISSED_KEY, InfoBar, InstallPrompt, MobileAppBar, MobileTabBar, NotificationBell, OfflinePill, RemoteControlPill, STATUS_ROW_BASE_CLASS, STATUS_ROW_TONES, Sidebar, SidebarBadgeRow, SidebarRowAction, SidebarRowHoverContext, SplitLayout, StatusBadge, StatusRow, TipCard, UserMenu, WorkspaceIdentity, WorkspaceSwitcher, getInstallInstructions, initInstallPrompt, isIosDevice, promptAppInstall, resolveSidebarLayout, useInstallPrompt, useSidebarContext, useSidebarSettle, workspaceKindColor, workspaceKindMeta } from './chunk-R3PDNQYT.js';
4
+ export { UsageMeter } from './chunk-D5T53XCL.js';
5
5
  export { ArticleList, Chart, CheckList, CollectionDetail, CtaBand, DefinitionList, EditorialHeading, EditorialHero, EditorialProse, EditorialSection, Eyebrow, PanelGrid, ProofStrip, PullQuote, Reveal, TagList } from './chunk-LYUO3E6V.js';
6
6
  export { DataTable, DataTableBlock, MetricCard, PageHeader, StatGroup } from './chunk-ZCF2JJFA.js';
7
7
  export { Accordion, AvatarBlock, Banner, BlockImage, BlockLink, CTABanner, Columns, ContactForm, Container, FAQ, FONT_PAIRINGS, FeatureGrid, Footer, Gallery, Hero, ListBlock, LogoCloud, MediaText, Navbar, PricingTable, ProfileCard, RichTextBlock, SectionHeading, Spacer, Steps, THEME_STYLE_ID, Tabs, TeamGrid, Testimonial, TestimonialGrid, ThemeEditor, VideoEmbed, applyFontVars, applyStoredTheme, applyThemeVars, clearFontVars, clearThemeVars, createThemeStore, fontPackages, getFontPairing, matchFontPairing, tid, toEmbedUrl, toHslTriplet } from './chunk-DLBUFHLY.js';
8
8
  export { Timeline } from './chunk-OVEQERPO.js';
9
9
  export { MemberAvatarStack } from './chunk-XNOASBGW.js';
10
- import { DEFAULT_TAG_TABLE_LABELS, rowLinks, TagTableCell } from './chunk-5RQOVALO.js';
11
- export { DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAULT_TAG_TABLE_LABELS, DEFAULT_THREAD_FOLLOW_LABELS, DEFAULT_WORKSPACE_ACTIVITY_LABELS, DEFAULT_WORKSPACE_NOTIFICATION_MENU_LABELS, TAG_TABLE_DOCX_LANDSCAPE_AFTER, TagColumnsEditor, TagTable, TagTableCell, ThreadFollowButton, ThreadFollowMenuItem, WorkspaceActivityList, WorkspaceNotificationMenu, cellText, cellValue, fieldWrites, isGap, parseCell, rowLinks, tagTableDocumentXml, tagTableDocx, tagTableMarkdown, workspaceActivityHeadline, workspaceActivityTarget } from './chunk-5RQOVALO.js';
10
+ import { DEFAULT_TAG_TABLE_LABELS, rowLinks, TagTableCell } from './chunk-UO74FLRK.js';
11
+ export { DEFAULT_TAG_COLUMNS_EDITOR_LABELS, DEFAULT_TAG_TABLE_DOCX_LABELS, DEFAULT_TAG_TABLE_LABELS, DEFAULT_THREAD_FOLLOW_LABELS, DEFAULT_WORKSPACE_ACTIVITY_LABELS, DEFAULT_WORKSPACE_NOTIFICATION_MENU_LABELS, TAG_TABLE_DOCX_LANDSCAPE_AFTER, TagColumnsEditor, TagTable, TagTableCell, ThreadFollowButton, ThreadFollowMenuItem, WorkspaceActivityList, WorkspaceNotificationMenu, cellText, cellValue, fieldWrites, isGap, parseCell, rowLinks, tagTableDocumentXml, tagTableDocx, tagTableMarkdown, workspaceActivityHeadline, workspaceActivityTarget } from './chunk-UO74FLRK.js';
12
12
  export { DEFAULT_SEARCH_HIT_LABELS, SearchHit } from './chunk-A2YAC22G.js';
13
13
  export { TIMELINE_ZOOM, TimelineCalendar, TimelineGantt, TimelineZoomControl, dayKey, formatSpan, monthLabel, parseIso, utcDay } from './chunk-4EZVCGRL.js';
14
14
  export { Callout } from './chunk-UJE32SST.js';
15
- export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from './chunk-5NQIBJPP.js';
15
+ export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen } from './chunk-SJVUKXS6.js';
16
16
  import './chunk-4XJZ6AAY.js';
17
17
  export { EmptyState } from './chunk-P6GHJSLR.js';
18
- export { ActionStepBody, ApprovalEvidence, AssigneeLine, DEFAULT_ASSIGNEE_WORDING, DEFAULT_SCHEMA_FORM_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_TASK_ACTIVITY_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, EMPTY_WORKFLOW_SCOPE, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, SchemaForm, SendBackControl, TaskActivityTimeline, WorkflowRunner, activeStepId, assigneeName, buildLaunch, canAssign, composeStepPrompt, composeWorkflowPrompt, defaultInputs, dependsOn, fieldToFrontmatter, fillRunText, fillStepInputs, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, initialRunInputs, inputsFromContext, isEmptyWorkflowScope, isIncompleteSignal, isPersonAction, isPersonStep, isRunFinished, isSteppedWorkflow, isWorkflowScope, layoutFromPlanSteps, nextAction, orderSteps, promptFieldName, reviewInstructions, runFields, runFieldsOf, runThreadTitle, sendBackTargets, skillToWorkflow, splitDocRef, stepConfigProblems, stepDependencies, stepFields, stepLevels, stepPhase, stepStatesFromActivity, stepWindow, taskActivityHeadline, toPlanAssignee, toPlanDocumentRef, toPlanSteps, upstreamSteps, useWorkflowView, validateInputs, validateStep, validateWorkflowGraph, workflowAccepts, workflowFromFrontmatter, workflowSteps, workflowsAccepting, workflowsForHost } from './chunk-PGDL26TQ.js';
18
+ export { ActionStepBody, ApprovalEvidence, AssigneeLine, DEFAULT_ASSIGNEE_WORDING, DEFAULT_SCHEMA_FORM_LABELS, DEFAULT_STEP_BAR_LABELS, DEFAULT_TASK_ACTIVITY_LABELS, DEFAULT_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_STEP_PARTS_LABELS, EMPTY_WORKFLOW_SCOPE, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, SchemaForm, SendBackControl, TaskActivityTimeline, WorkflowRunner, activeStepId, assigneeName, buildLaunch, canAssign, composeStepPrompt, composeWorkflowPrompt, defaultInputs, dependsOn, fieldToFrontmatter, fillRunText, fillStepInputs, fromPlanAssignee, fromPlanDocumentRef, fromPlanSteps, initialRunInputs, inputsFromContext, isEmptyWorkflowScope, isIncompleteSignal, isPersonAction, isPersonStep, isRunFinished, isSteppedWorkflow, isWorkflowScope, layoutFromPlanSteps, nextAction, orderSteps, promptFieldName, reviewInstructions, runFields, runFieldsOf, runThreadTitle, sendBackTargets, skillToWorkflow, splitDocRef, stepConfigProblems, stepDependencies, stepFields, stepLevels, stepPhase, stepStatesFromActivity, stepWindow, taskActivityHeadline, toPlanAssignee, toPlanDocumentRef, toPlanSteps, upstreamSteps, useWorkflowView, validateInputs, validateStep, validateWorkflowGraph, workflowAccepts, workflowFromFrontmatter, workflowSteps, workflowsAccepting, workflowsForHost } from './chunk-SF4BDUZS.js';
19
19
  import './chunk-6S5FLMWG.js';
20
20
  export { DEFAULT_TAB_HEADER_LABELS, TabHeader } from './chunk-4WWM3GQ5.js';
21
+ import './chunk-DDF5GPIJ.js';
22
+ import './chunk-XD2M6LIG.js';
21
23
  import './chunk-RFXJYIDV.js';
22
24
  export { Dot, ToneBadge } from './chunk-5LXQPP2K.js';
23
25
  import './chunk-EVUEIBNU.js';
24
26
  export { TONES, isTone } from './chunk-AUS3KBHJ.js';
25
27
  import './chunk-NUNKSZKU.js';
26
28
  export { DEFAULT_FILTER_FIELDS, DEFAULT_FILTER_INPUT_LABELS, FilterInput } from './chunk-YU2KUMGE.js';
27
- import './chunk-DDF5GPIJ.js';
28
- import './chunk-XD2M6LIG.js';
29
29
  export { ActionLink } from './chunk-S7PSMMRG.js';
30
30
  export { AccountRecoveryDialog, AuthAlert, AuthConsent, AuthDivider, AuthField, AuthFieldBadge, AuthFooterLinks, AuthHeading, AuthHero, AuthInput, AuthLayout, AuthLink, AuthNote, AuthOfflineBadge, AuthSubmitButton, AuthTabs, DEFAULT_ACCOUNT_RECOVERY_DIALOG_LABELS, DEFAULT_AUTH_CONSENT_LABELS, DEFAULT_AUTH_FOOTER_LINKS_LABELS, DEFAULT_AUTH_OFFLINE_BADGE_LABELS, DEFAULT_RECOVERY_KEY_DIALOG_LABELS, DEFAULT_REVEALABLE_PASSWORD_INPUT_LABELS, DEFAULT_SSO_LOGIN_BUTTON_LABELS, RecoveryKeyDialog, RevealablePasswordInput, SsoLoginButton } from './chunk-SFXVNFES.js';
31
31
  export { DEFAULT_PASSWORD_STRENGTH_INPUT_LABELS, PasswordStrengthInput } from './chunk-VILAPTCB.js';
@@ -2,20 +2,20 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
5
- var chunkDDYXFALG_cjs = require('../chunk-DDYXFALG.cjs');
5
+ var chunkMROSCSPW_cjs = require('../chunk-MROSCSPW.cjs');
6
6
  require('../chunk-S5HZBXZA.cjs');
7
7
  require('../chunk-ZW6FPIFC.cjs');
8
- var chunk3US5OIDQ_cjs = require('../chunk-3US5OIDQ.cjs');
8
+ var chunk3WW32OUU_cjs = require('../chunk-3WW32OUU.cjs');
9
9
  require('../chunk-N26CXGXC.cjs');
10
10
  require('../chunk-7RGLTF76.cjs');
11
+ require('../chunk-Z5VUZ6YD.cjs');
12
+ require('../chunk-7D737FLE.cjs');
11
13
  require('../chunk-3AFWGEDJ.cjs');
12
14
  require('../chunk-DVUZTGVL.cjs');
13
15
  require('../chunk-DETZZBG2.cjs');
14
16
  var chunk32HW2Q33_cjs = require('../chunk-32HW2Q33.cjs');
15
17
  require('../chunk-V4ISCZJ7.cjs');
16
18
  require('../chunk-2EI7NCUA.cjs');
17
- require('../chunk-Z5VUZ6YD.cjs');
18
- require('../chunk-7D737FLE.cjs');
19
19
  require('../chunk-OB5F4577.cjs');
20
20
  require('../chunk-B4SRYJLM.cjs');
21
21
  require('../chunk-7UTB4PHM.cjs');
@@ -60,11 +60,11 @@ function withSteps(workflow, steps, layout) {
60
60
  const run = workflow.run.kind === "steps" ? workflow.run : { kind: "steps", steps: [] };
61
61
  return {
62
62
  ...workflow,
63
- run: { ...run, steps: chunk3US5OIDQ_cjs.orderSteps(steps), layout: layout ?? run.layout }
63
+ run: { ...run, steps: chunk3WW32OUU_cjs.orderSteps(steps), layout: layout ?? run.layout }
64
64
  };
65
65
  }
66
66
  var layoutOf = (workflow) => workflow.run.kind === "steps" && workflow.run.layout || {};
67
- var explicit = (steps) => steps.map((s) => ({ ...s, after: chunk3US5OIDQ_cjs.stepDependencies(steps, s.id) }));
67
+ var explicit = (steps) => steps.map((s) => ({ ...s, after: chunk3WW32OUU_cjs.stepDependencies(steps, s.id) }));
68
68
  function stepIdFor(steps, title) {
69
69
  const base = title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/^[^a-z]+/, "") || "step";
70
70
  const taken = new Set(steps.map((s) => s.id));
@@ -111,7 +111,7 @@ function blankStep(kind, id, title) {
111
111
  }
112
112
  }
113
113
  function addStep(workflow, kind, options = {}) {
114
- const steps = explicit(chunk3US5OIDQ_cjs.workflowSteps(workflow));
114
+ const steps = explicit(chunk3WW32OUU_cjs.workflowSteps(workflow));
115
115
  const title = options.title ?? DEFAULT_TITLES[kind];
116
116
  const id = stepIdFor(steps, title);
117
117
  const step = { ...blankStep(kind, id, title), after: options.after ? [options.after] : [] };
@@ -120,7 +120,7 @@ function addStep(workflow, kind, options = {}) {
120
120
  return { workflow: withSteps(workflow, [...steps, step], layout), id };
121
121
  }
122
122
  function removeStep(workflow, id) {
123
- const steps = explicit(chunk3US5OIDQ_cjs.workflowSteps(workflow));
123
+ const steps = explicit(chunk3WW32OUU_cjs.workflowSteps(workflow));
124
124
  const removed = steps.find((s) => s.id === id);
125
125
  if (!removed) return workflow;
126
126
  const bridged = steps.filter((s) => s.id !== id).map(
@@ -133,8 +133,8 @@ function removeStep(workflow, id) {
133
133
  return withSteps(workflow, bridged, layout);
134
134
  }
135
135
  function connectSteps(workflow, from, to) {
136
- const steps = explicit(chunk3US5OIDQ_cjs.workflowSteps(workflow));
137
- if (from === to || !steps.some((s) => s.id === from) || chunk3US5OIDQ_cjs.dependsOn(steps, from, to)) {
136
+ const steps = explicit(chunk3WW32OUU_cjs.workflowSteps(workflow));
137
+ if (from === to || !steps.some((s) => s.id === from) || chunk3WW32OUU_cjs.dependsOn(steps, from, to)) {
138
138
  return workflow;
139
139
  }
140
140
  return withSteps(
@@ -144,16 +144,16 @@ function connectSteps(workflow, from, to) {
144
144
  )
145
145
  );
146
146
  }
147
- var wouldCycle = (workflow, from, to) => from === to || chunk3US5OIDQ_cjs.dependsOn(chunk3US5OIDQ_cjs.workflowSteps(workflow), from, to);
147
+ var wouldCycle = (workflow, from, to) => from === to || chunk3WW32OUU_cjs.dependsOn(chunk3WW32OUU_cjs.workflowSteps(workflow), from, to);
148
148
  function disconnectSteps(workflow, from, to) {
149
- const steps = explicit(chunk3US5OIDQ_cjs.workflowSteps(workflow));
149
+ const steps = explicit(chunk3WW32OUU_cjs.workflowSteps(workflow));
150
150
  return withSteps(
151
151
  workflow,
152
152
  steps.map((s) => s.id === to ? { ...s, after: (s.after ?? []).filter((d) => d !== from) } : s)
153
153
  );
154
154
  }
155
155
  function updateStep(workflow, id, patch) {
156
- const steps = explicit(chunk3US5OIDQ_cjs.workflowSteps(workflow));
156
+ const steps = explicit(chunk3WW32OUU_cjs.workflowSteps(workflow));
157
157
  return withSteps(
158
158
  workflow,
159
159
  steps.map(
@@ -167,7 +167,7 @@ var renameIn = (text, from, to) => text.replace(
167
167
  );
168
168
  function renameInput(workflow, from, to) {
169
169
  if (from === to) return workflow;
170
- const steps = chunk3US5OIDQ_cjs.workflowSteps(workflow).map((s) => {
170
+ const steps = chunk3WW32OUU_cjs.workflowSteps(workflow).map((s) => {
171
171
  if (s.kind === "agent")
172
172
  return {
173
173
  ...s,
@@ -216,13 +216,13 @@ function renameInput(workflow, from, to) {
216
216
  var renamePerson = (a, from, to) => "input" in a && a.input === from ? { input: to } : a;
217
217
  var renameRef = (r, from, to) => "input" in r && r.input === from ? { input: to } : r;
218
218
  function moveStep(workflow, id, position) {
219
- return withSteps(workflow, chunk3US5OIDQ_cjs.workflowSteps(workflow), { ...layoutOf(workflow), [id]: position });
219
+ return withSteps(workflow, chunk3WW32OUU_cjs.workflowSteps(workflow), { ...layoutOf(workflow), [id]: position });
220
220
  }
221
221
  var COLUMN = 300;
222
222
  var ROW = 140;
223
223
  function autoLayout(steps) {
224
224
  const layout = {};
225
- chunk3US5OIDQ_cjs.stepLevels(steps).forEach(
225
+ chunk3WW32OUU_cjs.stepLevels(steps).forEach(
226
226
  (level, x) => level.forEach((s, y) => {
227
227
  layout[s.id] = { x: x * COLUMN, y: (y - (level.length - 1) / 2) * ROW };
228
228
  })
@@ -230,7 +230,7 @@ function autoLayout(steps) {
230
230
  return layout;
231
231
  }
232
232
  function layoutWithDefaults(workflow) {
233
- const auto = autoLayout(chunk3US5OIDQ_cjs.workflowSteps(workflow));
233
+ const auto = autoLayout(chunk3WW32OUU_cjs.workflowSteps(workflow));
234
234
  return { ...auto, ...layoutOf(workflow) };
235
235
  }
236
236
  var DEFAULT_SIGNALS_EDITOR_LABELS = {
@@ -327,9 +327,9 @@ function SignalsEditor({
327
327
  {
328
328
  className: ui.cn(
329
329
  "space-y-1.5 rounded-md border p-2",
330
- chunk3US5OIDQ_cjs.isIncompleteSignal(signal) ? "border-destructive/50" : "border-border"
330
+ chunk3WW32OUU_cjs.isIncompleteSignal(signal) ? "border-destructive/50" : "border-border"
331
331
  ),
332
- "data-incomplete": chunk3US5OIDQ_cjs.isIncompleteSignal(signal) || void 0,
332
+ "data-incomplete": chunk3WW32OUU_cjs.isIncompleteSignal(signal) || void 0,
333
333
  "data-testid": `${testId}-${i}`,
334
334
  children: [
335
335
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -1158,7 +1158,7 @@ function StepInspector({
1158
1158
  }) {
1159
1159
  const l = { ...DEFAULT_STEP_INSPECTOR_LABELS, ...labels };
1160
1160
  const ol = { ...DEFAULT_FIELD_OPTIONS_EDITOR_LABELS, ...optionLabels };
1161
- const steps = chunk3US5OIDQ_cjs.workflowSteps(workflow);
1161
+ const steps = chunk3WW32OUU_cjs.workflowSteps(workflow);
1162
1162
  const step = steps.find((s) => s.id === stepId);
1163
1163
  const run = workflow.run.kind === "steps" ? workflow.run : void 0;
1164
1164
  if (!step || !run) {
@@ -1185,8 +1185,8 @@ function StepInspector({
1185
1185
  const patch = (p) => onChange(updateStep(workflow, step.id, p));
1186
1186
  const al = { ...DEFAULT_STEP_ACTION_SETTINGS_LABELS, ...actionLabels };
1187
1187
  const ctx = {
1188
- earlier: chunk3US5OIDQ_cjs.upstreamSteps(steps, step.id),
1189
- fields: chunk3US5OIDQ_cjs.runFields(workflow),
1188
+ earlier: chunk3WW32OUU_cjs.upstreamSteps(steps, step.id),
1189
+ fields: chunk3WW32OUU_cjs.runFields(workflow),
1190
1190
  people,
1191
1191
  tags,
1192
1192
  documents
@@ -1207,7 +1207,7 @@ function StepInspector({
1207
1207
  )
1208
1208
  );
1209
1209
  };
1210
- const deps = chunk3US5OIDQ_cjs.stepDependencies(steps, step.id);
1210
+ const deps = chunk3WW32OUU_cjs.stepDependencies(steps, step.id);
1211
1211
  const titleOf = (id) => steps.find((s) => s.id === id)?.title ?? id;
1212
1212
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": `${testId}-step`, children: [
1213
1213
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
@@ -1288,7 +1288,7 @@ function StepInspector({
1288
1288
  {
1289
1289
  step,
1290
1290
  workflows,
1291
- fields: chunk3US5OIDQ_cjs.runFields(workflow).map((f) => f.name),
1291
+ fields: chunk3WW32OUU_cjs.runFields(workflow).map((f) => f.name),
1292
1292
  patch,
1293
1293
  l,
1294
1294
  testId
@@ -1349,7 +1349,7 @@ function StepInspector({
1349
1349
  testId: `${testId}-review-grid`
1350
1350
  }
1351
1351
  ),
1352
- chunk3US5OIDQ_cjs.canAssign(step) && /* @__PURE__ */ jsxRuntime.jsx(AssigneeSettings, { step, patch, ctx, l: al, testId }),
1352
+ chunk3WW32OUU_cjs.canAssign(step) && /* @__PURE__ */ jsxRuntime.jsx(AssigneeSettings, { step, patch, ctx, l: al, testId }),
1353
1353
  /* @__PURE__ */ jsxRuntime.jsx(
1354
1354
  SignalsEditor,
1355
1355
  {
@@ -1615,7 +1615,7 @@ function triggerFields(trigger, clearOthers) {
1615
1615
  return {
1616
1616
  timezone: trigger.timezone,
1617
1617
  rrule: trigger.start === "repeat" ? trigger.rrule.trim() : none,
1618
- run_at: trigger.start === "once" ? chunkDDYXFALG_cjs.localInputToIso(trigger.runAt) : none,
1618
+ run_at: trigger.start === "once" ? chunkMROSCSPW_cjs.localInputToIso(trigger.runAt) : none,
1619
1619
  event_kind: trigger.start === "event" ? trigger.eventKind.trim() : none,
1620
1620
  // A step signal is `workflow_signal` narrowed to one signal name.
1621
1621
  event_filter: filter ?? none,
@@ -1631,7 +1631,7 @@ function plan(value, options) {
1631
1631
  criteria: [],
1632
1632
  max_passes: 3,
1633
1633
  documents: [],
1634
- steps: chunk3US5OIDQ_cjs.toPlanSteps(value.workflow, options)
1634
+ steps: chunk3WW32OUU_cjs.toPlanSteps(value.workflow, options)
1635
1635
  };
1636
1636
  }
1637
1637
  function builderToWorkflowRequest(value, workspaceId, options = {}) {
@@ -1666,7 +1666,7 @@ function builderToWorkflowUpdate(value, options = {}) {
1666
1666
  }
1667
1667
  function workflowRecordToBuilder(record) {
1668
1668
  const planned = record.plan?.steps ?? [];
1669
- const steps = planned.length ? chunk3US5OIDQ_cjs.fromPlanSteps(planned) : record.prompt || record.skill_ref ? [
1669
+ const steps = planned.length ? chunk3WW32OUU_cjs.fromPlanSteps(planned) : record.prompt || record.skill_ref ? [
1670
1670
  {
1671
1671
  id: "work",
1672
1672
  kind: "agent",
@@ -1674,7 +1674,7 @@ function workflowRecordToBuilder(record) {
1674
1674
  ...record.skill_ref ? { workflow: record.skill_ref } : { run: { kind: "prompt", promptTemplate: record.prompt } }
1675
1675
  }
1676
1676
  ] : [];
1677
- const when = chunkDDYXFALG_cjs.workflowWhen(record);
1677
+ const when = chunkMROSCSPW_cjs.workflowWhen(record);
1678
1678
  return {
1679
1679
  workflow: {
1680
1680
  id: record.external_id,
@@ -1683,12 +1683,12 @@ function workflowRecordToBuilder(record) {
1683
1683
  inputs: [],
1684
1684
  landing: "chat",
1685
1685
  schedulable: false,
1686
- run: { kind: "steps", steps, layout: chunk3US5OIDQ_cjs.layoutFromPlanSteps(planned ?? []) }
1686
+ run: { kind: "steps", steps, layout: chunk3WW32OUU_cjs.layoutFromPlanSteps(planned ?? []) }
1687
1687
  },
1688
1688
  trigger: {
1689
1689
  ...DEFAULT_WORKFLOW_TRIGGER,
1690
1690
  start: when === "now" ? "manual" : when,
1691
- runAt: chunkDDYXFALG_cjs.isoToLocalInput(record.run_at),
1691
+ runAt: chunkMROSCSPW_cjs.isoToLocalInput(record.run_at),
1692
1692
  rrule: record.rrule ?? "",
1693
1693
  timezone: record.timezone || DEFAULT_WORKFLOW_TRIGGER.timezone,
1694
1694
  eventKind: record.event_kind ?? "",
@@ -1744,7 +1744,7 @@ function triggerSummary(trigger, options = {}) {
1744
1744
  case "once":
1745
1745
  return trigger.runAt ? new Date(trigger.runAt).toLocaleString() : l.starts.once;
1746
1746
  case "repeat":
1747
- return trigger.rrule ? chunkDDYXFALG_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
1747
+ return trigger.rrule ? chunkMROSCSPW_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
1748
1748
  case "event":
1749
1749
  if (isSignalTrigger(trigger))
1750
1750
  return trigger.signal ? l.signalSummary.replace("{signal}", trigger.signal) : l.stepSignals;
@@ -1803,7 +1803,7 @@ function TriggerInspector({
1803
1803
  }
1804
1804
  )
1805
1805
  ] }),
1806
- trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkDDYXFALG_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
1806
+ trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkMROSCSPW_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
1807
1807
  trigger.start === "event" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
1808
1808
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.event }),
1809
1809
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1855,7 +1855,7 @@ function TriggerInspector({
1855
1855
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
1856
1856
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.agent }),
1857
1857
  /* @__PURE__ */ jsxRuntime.jsx(
1858
- chunkDDYXFALG_cjs.AgentSelect,
1858
+ chunkMROSCSPW_cjs.AgentSelect,
1859
1859
  {
1860
1860
  agents,
1861
1861
  value: trigger.agentId,
@@ -2165,12 +2165,12 @@ function WorkflowCanvas({
2165
2165
  testId = "workflow-canvas"
2166
2166
  }) {
2167
2167
  const l = react.useMemo(() => ({ ...DEFAULT_WORKFLOW_CANVAS_LABELS, ...labels }), [labels]);
2168
- const steps = chunk3US5OIDQ_cjs.workflowSteps(workflow);
2168
+ const steps = chunk3WW32OUU_cjs.workflowSteps(workflow);
2169
2169
  const editable = !!onChange;
2170
2170
  const built = react.useMemo(() => {
2171
2171
  const layout = layoutWithDefaults(workflow);
2172
- const all = chunk3US5OIDQ_cjs.workflowSteps(workflow);
2173
- const roots = all.filter((s) => chunk3US5OIDQ_cjs.stepDependencies(all, s.id).length === 0);
2172
+ const all = chunk3WW32OUU_cjs.workflowSteps(workflow);
2173
+ const roots = all.filter((s) => chunk3WW32OUU_cjs.stepDependencies(all, s.id).length === 0);
2174
2174
  const triggerNode = trigger ? [
2175
2175
  {
2176
2176
  id: TRIGGER_NODE,
@@ -2219,7 +2219,7 @@ function WorkflowCanvas({
2219
2219
  react.useEffect(() => setNodes(built), [built]);
2220
2220
  const edges = react.useMemo(
2221
2221
  () => steps.flatMap((s) => {
2222
- const deps = chunk3US5OIDQ_cjs.stepDependencies(steps, s.id);
2222
+ const deps = chunk3WW32OUU_cjs.stepDependencies(steps, s.id);
2223
2223
  const from = deps.length ? deps : trigger ? [TRIGGER_NODE] : [];
2224
2224
  return from.map((d) => ({
2225
2225
  id: `${d}->${s.id}`,
@@ -2470,12 +2470,12 @@ function WorkflowBuilder({
2470
2470
  const [mode, setMode] = react.useState("design");
2471
2471
  const [adding, setAdding] = react.useState(false);
2472
2472
  const { workflow, trigger } = value;
2473
- const steps = chunk3US5OIDQ_cjs.workflowSteps(workflow);
2474
- const problems = chunk3US5OIDQ_cjs.validateWorkflowGraph(steps);
2475
- const missing = chunk3US5OIDQ_cjs.stepConfigProblems(steps);
2473
+ const steps = chunk3WW32OUU_cjs.workflowSteps(workflow);
2474
+ const problems = chunk3WW32OUU_cjs.validateWorkflowGraph(steps);
2475
+ const missing = chunk3WW32OUU_cjs.stepConfigProblems(steps);
2476
2476
  const nameOf = (id) => people.find((p) => p.value === id)?.label;
2477
- const fields = chunk3US5OIDQ_cjs.runFields(workflow);
2478
- const assigneeOf = (step) => chunk3US5OIDQ_cjs.canAssign(step) ? chunk3US5OIDQ_cjs.assigneeName(step.assignee, { nameOf, fields }) : void 0;
2477
+ const fields = chunk3WW32OUU_cjs.runFields(workflow);
2478
+ const assigneeOf = (step) => chunk3WW32OUU_cjs.canAssign(step) ? chunk3WW32OUU_cjs.assigneeName(step.assignee, { nameOf, fields }) : void 0;
2479
2479
  const titles = react.useMemo(() => new Map(workflows.map((w) => [w.id, w.title])), [workflows]);
2480
2480
  const setWorkflow = (next) => onChange({ ...value, workflow: next });
2481
2481
  const addAfter = (from, kind) => {
@@ -2706,13 +2706,13 @@ function WorkflowPreview({
2706
2706
  renderIcon,
2707
2707
  testId
2708
2708
  }) {
2709
- const run = chunkDDYXFALG_cjs.useWorkflowPreview(workflow, {
2709
+ const run = chunkMROSCSPW_cjs.useWorkflowPreview(workflow, {
2710
2710
  resolveWorkflow: (id) => workflows.find((w) => w.id === id),
2711
2711
  compose,
2712
2712
  answer
2713
2713
  });
2714
2714
  return /* @__PURE__ */ jsxRuntime.jsx(
2715
- chunk3US5OIDQ_cjs.WorkflowRunner,
2715
+ chunk3WW32OUU_cjs.WorkflowRunner,
2716
2716
  {
2717
2717
  workflow,
2718
2718
  run,
@@ -2800,7 +2800,7 @@ function ConnectedWorkflowBuilder({
2800
2800
  () => [
2801
2801
  ...hostWorkflows,
2802
2802
  ...(skills.data ?? []).map(
2803
- (s) => chunk3US5OIDQ_cjs.skillToWorkflow({
2803
+ (s) => chunk3WW32OUU_cjs.skillToWorkflow({
2804
2804
  name: s.name,
2805
2805
  slug: s.slug,
2806
2806
  description: s.description,
@@ -2816,7 +2816,7 @@ function ConnectedWorkflowBuilder({
2816
2816
  }));
2817
2817
  const tasks = (conversations.data ?? []).filter((c) => c.status && c.status !== "done").map((c) => ({ value: c.external_id, label: c.title || c.external_id }));
2818
2818
  const options = { resolveWorkflow: (wid) => workflows.find((w) => w.id === wid), compose };
2819
- const problem = triggerProblem(value.trigger) ?? (chunk3US5OIDQ_cjs.validateWorkflowGraph(chunk3US5OIDQ_cjs.workflowSteps(value.workflow)).length || chunk3US5OIDQ_cjs.stepConfigProblems(chunk3US5OIDQ_cjs.workflowSteps(value.workflow)).length ? "graph" : null);
2819
+ const problem = triggerProblem(value.trigger) ?? (chunk3WW32OUU_cjs.validateWorkflowGraph(chunk3WW32OUU_cjs.workflowSteps(value.workflow)).length || chunk3WW32OUU_cjs.stepConfigProblems(chunk3WW32OUU_cjs.workflowSteps(value.workflow)).length ? "graph" : null);
2820
2820
  const busy = !!pending || create.isPending || update.isPending || run.isPending;
2821
2821
  const save = async () => {
2822
2822
  if (!workspaceId) return void 0;
@@ -1,19 +1,19 @@
1
1
  "use client";
2
2
  import { useConnection } from '../chunk-OYMWV45N.js';
3
- import { workflowWhen, isoToLocalInput, describeRRule, RecurrenceBuilder, AgentSelect, useWorkflowPreview, localInputToIso } from '../chunk-5NQIBJPP.js';
3
+ import { workflowWhen, isoToLocalInput, describeRRule, RecurrenceBuilder, AgentSelect, useWorkflowPreview, localInputToIso } from '../chunk-SJVUKXS6.js';
4
4
  import '../chunk-4XJZ6AAY.js';
5
5
  import '../chunk-P6GHJSLR.js';
6
- import { workflowSteps, dependsOn, stepLevels, isIncompleteSignal, runFields, upstreamSteps, stepDependencies, canAssign, fromPlanSteps, layoutFromPlanSteps, validateWorkflowGraph, stepConfigProblems, WorkflowRunner, skillToWorkflow, assigneeName, orderSteps, toPlanSteps } from '../chunk-PGDL26TQ.js';
6
+ import { workflowSteps, dependsOn, stepLevels, isIncompleteSignal, runFields, upstreamSteps, stepDependencies, canAssign, fromPlanSteps, layoutFromPlanSteps, validateWorkflowGraph, stepConfigProblems, WorkflowRunner, skillToWorkflow, assigneeName, orderSteps, toPlanSteps } from '../chunk-SF4BDUZS.js';
7
7
  import '../chunk-6S5FLMWG.js';
8
8
  import '../chunk-4WWM3GQ5.js';
9
+ import '../chunk-DDF5GPIJ.js';
10
+ import '../chunk-XD2M6LIG.js';
9
11
  import '../chunk-RFXJYIDV.js';
10
12
  import '../chunk-5LXQPP2K.js';
11
13
  import '../chunk-EVUEIBNU.js';
12
14
  import { TONE_DOT, TONES, isTone } from '../chunk-AUS3KBHJ.js';
13
15
  import '../chunk-NUNKSZKU.js';
14
16
  import '../chunk-YU2KUMGE.js';
15
- import '../chunk-DDF5GPIJ.js';
16
- import '../chunk-XD2M6LIG.js';
17
17
  import '../chunk-S7PSMMRG.js';
18
18
  import '../chunk-HOXKR26S.js';
19
19
  import '../chunk-AA3PT6KR.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbidocs/blocks",
3
- "version": "0.4.91",
3
+ "version": "0.4.93",
4
4
  "description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -266,8 +266,8 @@
266
266
  "example:test:e2e": "playwright test -c examples/custom-ui/playwright.config.ts"
267
267
  },
268
268
  "dependencies": {
269
- "@arbidocs/client": "0.4.91",
270
- "@arbidocs/coedit": "0.4.91",
269
+ "@arbidocs/client": "0.4.93",
270
+ "@arbidocs/coedit": "0.4.93",
271
271
  "@dnd-kit/core": "^6.3.1",
272
272
  "@dnd-kit/sortable": "^10.0.0",
273
273
  "@dnd-kit/utilities": "^3.2.2",
@@ -293,7 +293,7 @@
293
293
  "zustand": "^5.0.14"
294
294
  },
295
295
  "peerDependencies": {
296
- "@arbidocs/react": "0.4.91",
296
+ "@arbidocs/react": "0.4.93",
297
297
  "@docx-editor.dev/core": "2.28.0",
298
298
  "@docx-editor.dev/react": "2.28.0",
299
299
  "@lexical/html": "0.35.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/files/ViewToggle.tsx"],"names":[],"mappings":"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","file":"chunk-IC2VHFWR.js","sourcesContent":["import { useRef, useState, type ReactNode } from 'react'\nimport { BookOpen, FileImage, Search, Table2 } from 'lucide-react'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n ToggleGroup,\n ToggleGroupItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\n/** Names of the four document view modes. Pass a partial `labels` to translate or reword. */\nexport interface DocumentViewToggleLabels {\n gallery: string\n table: string\n review: string\n smartSearch: string\n}\n\nexport const DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS: DocumentViewToggleLabels = {\n gallery: 'Gallery',\n table: 'Table',\n review: 'Review',\n smartSearch: 'Smart Search',\n}\n\nexport interface ViewToggleOption {\n value: string\n icon: ReactNode\n label: string\n /** Overrides this item's test id (default `${testIdPrefix}-${value}-button`). */\n testId?: string\n}\n\nexport interface ViewToggleProps {\n options: ViewToggleOption[]\n value: string\n onChange: (value: string) => void\n /** Item test ids are `${testIdPrefix}-${value}-button` unless an option sets its own `testId`. */\n testIdPrefix?: string\n showLabels?: boolean\n hideTooltips?: boolean\n size?: 'default' | 'sm'\n /**\n * Collapse labels to icons by the width of the nearest `@container` ancestor instead of the\n * viewport. The consumer must mark that region `@container`.\n */\n containerCollapse?: boolean\n className?: string\n}\n\ninterface ViewToggleItemProps {\n option: ViewToggleOption\n size: 'default' | 'sm'\n testIdPrefix: string\n showLabel: boolean\n labelClassName: string\n hideTooltip: boolean\n}\n\nfunction ViewToggleItem({\n option,\n size,\n testIdPrefix,\n showLabel,\n labelClassName,\n hideTooltip,\n}: ViewToggleItemProps) {\n const labelRef = useRef<HTMLSpanElement>(null)\n const [isTipNeeded, setIsTipNeeded] = useState(true)\n // A control that shows its own text needs no tooltip repeating it; when the container is too\n // narrow and the label collapses to the icon, the tooltip is the label.\n const isLabelShown = () => !!labelRef.current && labelRef.current.offsetParent !== null\n const content = (\n <span\n className=\"flex items-center gap-1.5\"\n onPointerEnter={() => setIsTipNeeded(!isLabelShown())}\n onFocus={() => setIsTipNeeded(!isLabelShown())}\n >\n {option.icon}\n {showLabel && (\n <span ref={labelRef} className={labelClassName}>\n {option.label}\n </span>\n )}\n </span>\n )\n return (\n // The tooltip lives INSIDE the item: wrapping the ToggleGroupItem would make Radix\n // Tooltip's data-state collide with the toggle's on/off state.\n <ToggleGroupItem\n value={option.value}\n aria-label={option.label}\n size={size}\n className=\"rounded-[5px] border-0 bg-transparent text-muted-foreground pointer-coarse:min-h-11 data-[state=off]:hover:bg-background/60 data-[state=off]:hover:text-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground data-[state=on]:hover:bg-accent data-[state=on]:hover:text-accent-foreground\"\n data-testid={option.testId ?? `${testIdPrefix}-${option.value}-button`}\n >\n {hideTooltip ? (\n content\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>{content}</TooltipTrigger>\n {isTipNeeded && <TooltipContent>{option.label}</TooltipContent>}\n </Tooltip>\n )}\n </ToggleGroupItem>\n )\n}\n\n/** Segmented view switch: selected = accent tint, tone-only hover, 44px targets on touch. */\nexport function ViewToggle({\n options,\n value,\n onChange,\n testIdPrefix = 'view',\n showLabels = false,\n hideTooltips = false,\n size = 'default',\n containerCollapse = false,\n className,\n}: ViewToggleProps) {\n const labelClassName = containerCollapse\n ? 'hidden @lg:inline text-sm'\n : 'hidden md:inline text-sm'\n return (\n <ToggleGroup\n variant=\"default\"\n type=\"single\"\n value={value}\n onValueChange={(next) => next && onChange(next)}\n className={cn('gap-0.5 rounded-md bg-muted p-0.5', className)}\n >\n {options.map((option) => (\n <ViewToggleItem\n key={option.value}\n option={option}\n size={size}\n testIdPrefix={testIdPrefix}\n showLabel={showLabels}\n labelClassName={labelClassName}\n hideTooltip={hideTooltips}\n />\n ))}\n </ToggleGroup>\n )\n}\n\nexport type DocumentViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\nfunction documentViewOptions(l: DocumentViewToggleLabels): ViewToggleOption[] {\n return [\n // \"Gallery\" (page-preview grid) reads more conventionally than \"Tiles\".\n { value: 'explorer', icon: <FileImage className=\"size-3.5\" />, label: l.gallery },\n { value: 'grid', icon: <Table2 className=\"size-3.5\" />, label: l.table },\n { value: 'navigator', icon: <BookOpen className=\"size-3.5\" />, label: l.review },\n { value: 'search', icon: <Search className=\"size-3.5\" />, label: l.smartSearch },\n ]\n}\n\nexport interface DocumentViewToggleProps {\n viewMode: DocumentViewMode\n onChange: (mode: DocumentViewMode) => void\n /** Collapse the four modes into one select trigger (narrow viewports). */\n compact?: boolean\n labels?: Partial<DocumentViewToggleLabels>\n /** Overrides the segmented items' prefix (default `documents-layout`: `<prefix>-<mode>-button`). */\n testIdPrefix?: string\n /** Per-mode item ids, for hosts that keep their own (e.g. `documents-view-gallery`). */\n testIds?: Partial<Record<DocumentViewMode, string>>\n /** Overrides the compact select test ids (defaults keep the current ids). */\n compactTestIds?: Partial<{ select: string; option: (mode: DocumentViewMode) => string }>\n}\n\n/** The Documents page's Gallery / Table / Review / Smart Search switch. */\nexport function DocumentViewToggle({\n viewMode,\n onChange,\n compact,\n labels,\n testIdPrefix,\n testIds,\n compactTestIds,\n}: DocumentViewToggleProps) {\n const options = documentViewOptions({ ...DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, ...labels }).map(\n (o) => ({ ...o, testId: testIds?.[o.value as DocumentViewMode] })\n )\n if (compact) {\n const current = options.find((o) => o.value === viewMode) ?? options[0]\n return (\n <Select value={viewMode} onValueChange={(v) => onChange(v as DocumentViewMode)}>\n <SelectTrigger\n className=\"h-7 w-10 justify-center gap-0 border-input p-0 pointer-coarse:h-11! pointer-coarse:w-11! shrink-0 [&>svg]:hidden\"\n aria-label={current.label}\n data-testid={testIdOr(compactTestIds?.select, {\n testId: 'documents-layout-compact-select',\n })}\n >\n <SelectValue>{current.icon}</SelectValue>\n </SelectTrigger>\n <SelectContent align=\"center\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n data-testid={testIdOr(compactTestIds?.option?.(option.value as DocumentViewMode), {\n testId: `documents-layout-compact-${option.value}-option`,\n })}\n >\n <span className=\"flex items-center gap-2\">\n {option.icon}\n {option.label}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n return (\n <ViewToggle\n options={options}\n value={viewMode}\n onChange={(v) => onChange(v as DocumentViewMode)}\n testIdPrefix={testIdPrefix ?? 'documents-layout'}\n showLabels\n containerCollapse\n size=\"sm\"\n />\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/files/ViewToggle.tsx"],"names":["useRef","useState","jsxs","jsx","ToggleGroupItem","Tooltip","TooltipTrigger","TooltipContent","ToggleGroup","cn","FileImage","Table2","BookOpen","Search","Select","SelectTrigger","testIdOr","SelectValue","SelectContent","SelectItem"],"mappings":"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","file":"chunk-ZPERNIMP.cjs","sourcesContent":["import { useRef, useState, type ReactNode } from 'react'\nimport { BookOpen, FileImage, Search, Table2 } from 'lucide-react'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n ToggleGroup,\n ToggleGroupItem,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../chat/test-id'\n\n/** Names of the four document view modes. Pass a partial `labels` to translate or reword. */\nexport interface DocumentViewToggleLabels {\n gallery: string\n table: string\n review: string\n smartSearch: string\n}\n\nexport const DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS: DocumentViewToggleLabels = {\n gallery: 'Gallery',\n table: 'Table',\n review: 'Review',\n smartSearch: 'Smart Search',\n}\n\nexport interface ViewToggleOption {\n value: string\n icon: ReactNode\n label: string\n /** Overrides this item's test id (default `${testIdPrefix}-${value}-button`). */\n testId?: string\n}\n\nexport interface ViewToggleProps {\n options: ViewToggleOption[]\n value: string\n onChange: (value: string) => void\n /** Item test ids are `${testIdPrefix}-${value}-button` unless an option sets its own `testId`. */\n testIdPrefix?: string\n showLabels?: boolean\n hideTooltips?: boolean\n size?: 'default' | 'sm'\n /**\n * Collapse labels to icons by the width of the nearest `@container` ancestor instead of the\n * viewport. The consumer must mark that region `@container`.\n */\n containerCollapse?: boolean\n className?: string\n}\n\ninterface ViewToggleItemProps {\n option: ViewToggleOption\n size: 'default' | 'sm'\n testIdPrefix: string\n showLabel: boolean\n labelClassName: string\n hideTooltip: boolean\n}\n\nfunction ViewToggleItem({\n option,\n size,\n testIdPrefix,\n showLabel,\n labelClassName,\n hideTooltip,\n}: ViewToggleItemProps) {\n const labelRef = useRef<HTMLSpanElement>(null)\n const [isTipNeeded, setIsTipNeeded] = useState(true)\n // A control that shows its own text needs no tooltip repeating it; when the container is too\n // narrow and the label collapses to the icon, the tooltip is the label.\n const isLabelShown = () => !!labelRef.current && labelRef.current.offsetParent !== null\n const content = (\n <span\n className=\"flex items-center gap-1.5\"\n onPointerEnter={() => setIsTipNeeded(!isLabelShown())}\n onFocus={() => setIsTipNeeded(!isLabelShown())}\n >\n {option.icon}\n {showLabel && (\n <span ref={labelRef} className={labelClassName}>\n {option.label}\n </span>\n )}\n </span>\n )\n return (\n // The tooltip lives INSIDE the item: wrapping the ToggleGroupItem would make Radix\n // Tooltip's data-state collide with the toggle's on/off state.\n <ToggleGroupItem\n value={option.value}\n aria-label={option.label}\n size={size}\n className=\"rounded-[5px] border-0 bg-transparent text-muted-foreground pointer-coarse:min-h-11 data-[state=off]:hover:bg-background/60 data-[state=off]:hover:text-foreground data-[state=on]:bg-accent data-[state=on]:text-accent-foreground data-[state=on]:hover:bg-accent data-[state=on]:hover:text-accent-foreground\"\n data-testid={option.testId ?? `${testIdPrefix}-${option.value}-button`}\n >\n {hideTooltip ? (\n content\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>{content}</TooltipTrigger>\n {isTipNeeded && <TooltipContent>{option.label}</TooltipContent>}\n </Tooltip>\n )}\n </ToggleGroupItem>\n )\n}\n\n/** Segmented view switch: selected = accent tint, tone-only hover, 44px targets on touch. */\nexport function ViewToggle({\n options,\n value,\n onChange,\n testIdPrefix = 'view',\n showLabels = false,\n hideTooltips = false,\n size = 'default',\n containerCollapse = false,\n className,\n}: ViewToggleProps) {\n const labelClassName = containerCollapse\n ? 'hidden @lg:inline text-sm'\n : 'hidden md:inline text-sm'\n return (\n <ToggleGroup\n variant=\"default\"\n type=\"single\"\n value={value}\n onValueChange={(next) => next && onChange(next)}\n className={cn('gap-0.5 rounded-md bg-muted p-0.5', className)}\n >\n {options.map((option) => (\n <ViewToggleItem\n key={option.value}\n option={option}\n size={size}\n testIdPrefix={testIdPrefix}\n showLabel={showLabels}\n labelClassName={labelClassName}\n hideTooltip={hideTooltips}\n />\n ))}\n </ToggleGroup>\n )\n}\n\nexport type DocumentViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\nfunction documentViewOptions(l: DocumentViewToggleLabels): ViewToggleOption[] {\n return [\n // \"Gallery\" (page-preview grid) reads more conventionally than \"Tiles\".\n { value: 'explorer', icon: <FileImage className=\"size-3.5\" />, label: l.gallery },\n { value: 'grid', icon: <Table2 className=\"size-3.5\" />, label: l.table },\n { value: 'navigator', icon: <BookOpen className=\"size-3.5\" />, label: l.review },\n { value: 'search', icon: <Search className=\"size-3.5\" />, label: l.smartSearch },\n ]\n}\n\nexport interface DocumentViewToggleProps {\n viewMode: DocumentViewMode\n onChange: (mode: DocumentViewMode) => void\n /** Collapse the four modes into one select trigger (narrow viewports). */\n compact?: boolean\n labels?: Partial<DocumentViewToggleLabels>\n /** Overrides the segmented items' prefix (default `documents-layout`: `<prefix>-<mode>-button`). */\n testIdPrefix?: string\n /** Per-mode item ids, for hosts that keep their own (e.g. `documents-view-gallery`). */\n testIds?: Partial<Record<DocumentViewMode, string>>\n /** Overrides the compact select test ids (defaults keep the current ids). */\n compactTestIds?: Partial<{ select: string; option: (mode: DocumentViewMode) => string }>\n}\n\n/** The Documents page's Gallery / Table / Review / Smart Search switch. */\nexport function DocumentViewToggle({\n viewMode,\n onChange,\n compact,\n labels,\n testIdPrefix,\n testIds,\n compactTestIds,\n}: DocumentViewToggleProps) {\n const options = documentViewOptions({ ...DEFAULT_DOCUMENT_VIEW_TOGGLE_LABELS, ...labels }).map(\n (o) => ({ ...o, testId: testIds?.[o.value as DocumentViewMode] })\n )\n if (compact) {\n const current = options.find((o) => o.value === viewMode) ?? options[0]\n return (\n <Select value={viewMode} onValueChange={(v) => onChange(v as DocumentViewMode)}>\n <SelectTrigger\n className=\"h-7 w-10 justify-center gap-0 border-input p-0 pointer-coarse:h-11! pointer-coarse:w-11! shrink-0 [&>svg]:hidden\"\n aria-label={current.label}\n data-testid={testIdOr(compactTestIds?.select, {\n testId: 'documents-layout-compact-select',\n })}\n >\n <SelectValue>{current.icon}</SelectValue>\n </SelectTrigger>\n <SelectContent align=\"center\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n data-testid={testIdOr(compactTestIds?.option?.(option.value as DocumentViewMode), {\n testId: `documents-layout-compact-${option.value}-option`,\n })}\n >\n <span className=\"flex items-center gap-2\">\n {option.icon}\n {option.label}\n </span>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n return (\n <ViewToggle\n options={options}\n value={viewMode}\n onChange={(v) => onChange(v as DocumentViewMode)}\n testIdPrefix={testIdPrefix ?? 'documents-layout'}\n showLabels\n containerCollapse\n size=\"sm\"\n />\n )\n}\n"]}