@arbidocs/blocks 0.4.15 → 0.4.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/index.cjs +369 -171
- package/dist/agents/index.js +4 -2
- package/dist/agents/tasks/DueDateMenu.d.ts +32 -0
- package/dist/agents/tasks/NewThreadDialog.d.ts +53 -0
- package/dist/agents/tasks/PersonPill.d.ts +22 -0
- package/dist/agents/tasks/PillSelect.d.ts +39 -0
- package/dist/agents/tasks/TaskActivityDialog.d.ts +14 -0
- package/dist/agents/tasks/TaskActivityTimeline.d.ts +54 -0
- package/dist/agents/tasks/TaskComposer.d.ts +6 -106
- package/dist/agents/tasks/TaskMoveDialog.d.ts +25 -0
- package/dist/agents/tasks/TaskOutputsCell.d.ts +23 -0
- package/dist/agents/tasks/TaskPlan.d.ts +4 -2
- package/dist/agents/tasks/TaskReviewActions.d.ts +44 -0
- package/dist/agents/tasks/TaskRowMenu.d.ts +28 -0
- package/dist/agents/tasks/TaskStatusPill.d.ts +24 -0
- package/dist/agents/tasks/TaskTable.d.ts +99 -0
- package/dist/agents/tasks/TaskThreadChip.d.ts +19 -0
- package/dist/agents/tasks/TaskTriggerChip.d.ts +24 -0
- package/dist/agents/tasks/TasksChrome.d.ts +17 -17
- package/dist/agents/tasks/WorkflowComposer.d.ts +10 -0
- package/dist/agents/tasks/WorkflowsTable.d.ts +72 -0
- package/dist/agents/tasks/gridWidth.d.ts +11 -0
- package/dist/agents/tasks/index.d.ts +23 -7
- package/dist/agents/tasks/taskColumns.d.ts +39 -63
- package/dist/agents/tasks/taskComposerTypes.d.ts +217 -0
- package/dist/agents/tasks/taskLabels.d.ts +27 -10
- package/dist/agents/tasks/taskRequest.d.ts +151 -25
- package/dist/agents/tasks/taskRows.d.ts +111 -0
- package/dist/agents/tasks/taskTableLabels.d.ts +64 -0
- package/dist/agents/tasks/workflowColumns.d.ts +23 -0
- package/dist/agents/tasks/workflowRows.d.ts +44 -0
- package/dist/agents/tasks/workflowTableLabels.d.ts +53 -0
- package/dist/agents/workflows/WorkflowConfigDialog.d.ts +5 -0
- package/dist/agents/workflows/index.d.ts +1 -0
- package/dist/agents/workflows/scopeRender.d.ts +10 -0
- package/dist/agents/workflows/types.d.ts +2 -0
- package/dist/chat/AssistantModeToggle.d.ts +25 -0
- package/dist/chat/MentionMenu.d.ts +52 -0
- package/dist/chat/index.cjs +119 -63
- package/dist/chat/index.d.ts +4 -0
- package/dist/chat/index.js +1 -1
- package/dist/chat/mentions.d.ts +64 -0
- package/dist/chat/useMentionAutocomplete.d.ts +33 -0
- package/dist/{chunk-IMA6I73C.js → chunk-ABSII3ND.js} +336 -4
- package/dist/chunk-ABSII3ND.js.map +1 -0
- package/dist/{chunk-22T6KHGB.cjs → chunk-C2V6HQKG.cjs} +348 -2
- package/dist/chunk-C2V6HQKG.cjs.map +1 -0
- package/dist/chunk-IC2VHFWR.js +158 -0
- package/dist/chunk-IC2VHFWR.js.map +1 -0
- package/dist/{chunk-67HGXV4I.cjs → chunk-IWOOGRNG.cjs} +4276 -855
- package/dist/chunk-IWOOGRNG.cjs.map +1 -0
- package/dist/{chunk-D6XY3C4O.cjs → chunk-JGZTRLKL.cjs} +207 -139
- package/dist/chunk-JGZTRLKL.cjs.map +1 -0
- package/dist/{chunk-H7OD4CHN.js → chunk-NUPVHEJW.js} +208 -140
- package/dist/chunk-NUPVHEJW.js.map +1 -0
- package/dist/{chunk-CVFBSUXL.js → chunk-OMF7444S.js} +4223 -851
- package/dist/chunk-OMF7444S.js.map +1 -0
- package/dist/chunk-ZPERNIMP.cjs +162 -0
- package/dist/chunk-ZPERNIMP.cjs.map +1 -0
- package/dist/connection/ai.d.ts +4 -1
- package/dist/facts/FactRowActions.d.ts +5 -1
- package/dist/facts/factColumns.d.ts +1 -1
- package/dist/facts/index.cjs +18 -9
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +13 -4
- package/dist/facts/index.js.map +1 -1
- package/dist/files/GridView.d.ts +5 -0
- package/dist/files/index.cjs +17 -17
- package/dist/files/index.js +3 -4
- package/dist/files/index.js.map +1 -1
- package/dist/index.cjs +495 -243
- package/dist/index.js +4 -4
- package/dist/settings/ConversationSettingsParts.d.ts +5 -1
- package/dist/settings/index.cjs +8 -3
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.js +8 -3
- package/dist/settings/index.js.map +1 -1
- package/dist/site/index.cjs +9 -9
- package/dist/site/index.js +1 -1
- package/dist/workspaces/index.cjs +1 -1
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +1 -1
- package/dist/workspaces/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/agents/tasks/LiveRunsBanner.d.ts +0 -26
- package/dist/agents/tasks/TaskRowActions.d.ts +0 -43
- package/dist/chunk-22T6KHGB.cjs.map +0 -1
- package/dist/chunk-67HGXV4I.cjs.map +0 -1
- package/dist/chunk-CVFBSUXL.js.map +0 -1
- package/dist/chunk-D6XY3C4O.cjs.map +0 -1
- package/dist/chunk-H7OD4CHN.js.map +0 -1
- package/dist/chunk-IMA6I73C.js.map +0 -1
- package/dist/chunk-NUNKSZKU.js +0 -203
- package/dist/chunk-NUNKSZKU.js.map +0 -1
- package/dist/chunk-V4ISCZJ7.cjs +0 -207
- package/dist/chunk-V4ISCZJ7.cjs.map +0 -1
package/dist/agents/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export {
|
|
3
|
-
import '../chunk-
|
|
2
|
+
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, 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_SCHEMA_FORM_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_ACTIVITY_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_REVIEW_ACTIONS_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, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EMPTY_WORKFLOW_SCOPE, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, SKILL_PROMPT_FALLBACK_PLACEHOLDER, SKILL_PROMPT_LABEL, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SchemaForm, 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, TaskActivityTimeline, TaskComposer, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskReviewActions, TaskRunsDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowLauncher, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildLaunch, buildRRule, buildTaskRows, composePersona, composeWorkflowPrompt, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultInputs, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, firstWords, formatElapsed, goalProgress, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, inputsFromContext, isAgenticWorkflow, isEmptyWorkflowScope, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isWorkflowScope, isoToLocalInput, localInputToIso, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, promptFieldName, resolveScopeInputs, skillToWorkflow, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, validateInputs, workflowAccepts, workflowFromFrontmatter, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowTriggerType, workflowWhen, workflowsAccepting, workflowsForHost } from '../chunk-OMF7444S.js';
|
|
3
|
+
import '../chunk-NUPVHEJW.js';
|
|
4
4
|
import '../chunk-NJL4LIXX.js';
|
|
5
5
|
import '../chunk-CQCC7LE7.js';
|
|
6
6
|
import '../chunk-UBNVIIBT.js';
|
|
7
|
+
import '../chunk-DPLRHEJZ.js';
|
|
7
8
|
import '../chunk-P6GHJSLR.js';
|
|
8
9
|
import '../chunk-S7PSMMRG.js';
|
|
10
|
+
import '../chunk-SLSBJRWW.js';
|
|
9
11
|
import '../chunk-76JDDMSP.js';
|
|
10
12
|
import '../chunk-CPMNAJLF.js';
|
|
11
13
|
import '../chunk-NPLYHR2E.js';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface DueDateMenuLabels {
|
|
2
|
+
today: string;
|
|
3
|
+
tomorrow: string;
|
|
4
|
+
nextMonday: string;
|
|
5
|
+
inAWeek: string;
|
|
6
|
+
pick: string;
|
|
7
|
+
clear: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_DUE_DATE_MENU_LABELS: DueDateMenuLabels;
|
|
10
|
+
/** A date as the `datetime-local` value the form holds: "2026-10-12T17:00" (local time). */
|
|
11
|
+
export declare function toLocalInput(date: Date): string;
|
|
12
|
+
export interface DuePreset {
|
|
13
|
+
id: 'today' | 'tomorrow' | 'nextMonday' | 'inAWeek';
|
|
14
|
+
value: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The quick choices, each at the end of the working day. "Today" is left out once that time has passed.
|
|
18
|
+
* `now` is a parameter so the choices are testable.
|
|
19
|
+
*/
|
|
20
|
+
export declare function duePresets(now?: Date): DuePreset[];
|
|
21
|
+
interface DueDateMenuProps {
|
|
22
|
+
value: string;
|
|
23
|
+
onChange: (value: string) => void;
|
|
24
|
+
/** Keys the input's id and test ids. */
|
|
25
|
+
id: string;
|
|
26
|
+
/** The accessible name of the date input. */
|
|
27
|
+
label: string;
|
|
28
|
+
labels?: Partial<DueDateMenuLabels>;
|
|
29
|
+
}
|
|
30
|
+
/** The body of a due-date popover: quick choices first, the exact date and time for the rest. */
|
|
31
|
+
export declare function DueDateMenu({ value, onChange, id, label, labels }: DueDateMenuProps): import("react").JSX.Element;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { PersonOption, TaskOption } from './taskComposerTypes';
|
|
2
|
+
import { type NewThreadValues } from './taskRequest';
|
|
3
|
+
export interface NewThreadDialogLabels {
|
|
4
|
+
title: string;
|
|
5
|
+
description: string;
|
|
6
|
+
promptLabel: string;
|
|
7
|
+
promptPlaceholder: string;
|
|
8
|
+
titleLabel: string;
|
|
9
|
+
titlePlaceholder: string;
|
|
10
|
+
visibility: string;
|
|
11
|
+
taskDetails: string;
|
|
12
|
+
/** Under the prompt: which files the assistant can use. */
|
|
13
|
+
files: (count: number) => string;
|
|
14
|
+
taskDetailsHint: string;
|
|
15
|
+
owner: string;
|
|
16
|
+
ownerMe: string;
|
|
17
|
+
due: string;
|
|
18
|
+
dueNone: string;
|
|
19
|
+
dueClear: string;
|
|
20
|
+
parentTask: string;
|
|
21
|
+
parentTaskNone: string;
|
|
22
|
+
search: string;
|
|
23
|
+
empty: string;
|
|
24
|
+
cancel: string;
|
|
25
|
+
createTask: string;
|
|
26
|
+
/** The switch under the prompt, and the button when it is off. */
|
|
27
|
+
assistantStart: string;
|
|
28
|
+
assistantStartHint: string;
|
|
29
|
+
addTodo: string;
|
|
30
|
+
saving: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const DEFAULT_NEW_THREAD_DIALOG_LABELS: NewThreadDialogLabels;
|
|
33
|
+
export interface NewThreadDialogProps {
|
|
34
|
+
open: boolean;
|
|
35
|
+
onOpenChange: (open: boolean) => void;
|
|
36
|
+
/** People who can have the next step (humans who can edit the workspace). Omit to hide the field. */
|
|
37
|
+
people?: PersonOption[];
|
|
38
|
+
/** Tasks this can be a sub-task of. Omit or leave empty to hide the field. */
|
|
39
|
+
tasks?: TaskOption[];
|
|
40
|
+
initialValues?: Partial<NewThreadValues>;
|
|
41
|
+
/** How many files the assistant will be able to use; omit to say nothing. */
|
|
42
|
+
fileCount?: number;
|
|
43
|
+
isPending?: boolean;
|
|
44
|
+
onSubmit: (values: NewThreadValues) => void;
|
|
45
|
+
labels?: Partial<NewThreadDialogLabels>;
|
|
46
|
+
testId?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* "New task": the one way to start something. Type the prompt (what to ask or get done) and who sees it (the
|
|
50
|
+
* workspace, by default); the title is made from the prompt. Every ask is a task: the details (owner, due
|
|
51
|
+
* date, parent, a title of your own) are optional and folded away.
|
|
52
|
+
*/
|
|
53
|
+
export declare function NewThreadDialog({ open, onOpenChange, people, tasks, initialValues, fileCount, isPending, onSubmit, labels, testId, }: NewThreadDialogProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** A person (or agent) as the table shows them. */
|
|
2
|
+
export interface TaskPerson {
|
|
3
|
+
/** The user's external id; absent when the person is not known (the pill then reads as their label). */
|
|
4
|
+
id?: string | null;
|
|
5
|
+
label: string;
|
|
6
|
+
/** The viewer: shown as "You" by the host's pill, and as the label here. */
|
|
7
|
+
isMe?: boolean;
|
|
8
|
+
isAgent?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface PersonPillProps {
|
|
11
|
+
person: TaskPerson;
|
|
12
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
13
|
+
testId?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A person as the app's own user pill: the same avatar, initials and tint as everywhere else. This is
|
|
17
|
+
* the default; a host that knows more (presence, a direct-message click, the rich tooltip) hands the
|
|
18
|
+
* table its own `renderPerson` instead.
|
|
19
|
+
*/
|
|
20
|
+
export declare function PersonPill({ person, size, testId }: PersonPillProps): import("react").JSX.Element;
|
|
21
|
+
/** Just the avatar: the same user avatar and tint, for lists and pills that carry their own name. */
|
|
22
|
+
export declare function PersonAvatar({ person, size }: PersonPillProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface PillOption {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Small line after the label in the list (e.g. a role). */
|
|
6
|
+
description?: string;
|
|
7
|
+
/** Glyph before the label in the list and, when chosen, on the pill. */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export interface PillSelectLabels {
|
|
11
|
+
/** The search box placeholder. */
|
|
12
|
+
search: string;
|
|
13
|
+
/** Shown when the search matches nothing. */
|
|
14
|
+
empty: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const DEFAULT_PILL_SELECT_LABELS: PillSelectLabels;
|
|
17
|
+
export interface PillSelectProps {
|
|
18
|
+
/** The pill's glyph when nothing (or an option without its own icon) is chosen. */
|
|
19
|
+
icon: ReactNode;
|
|
20
|
+
/** Names the property on the pill: "Sign-off: Me". */
|
|
21
|
+
prefix: string;
|
|
22
|
+
/** The chosen option id; `''` is the "none" entry when `noneOption` is set. */
|
|
23
|
+
value: string;
|
|
24
|
+
options: PillOption[];
|
|
25
|
+
onChange: (id: string) => void;
|
|
26
|
+
/** Adds an entry that clears the choice (id `''`), e.g. "Me" or "Nothing". */
|
|
27
|
+
noneOption?: PillOption;
|
|
28
|
+
/** Show a search box (for long lists such as people or tasks). */
|
|
29
|
+
searchable?: boolean;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
testId?: string;
|
|
32
|
+
labels?: Partial<PillSelectLabels>;
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A property as a pill that opens a list, like every other entity reference in the app: the pill shows
|
|
37
|
+
* `Prefix: choice`, the popover lists the options (searchable when long), one is chosen and it closes.
|
|
38
|
+
*/
|
|
39
|
+
export declare function PillSelect({ icon, prefix, value, options, onChange, noneOption, searchable, disabled, testId, labels, className, }: PillSelectProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type TaskActivityEvent, type TaskActivityLabels, type TaskActivityTimelineProps } from './TaskActivityTimeline';
|
|
2
|
+
export interface TaskActivityDialogProps extends Omit<TaskActivityTimelineProps, 'events' | 'labels' | 'testId'> {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
/** The task's name, shown under the title. */
|
|
6
|
+
taskName: string;
|
|
7
|
+
events: readonly TaskActivityEvent[] | undefined;
|
|
8
|
+
isLoading?: boolean;
|
|
9
|
+
isError?: boolean;
|
|
10
|
+
labels?: Partial<TaskActivityLabels>;
|
|
11
|
+
testId?: string;
|
|
12
|
+
}
|
|
13
|
+
/** The task's history in a dialog: newest at the bottom, scrolled into view as events arrive. */
|
|
14
|
+
export declare function TaskActivityDialog({ open, onOpenChange, taskName, events, isLoading, isError, labels, testId, ...timeline }: TaskActivityDialogProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type TaskActivityKind = 'created' | 'run_started' | 'awaiting_access' | 'access_granted' | 'ready_for_review' | 'handed_off' | 'changes_requested' | 'done' | 'reopened' | 'failed';
|
|
3
|
+
/** One event of a task's history, as the backend returns it (oldest first). */
|
|
4
|
+
export interface TaskActivityEvent {
|
|
5
|
+
external_id: string;
|
|
6
|
+
kind: TaskActivityKind;
|
|
7
|
+
actor_ext_id?: string | null;
|
|
8
|
+
to_ext_id?: string | null;
|
|
9
|
+
/** The feedback of a send-back, the message of a hand-off. */
|
|
10
|
+
note?: string | null;
|
|
11
|
+
/** `run_id`, `agent_ext_id`, `as_user`, `from_workflow`, `error`. */
|
|
12
|
+
detail?: Record<string, unknown> | null;
|
|
13
|
+
created_at: string;
|
|
14
|
+
}
|
|
15
|
+
export interface TaskActivityLabels {
|
|
16
|
+
title: string;
|
|
17
|
+
empty: string;
|
|
18
|
+
loading: string;
|
|
19
|
+
error: string;
|
|
20
|
+
close: string;
|
|
21
|
+
created: string;
|
|
22
|
+
createdFromWorkflow: string;
|
|
23
|
+
runStarted: string;
|
|
24
|
+
runStartedBy: (agentName: string) => string;
|
|
25
|
+
awaitingAccess: string;
|
|
26
|
+
accessGranted: string;
|
|
27
|
+
readyForReview: string;
|
|
28
|
+
handedOff: string;
|
|
29
|
+
changesRequested: string;
|
|
30
|
+
done: string;
|
|
31
|
+
reopened: string;
|
|
32
|
+
failed: string;
|
|
33
|
+
handedOverNote: (note: string) => string;
|
|
34
|
+
sentBackNote: (note: string) => string;
|
|
35
|
+
failureLine: (error: string) => string;
|
|
36
|
+
/** The actor is not known (a system step). */
|
|
37
|
+
system: string;
|
|
38
|
+
}
|
|
39
|
+
export declare const DEFAULT_TASK_ACTIVITY_LABELS: TaskActivityLabels;
|
|
40
|
+
export interface TaskActivityTimelineProps {
|
|
41
|
+
events: readonly TaskActivityEvent[];
|
|
42
|
+
/** Draw a person (an id, or none for a system step). */
|
|
43
|
+
renderPerson: (id: string | null | undefined) => ReactNode;
|
|
44
|
+
/** An agent's display name by id. */
|
|
45
|
+
agentName?: (agentExtId: string) => string | undefined;
|
|
46
|
+
/** "2 min ago". */
|
|
47
|
+
formatRelative: (iso: string) => string;
|
|
48
|
+
/** The exact time, shown on hover. */
|
|
49
|
+
formatExact: (iso: string) => string;
|
|
50
|
+
labels?: Partial<TaskActivityLabels>;
|
|
51
|
+
testId?: string;
|
|
52
|
+
}
|
|
53
|
+
/** A task's history as a vertical timeline, oldest first, one entry per event. */
|
|
54
|
+
export declare function TaskActivityTimeline({ events, renderPerson, agentName, formatRelative, formatExact, labels, testId, }: TaskActivityTimelineProps): import("react").JSX.Element;
|
|
@@ -1,108 +1,8 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
3
|
-
import { type SchemaFormLabels } from '../workflows/SchemaForm';
|
|
4
|
-
import type { WorkflowDefinition, WorkflowInputs } from '../workflows/types';
|
|
5
|
-
import { type RecurrenceBuilderProps } from './RecurrenceBuilder';
|
|
6
|
-
/** When the task runs. `now` is on demand; the rest are scheduled. */
|
|
7
|
-
export type TaskWhen = 'now' | 'once' | 'repeat' | 'event';
|
|
8
|
-
export type TaskAccessMode = 'ask_each_run' | 'standing';
|
|
9
|
-
/** Everything the composer collects. The host maps it onto its API. */
|
|
10
|
-
export interface TaskComposerValues {
|
|
11
|
-
workflowId: string;
|
|
12
|
-
inputs: WorkflowInputs;
|
|
13
|
-
when: TaskWhen;
|
|
14
|
-
/** datetime-local value (`once`). */
|
|
15
|
-
runAt: string;
|
|
16
|
-
rrule: string;
|
|
17
|
-
timezone: string;
|
|
18
|
-
eventKind: string;
|
|
19
|
-
/** `''` = the user's own assistant. */
|
|
20
|
-
agentId: string;
|
|
21
|
-
/** Empty = derived from the workflow title by the host. */
|
|
22
|
-
name: string;
|
|
23
|
-
notifyOnComplete: boolean;
|
|
24
|
-
/** Draft the plan first and let the user approve it before anything is created. */
|
|
25
|
-
reviewPlan: boolean;
|
|
26
|
-
/** Only asked for scheduled tasks, folded under More options. */
|
|
27
|
-
access: TaskAccessMode;
|
|
28
|
-
}
|
|
29
|
-
export interface TaskComposerLabels {
|
|
30
|
-
titleNew: string;
|
|
31
|
-
titleEdit: string;
|
|
32
|
-
description: string;
|
|
33
|
-
what: string;
|
|
34
|
-
whatHint: string;
|
|
35
|
-
whatPlaceholder: string;
|
|
36
|
-
when: string;
|
|
37
|
-
whenOptions: Record<TaskWhen, string>;
|
|
38
|
-
runAt: string;
|
|
39
|
-
event: string;
|
|
40
|
-
eventPlaceholder: string;
|
|
41
|
-
eventHint: ReactNode;
|
|
42
|
-
who: string;
|
|
43
|
-
more: string;
|
|
44
|
-
goalAndPlan: string;
|
|
45
|
-
reviewPlan: string;
|
|
46
|
-
reviewPlanHint: string;
|
|
47
|
-
outputs: string;
|
|
48
|
-
outputChat: string;
|
|
49
|
-
outputChatHint: string;
|
|
50
|
-
outputArtifacts: string;
|
|
51
|
-
outputFileMetadata: string;
|
|
52
|
-
tools: string;
|
|
53
|
-
toolsFromAgent: string;
|
|
54
|
-
notSupportedYet: string;
|
|
55
|
-
name: string;
|
|
56
|
-
namePlaceholder: string;
|
|
57
|
-
timezone: string;
|
|
58
|
-
notify: string;
|
|
59
|
-
notifyHint: string;
|
|
60
|
-
access: string;
|
|
61
|
-
accessOptions: Record<TaskAccessMode, {
|
|
62
|
-
label: string;
|
|
63
|
-
hint: string;
|
|
64
|
-
}>;
|
|
65
|
-
accessNow: string;
|
|
66
|
-
lockedAfterCreation: string;
|
|
67
|
-
cancel: string;
|
|
68
|
-
runNow: string;
|
|
69
|
-
schedule: string;
|
|
70
|
-
save: string;
|
|
71
|
-
saving: string;
|
|
72
|
-
}
|
|
73
|
-
export declare const DEFAULT_TASK_COMPOSER_LABELS: TaskComposerLabels;
|
|
74
|
-
export interface TaskComposerProps {
|
|
75
|
-
open: boolean;
|
|
76
|
-
onOpenChange: (open: boolean) => void;
|
|
77
|
-
/** Editing an existing task: the schedule kind and the agent are fixed. */
|
|
78
|
-
isEdit?: boolean;
|
|
79
|
-
/** Workflows a task can run. The host includes its "my own instruction" entry. */
|
|
80
|
-
workflows: WorkflowDefinition[];
|
|
81
|
-
agents: AgentOption[];
|
|
82
|
-
/** Controlled values; omit to let the composer hold them (seeded by `initialValues`). */
|
|
83
|
-
values?: TaskComposerValues;
|
|
84
|
-
initialValues?: Partial<TaskComposerValues>;
|
|
85
|
-
onValuesChange?: (values: TaskComposerValues) => void;
|
|
86
|
-
timezones?: string[];
|
|
87
|
-
/** The goal and success-criteria editor, in its own folded section. Omit when not applicable. */
|
|
88
|
-
goal?: ReactNode | ((values: TaskComposerValues) => ReactNode);
|
|
89
|
-
/** What "always allowed" means for this agent (e.g. the workspaces it will hold standing access to). */
|
|
90
|
-
standingAccess?: ReactNode | ((values: TaskComposerValues) => ReactNode);
|
|
91
|
-
/** Offer the "show me the plan first" switch (needs a host that can draft a plan). */
|
|
92
|
-
canReviewPlan?: boolean;
|
|
93
|
-
isPending?: boolean;
|
|
94
|
-
onSubmit: (values: TaskComposerValues) => void;
|
|
95
|
-
/** The task's workflow input forms: `renderIcon` maps a field option's icon key. */
|
|
96
|
-
renderIcon?: (key: string) => ReactNode;
|
|
97
|
-
labels?: Partial<TaskComposerLabels>;
|
|
98
|
-
formLabels?: Partial<SchemaFormLabels>;
|
|
99
|
-
agentLabels?: Partial<AgentSelectLabels>;
|
|
100
|
-
recurrence?: Pick<RecurrenceBuilderProps, 'testIds' | 'labels'>;
|
|
101
|
-
testId?: string;
|
|
102
|
-
}
|
|
103
|
-
export declare function defaultTaskComposerValues(workflows: WorkflowDefinition[], initial?: Partial<TaskComposerValues>): TaskComposerValues;
|
|
1
|
+
import { type TaskComposerProps } from './taskComposerTypes';
|
|
2
|
+
export * from './taskComposerTypes';
|
|
104
3
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
4
|
+
* The dialog behind "New task" (a title, with the assistant optional) and, with `kind="workflow"`, the
|
|
5
|
+
* workflow dialog (see {@link WorkflowComposer}: what, when and who up front, the rest under More
|
|
6
|
+
* options).
|
|
107
7
|
*/
|
|
108
|
-
export declare function TaskComposer(
|
|
8
|
+
export declare function TaskComposer(props: TaskComposerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface TaskMoveOption {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
}
|
|
5
|
+
export interface TaskMoveDialogLabels {
|
|
6
|
+
title: string;
|
|
7
|
+
none: string;
|
|
8
|
+
search: string;
|
|
9
|
+
empty: string;
|
|
10
|
+
cancel: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TaskMoveDialogProps {
|
|
13
|
+
open: boolean;
|
|
14
|
+
onOpenChange: (open: boolean) => void;
|
|
15
|
+
/** Where the task can go (the host excludes the task itself and its descendants). */
|
|
16
|
+
options: TaskMoveOption[];
|
|
17
|
+
/** The task's current parent, marked in the list. */
|
|
18
|
+
currentParentId?: string | null;
|
|
19
|
+
/** `null` moves the task to the top level. */
|
|
20
|
+
onPick: (parentId: string | null) => void;
|
|
21
|
+
labels: TaskMoveDialogLabels;
|
|
22
|
+
testId?: string;
|
|
23
|
+
}
|
|
24
|
+
/** A parent picker: choose the task another task becomes a sub-task of, or the top level. */
|
|
25
|
+
export declare function TaskMoveDialog({ open, onOpenChange, options, currentParentId, onPick, labels, testId, }: TaskMoveDialogProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** A document a task produced, as the Outputs cell needs it. */
|
|
2
|
+
export interface TaskOutput {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TaskOutputsCellLabels {
|
|
7
|
+
none: string;
|
|
8
|
+
/** Menu trigger's accessible name. */
|
|
9
|
+
open: (count: number) => string;
|
|
10
|
+
/** "+2" next to the first file name. */
|
|
11
|
+
more: (count: number) => string;
|
|
12
|
+
}
|
|
13
|
+
export declare const DEFAULT_TASK_OUTPUTS_CELL_LABELS: TaskOutputsCellLabels;
|
|
14
|
+
export interface TaskOutputsCellProps {
|
|
15
|
+
/** Task id: keys the test ids (`task-outputs-{id}`, `task-output-{id}-{docId}`). */
|
|
16
|
+
id: string;
|
|
17
|
+
outputs?: readonly TaskOutput[];
|
|
18
|
+
onOpen: (documentId: string) => void;
|
|
19
|
+
testId?: string;
|
|
20
|
+
labels?: Partial<TaskOutputsCellLabels>;
|
|
21
|
+
}
|
|
22
|
+
/** The documents a task generated: the first file name and a count, with a menu that opens each. */
|
|
23
|
+
export declare function TaskOutputsCell({ id, outputs, onOpen, testId, labels }: TaskOutputsCellProps): import("react").JSX.Element;
|
|
@@ -30,7 +30,7 @@ export interface TaskPlanLabels {
|
|
|
30
30
|
add: string;
|
|
31
31
|
noCriteria: string;
|
|
32
32
|
criterionPlaceholder: string;
|
|
33
|
-
removeCriterion: (
|
|
33
|
+
removeCriterion: (n: number) => string;
|
|
34
34
|
retryBudget: string;
|
|
35
35
|
/** e.g. "up to 3 passes". */
|
|
36
36
|
passes: (count: number) => string;
|
|
@@ -66,6 +66,8 @@ export interface TaskPlanProps<P extends TaskPlanView> {
|
|
|
66
66
|
workspaceName: string | null;
|
|
67
67
|
/** The objective the planner drafts from (the task's prompt). */
|
|
68
68
|
objective: string;
|
|
69
|
+
/** Document id → file name, so the plan shows names instead of ids. */
|
|
70
|
+
documentNames?: Record<string, string>;
|
|
69
71
|
testIds?: Partial<TaskPlanTestIds>;
|
|
70
72
|
labels?: Partial<TaskPlanLabels>;
|
|
71
73
|
}
|
|
@@ -75,4 +77,4 @@ export declare function nextCriterionId(criteria: TaskPlanCriterionView[]): stri
|
|
|
75
77
|
* Goal-plan editor: empty-state pitch with a single Generate action, or (with a plan) goal,
|
|
76
78
|
* acceptance checklist, retry budget and working documents.
|
|
77
79
|
*/
|
|
78
|
-
export declare function TaskPlan<P extends TaskPlanView>({ plan, onChange, onGenerate, isGenerating, workspaceName, objective, testIds, labels, }: TaskPlanProps<P>): import("react").JSX.Element;
|
|
80
|
+
export declare function TaskPlan<P extends TaskPlanView>({ plan, onChange, onGenerate, isGenerating, workspaceName, objective, documentNames, testIds, labels, }: TaskPlanProps<P>): import("react").JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface TaskReviewActionsLabels {
|
|
2
|
+
approve: string;
|
|
3
|
+
requestChanges: string;
|
|
4
|
+
feedbackLabel: string;
|
|
5
|
+
feedbackPlaceholder: string;
|
|
6
|
+
send: string;
|
|
7
|
+
cancel: string;
|
|
8
|
+
askApproval: string;
|
|
9
|
+
askApprovalPerson: string;
|
|
10
|
+
askApprovalSearch: string;
|
|
11
|
+
askApprovalEmpty: string;
|
|
12
|
+
askApprovalNote: string;
|
|
13
|
+
askApprovalSend: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const DEFAULT_TASK_REVIEW_ACTIONS_LABELS: TaskReviewActionsLabels;
|
|
16
|
+
export interface TaskReviewActionsProps {
|
|
17
|
+
/** Task id: keys the test ids (`task-approve-{id}`, ...). */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Disables both actions while a request is in flight. */
|
|
20
|
+
busy?: boolean;
|
|
21
|
+
/** Hide "Request changes" for work no agent can revise (a plain reminder). */
|
|
22
|
+
canRequestChanges?: boolean;
|
|
23
|
+
onApprove: () => void;
|
|
24
|
+
onRequestChanges: (feedback: string) => void;
|
|
25
|
+
/** Hand sign-off to someone else: they are notified and become the person who can approve. */
|
|
26
|
+
onRequestApproval?: (userId: string, note: string) => void;
|
|
27
|
+
/** People who can be asked (humans only). The action shows only when there is someone to ask. */
|
|
28
|
+
people?: {
|
|
29
|
+
id: string;
|
|
30
|
+
label: string;
|
|
31
|
+
}[];
|
|
32
|
+
/** Icon-only secondary buttons (for a table cell); they keep their accessible names. */
|
|
33
|
+
compact?: boolean;
|
|
34
|
+
/** Whether the viewer is the one who can approve (the sign-off person). Without it Approve is not offered. */
|
|
35
|
+
canApprove?: boolean;
|
|
36
|
+
/** Approve as an outline button, for a list where every row has one; the default is the one filled button. */
|
|
37
|
+
quiet?: boolean;
|
|
38
|
+
labels?: Partial<TaskReviewActionsLabels>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The human half of the workflow: accept prepared work (Approve closes the task), or send it back
|
|
42
|
+
* with feedback so the agent revises it in the task's own thread.
|
|
43
|
+
*/
|
|
44
|
+
export declare function TaskReviewActions({ id, busy, canRequestChanges, onApprove, onRequestChanges, onRequestApproval, people, compact, quiet, canApprove, labels, }: TaskReviewActionsProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type TaskListRow } from './taskRows';
|
|
2
|
+
import type { TaskStatusKey } from './taskLabels';
|
|
3
|
+
import type { TaskListLabels } from './taskTableLabels';
|
|
4
|
+
export interface TaskRowMenuProps {
|
|
5
|
+
task: TaskListRow;
|
|
6
|
+
status: TaskStatusKey;
|
|
7
|
+
busy: boolean;
|
|
8
|
+
/** The viewer owns the task: only they delete it, grant its agent access, or change who sees it. */
|
|
9
|
+
isOwner: boolean;
|
|
10
|
+
/** The viewer may change who sees it and delete it: its creator, or an owner of the workspace. */
|
|
11
|
+
canAdmin: boolean;
|
|
12
|
+
/** The viewer can edit it: its owner, or an editor of the workspace a shared task sits in. */
|
|
13
|
+
canEdit: boolean;
|
|
14
|
+
labels: TaskListLabels;
|
|
15
|
+
onMarkDone: () => void;
|
|
16
|
+
onReopen: () => void;
|
|
17
|
+
onAddSubtask?: () => void;
|
|
18
|
+
onEdit: () => void;
|
|
19
|
+
onDelete: () => void;
|
|
20
|
+
onMoveTo?: () => void;
|
|
21
|
+
/** Hand the task to someone else (who then has the next step). Tasks only. */
|
|
22
|
+
onChangeOwner?: () => void;
|
|
23
|
+
/** Open the task's activity timeline. */
|
|
24
|
+
onOpenActivity?: () => void;
|
|
25
|
+
/** Present only when a run is waiting for access. */
|
|
26
|
+
onGrantAccess?: () => void;
|
|
27
|
+
}
|
|
28
|
+
export declare function TaskRowMenu({ task, status, busy, isOwner, canAdmin, canEdit, labels, onMarkDone, onReopen, onAddSubtask, onEdit, onDelete, onMoveTo, onChangeOwner, onOpenActivity, onGrantAccess, }: TaskRowMenuProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface TaskStatusPillLabels {
|
|
2
|
+
waitingForAccess: string;
|
|
3
|
+
lastRunFailed: string;
|
|
4
|
+
/** The visible word beside the status when the last run failed. */
|
|
5
|
+
failed: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const DEFAULT_TASK_STATUS_PILL_LABELS: TaskStatusPillLabels;
|
|
8
|
+
export interface TaskStatusPillProps {
|
|
9
|
+
/** Task id: keys the test id (`task-status-{id}`). */
|
|
10
|
+
id: string;
|
|
11
|
+
status: string | null | undefined;
|
|
12
|
+
/** When the in-flight run started (ISO); a generating pill shows a live elapsed time. */
|
|
13
|
+
runStartedAt?: string | null;
|
|
14
|
+
/** The last run's error, shown as a danger dot with the message on hover. */
|
|
15
|
+
lastError?: string | null;
|
|
16
|
+
/** A run is waiting for the owner to grant workspace access. */
|
|
17
|
+
awaitingAccess?: boolean;
|
|
18
|
+
testId?: string;
|
|
19
|
+
labels?: Partial<TaskStatusPillLabels>;
|
|
20
|
+
/** Tooltip with the latest step ("Ready for review · 2 min ago · for You"). */
|
|
21
|
+
hint?: string;
|
|
22
|
+
}
|
|
23
|
+
/** A task's workflow status as one tinted pill: To do, Generating (live), Ready for review, Done. */
|
|
24
|
+
export declare function TaskStatusPill({ id, status, runStartedAt, lastError, awaitingAccess, testId, labels, hint, }: TaskStatusPillProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type TaskPerson } from './PersonPill';
|
|
3
|
+
import { type TaskOutput, type TaskOutputsCellLabels } from './TaskOutputsCell';
|
|
4
|
+
import { type TaskReviewActionsLabels } from './TaskReviewActions';
|
|
5
|
+
import { type TaskStatusPillLabels } from './TaskStatusPill';
|
|
6
|
+
import type { TaskThreadChipLabels } from './TaskThreadChip';
|
|
7
|
+
import { type TaskListRow } from './taskRows';
|
|
8
|
+
import { type TaskListLabels } from './taskTableLabels';
|
|
9
|
+
export interface TaskTableProps<T extends TaskListRow> {
|
|
10
|
+
/** The workspace's tasks: the conversations that have a status (the host drops plain chats). */
|
|
11
|
+
tasks: T[];
|
|
12
|
+
isLoading?: boolean;
|
|
13
|
+
/** Friendly display of an ISO timestamp. */
|
|
14
|
+
formatDate: (iso: string) => string;
|
|
15
|
+
/** Open the task's thread (its conversation). */
|
|
16
|
+
onOpenThread: (conversationId: string, task: T) => void;
|
|
17
|
+
/** A person marks a plain to-do done / reopens a finished one / accepts prepared work. */
|
|
18
|
+
onMarkDone: (task: T) => void;
|
|
19
|
+
onReopen: (task: T) => void;
|
|
20
|
+
onApprove: (task: T) => void;
|
|
21
|
+
onRequestChanges: (task: T, feedback: string) => void;
|
|
22
|
+
/** Ask another person to sign the task off (shown with `people`). */
|
|
23
|
+
onRequestApproval?: (task: T, userId: string, note: string) => void;
|
|
24
|
+
/** People who can be asked to approve (humans only); also names the sign-off column. */
|
|
25
|
+
people?: {
|
|
26
|
+
id: string;
|
|
27
|
+
label: string;
|
|
28
|
+
}[];
|
|
29
|
+
/** Agent names by id, for the Assigned to column (falls back to "Agent"). */
|
|
30
|
+
agentNames?: Record<string, string>;
|
|
31
|
+
/** Workflow names by id: names a task whose title the run has not generated yet, and its origin chip. */
|
|
32
|
+
workflowNames?: Record<string, string>;
|
|
33
|
+
/**
|
|
34
|
+
* How a person appears in the Assigned to and Sign-off columns. Defaults to the app's user pill from
|
|
35
|
+
* `@arbidocs/react`; a host with presence and direct messages passes its own.
|
|
36
|
+
*/
|
|
37
|
+
renderPerson?: (person: TaskPerson) => ReactNode;
|
|
38
|
+
/** Share a task with the workspace or make it private (the shared/private toggle appears with it). */
|
|
39
|
+
onToggleShared?: (task: T, shouldShare: boolean) => void;
|
|
40
|
+
onEdit: (task: T) => void;
|
|
41
|
+
onDelete: (task: T) => void;
|
|
42
|
+
/** Start a new task that is a child of this one. */
|
|
43
|
+
onAddSubtask?: (task: T) => void;
|
|
44
|
+
/** Re-parent a task (`null` = top level). With it, the row menu offers "Move to…". */
|
|
45
|
+
onMove?: (task: T, parentId: string | null) => void;
|
|
46
|
+
/** Bulk actions on the selected rows (the selection bar shows only the ones provided). */
|
|
47
|
+
onMarkDoneMany?: (tasks: T[]) => void;
|
|
48
|
+
onDeleteMany?: (tasks: T[]) => void;
|
|
49
|
+
/** When set, a run waiting for access shows a one-click "allow access" action. */
|
|
50
|
+
onGrantAccess?: (task: T) => void;
|
|
51
|
+
/** Task id with a request in flight: its row disables its actions. */
|
|
52
|
+
busyId?: string | null;
|
|
53
|
+
/** Slot above the table (e.g. a live-runs banner). */
|
|
54
|
+
header?: ReactNode;
|
|
55
|
+
/**
|
|
56
|
+
* Extra bulk actions for the selection bar (an export, a share): called with the selected tasks, whether
|
|
57
|
+
* the bar is compact, and a function that clears the selection.
|
|
58
|
+
*/
|
|
59
|
+
selectionActions?: (selected: T[], isCompact: boolean, clearSelection: () => void) => ReactNode;
|
|
60
|
+
/** Text from outside the table (a topbar filter) that narrows the rows like the search box does. */
|
|
61
|
+
filterText?: string;
|
|
62
|
+
/**
|
|
63
|
+
* The viewer edits the workspace (owner or collaborator): a row they do not own is always shared, and
|
|
64
|
+
* they may then edit, run, move and add sub-tasks to it. The share toggle, Delete and Allow access stay
|
|
65
|
+
* with the row's owner, and Approve with its sign-off person. A guest leaves this off and only reads.
|
|
66
|
+
*/
|
|
67
|
+
canEditShared?: boolean;
|
|
68
|
+
/** The viewer owns the workspace: with a row's creator, the only one who deletes it. Who can see it stays the creator's alone. */
|
|
69
|
+
isWorkspaceOwner?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Hand a task to someone: its owner (who has the next step) becomes `userId`, and they are notified;
|
|
72
|
+
* `null` hands it back to the viewer. Shown in the row menu as "Change owner…" with `people`.
|
|
73
|
+
*/
|
|
74
|
+
onChangeOwner?: (task: T, userId: string | null) => void;
|
|
75
|
+
/** Saved column state key (AG Grid persists by it). */
|
|
76
|
+
gridId?: string;
|
|
77
|
+
labels?: Partial<TaskListLabels>;
|
|
78
|
+
testId?: string;
|
|
79
|
+
statusPillLabels?: Partial<TaskStatusPillLabels>;
|
|
80
|
+
threadChipLabels?: Partial<TaskThreadChipLabels>;
|
|
81
|
+
/** Generated documents per task id (latest versions only); a task with none shows a dash. */
|
|
82
|
+
outputsByTask?: Record<string, readonly TaskOutput[]>;
|
|
83
|
+
/** Open one generated document (Tasks view's Outputs column). */
|
|
84
|
+
onOpenOutput?: (documentId: string, task: T) => void;
|
|
85
|
+
outputsLabels?: Partial<TaskOutputsCellLabels>;
|
|
86
|
+
/** Open a task's activity timeline (row menu: "Activity"). */
|
|
87
|
+
onOpenActivity?: (task: T) => void;
|
|
88
|
+
/** "2 min ago" for the status tooltip; without it the tooltip is left out. */
|
|
89
|
+
formatRelative?: (iso: string) => string;
|
|
90
|
+
reviewLabels?: Partial<TaskReviewActionsLabels>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The tasks of a workspace as a person's work list, in the same grid as every other list in the app:
|
|
94
|
+
* what needs review first, then what an agent is generating, plain to-dos and, last, what is done.
|
|
95
|
+
* Sub-tasks sit indented under their parent. Rows are selected with the grid's checkboxes (shift-click
|
|
96
|
+
* for a range; ticking a parent ticks its sub-tasks) and acted on from the selection bar. Agents prepare
|
|
97
|
+
* work; only a person closes it.
|
|
98
|
+
*/
|
|
99
|
+
export declare function TaskTable<T extends TaskListRow>(props: TaskTableProps<T>): import("react").JSX.Element;
|