@arbidocs/blocks 0.4.53 → 0.4.55
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 +218 -230
- package/dist/agents/index.js +2 -2
- package/dist/agents/tasks/NewThreadDialog.d.ts +4 -8
- package/dist/agents/tasks/TaskActivityTimeline.d.ts +2 -8
- package/dist/agents/tasks/TaskInbox.d.ts +1 -1
- package/dist/agents/tasks/TaskRowMenu.d.ts +1 -6
- package/dist/agents/tasks/TaskStartDialog.d.ts +1 -8
- package/dist/agents/tasks/TaskStatusPill.d.ts +2 -2
- package/dist/agents/tasks/TaskTable.d.ts +6 -17
- package/dist/agents/tasks/WorkflowComposer.d.ts +2 -2
- package/dist/agents/tasks/index.d.ts +1 -4
- package/dist/agents/tasks/taskColumns.d.ts +2 -2
- package/dist/agents/tasks/taskComposerTypes.d.ts +2 -15
- package/dist/agents/tasks/taskLabels.d.ts +5 -7
- package/dist/agents/tasks/taskRequest.d.ts +5 -7
- package/dist/agents/tasks/taskRows.d.ts +6 -10
- package/dist/agents/tasks/taskTableLabels.d.ts +2 -6
- package/dist/agents/tasks/workflowRows.d.ts +2 -2
- package/dist/chat/forward-scroll.d.ts +11 -0
- package/dist/chat/index.cjs +122 -122
- package/dist/chat/index.js +2 -2
- package/dist/{chunk-FVN2EWAV.cjs → chunk-5DM6VU4L.cjs} +52 -3
- package/dist/chunk-5DM6VU4L.cjs.map +1 -0
- package/dist/{chunk-2FBNT7Y6.js → chunk-BIAALPXI.js} +45 -611
- package/dist/chunk-BIAALPXI.js.map +1 -0
- package/dist/{chunk-553WJJIZ.cjs → chunk-BR2CPKFU.cjs} +4 -4
- package/dist/{chunk-553WJJIZ.cjs.map → chunk-BR2CPKFU.cjs.map} +1 -1
- package/dist/{chunk-QSVRKNPK.js → chunk-CW4WXGEN.js} +3 -3
- package/dist/{chunk-QSVRKNPK.js.map → chunk-CW4WXGEN.js.map} +1 -1
- package/dist/{chunk-CGNTPOWQ.js → chunk-DABEWNL2.js} +52 -3
- package/dist/chunk-DABEWNL2.js.map +1 -0
- package/dist/{chunk-SA2BVHQ5.cjs → chunk-WKNAFILY.cjs} +5 -5
- package/dist/{chunk-SA2BVHQ5.cjs.map → chunk-WKNAFILY.cjs.map} +1 -1
- package/dist/{chunk-E3NM576Y.js → chunk-ZQB7HNE6.js} +3 -3
- package/dist/{chunk-E3NM576Y.js.map → chunk-ZQB7HNE6.js.map} +1 -1
- package/dist/{chunk-5JEVPE7Y.cjs → chunk-ZSNH4CWE.cjs} +42 -611
- package/dist/chunk-ZSNH4CWE.cjs.map +1 -0
- package/dist/connect/index.cjs +12 -13
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +3 -4
- package/dist/connect/index.js.map +1 -1
- package/dist/index.cjs +341 -353
- package/dist/index.js +4 -4
- package/dist/studio/index.cjs +3 -3
- package/dist/studio/index.js +2 -2
- package/package.json +4 -4
- package/dist/agents/tasks/TaskReviewActions.d.ts +0 -44
- package/dist/agents/tasks/TaskReviewDialog.d.ts +0 -22
- package/dist/chunk-2FBNT7Y6.js.map +0 -1
- package/dist/chunk-5JEVPE7Y.cjs.map +0 -1
- package/dist/chunk-CGNTPOWQ.js.map +0 -1
- package/dist/chunk-FVN2EWAV.cjs.map +0 -1
package/dist/agents/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
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, 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_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,
|
|
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, 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_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_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, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildLaunch, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composeWorkflowPrompt, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultInputs, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, inputsFromContext, isAgenticWorkflow, isEmptyWorkflowScope, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isWorkflowScope, isoToLocalInput, localInputToIso, matchWorkflowScope, 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-BIAALPXI.js';
|
|
3
3
|
import '../chunk-P6GHJSLR.js';
|
|
4
|
+
import '../chunk-LFGJAZ5H.js';
|
|
4
5
|
import '../chunk-RFXJYIDV.js';
|
|
5
6
|
import '../chunk-BUHKUKKB.js';
|
|
6
|
-
import '../chunk-LFGJAZ5H.js';
|
|
7
7
|
import '../chunk-CKB64Z4R.js';
|
|
8
8
|
import '../chunk-DPLRHEJZ.js';
|
|
9
9
|
import '../chunk-YU2KUMGE.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TaskOption } from './taskComposerTypes';
|
|
2
2
|
import { type NewThreadValues } from './taskRequest';
|
|
3
3
|
export interface NewThreadDialogLabels {
|
|
4
4
|
title: string;
|
|
@@ -12,8 +12,6 @@ export interface NewThreadDialogLabels {
|
|
|
12
12
|
/** Under the prompt: which files the assistant can use. */
|
|
13
13
|
files: (count: number) => string;
|
|
14
14
|
taskDetailsHint: string;
|
|
15
|
-
owner: string;
|
|
16
|
-
ownerMe: string;
|
|
17
15
|
due: string;
|
|
18
16
|
dueNone: string;
|
|
19
17
|
dueClear: string;
|
|
@@ -33,8 +31,6 @@ export declare const DEFAULT_NEW_THREAD_DIALOG_LABELS: NewThreadDialogLabels;
|
|
|
33
31
|
export interface NewThreadDialogProps {
|
|
34
32
|
open: boolean;
|
|
35
33
|
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
34
|
/** Tasks this can be a sub-task of. Omit or leave empty to hide the field. */
|
|
39
35
|
tasks?: TaskOption[];
|
|
40
36
|
initialValues?: Partial<NewThreadValues>;
|
|
@@ -47,7 +43,7 @@ export interface NewThreadDialogProps {
|
|
|
47
43
|
}
|
|
48
44
|
/**
|
|
49
45
|
* "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 (
|
|
51
|
-
*
|
|
46
|
+
* workspace, by default); the title is made from the prompt. Every ask is a task: the details (due date,
|
|
47
|
+
* parent, a title of your own) are optional and folded away.
|
|
52
48
|
*/
|
|
53
|
-
export declare function NewThreadDialog({ open, onOpenChange,
|
|
49
|
+
export declare function NewThreadDialog({ open, onOpenChange, tasks, initialValues, fileCount, isPending, onSubmit, labels, testId, }: NewThreadDialogProps): import("react").JSX.Element;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
export type TaskActivityKind = 'created' | 'run_started' | 'awaiting_access' | 'access_granted' | '
|
|
2
|
+
export type TaskActivityKind = 'created' | 'run_started' | 'awaiting_access' | 'access_granted' | 'done' | 'reopened' | 'failed' | 'participant_joined' | 'assistant_responded' | 'assistant_stopped' | 'artifact_created' | 'artifact_edited' | 'document_added' | 'document_removed' | 'notified';
|
|
3
3
|
/** One event of a task's history, as the backend returns it (oldest first). */
|
|
4
4
|
export interface TaskActivityEvent {
|
|
5
5
|
external_id: string;
|
|
6
6
|
kind: TaskActivityKind;
|
|
7
7
|
actor_ext_id?: string | null;
|
|
8
|
+
/** Who a notification went to. */
|
|
8
9
|
to_ext_id?: string | null;
|
|
9
|
-
/** The feedback of a send-back, the message of a hand-off. */
|
|
10
|
-
note?: string | null;
|
|
11
10
|
/** `run_id`, `agent_ext_id`, `as_user`, `from_workflow`, `error`. */
|
|
12
11
|
detail?: Record<string, unknown> | null;
|
|
13
12
|
created_at: string;
|
|
@@ -24,14 +23,9 @@ export interface TaskActivityLabels {
|
|
|
24
23
|
runStartedBy: (agentName: string) => string;
|
|
25
24
|
awaitingAccess: string;
|
|
26
25
|
accessGranted: string;
|
|
27
|
-
readyForReview: string;
|
|
28
|
-
handedOff: string;
|
|
29
|
-
changesRequested: string;
|
|
30
26
|
done: string;
|
|
31
27
|
reopened: string;
|
|
32
28
|
failed: string;
|
|
33
|
-
handedOverNote: (note: string) => string;
|
|
34
|
-
sentBackNote: (note: string) => string;
|
|
35
29
|
failureLine: (error: string) => string;
|
|
36
30
|
/** The actor is not known (a system step). */
|
|
37
31
|
system: string;
|
|
@@ -17,7 +17,7 @@ export interface TaskInboxWorkflowActions {
|
|
|
17
17
|
onDeleteWorkflow?: (id: string) => void;
|
|
18
18
|
onWorkflowHistory?: (id: string) => void;
|
|
19
19
|
}
|
|
20
|
-
export interface TaskInboxProps<T extends TaskListRow> extends
|
|
20
|
+
export interface TaskInboxProps<T extends TaskListRow> extends TaskTableProps<T>, TaskInboxWorkflowActions {
|
|
21
21
|
onFilterTextChange?: (text: string) => void;
|
|
22
22
|
onCreate?: () => void;
|
|
23
23
|
onNotify?: (task: T) => void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
2
1
|
import { type TaskListRow } from './taskRows';
|
|
3
2
|
import type { TaskStatusKey } from './taskLabels';
|
|
4
3
|
import type { TaskListLabels } from './taskTableLabels';
|
|
@@ -25,15 +24,11 @@ export interface TaskRowMenuProps {
|
|
|
25
24
|
onEdit: () => void;
|
|
26
25
|
onDelete?: () => void;
|
|
27
26
|
onMoveTo?: () => void;
|
|
28
|
-
/** Hand the task to someone else (who then has the next step). Tasks only. */
|
|
29
|
-
onChangeOwner?: () => void;
|
|
30
27
|
onNotify?: () => void;
|
|
31
28
|
/** Open the task's activity timeline. */
|
|
32
29
|
onToggleShared?: () => void;
|
|
33
30
|
onOpenActivity?: () => void;
|
|
34
31
|
/** Present only when a run is waiting for access. */
|
|
35
32
|
onGrantAccess?: () => void;
|
|
36
|
-
/** Compact review controls shown inside the menu on narrow screens. */
|
|
37
|
-
reviewActions?: ReactNode | ((closeMenu: () => void) => ReactNode);
|
|
38
33
|
}
|
|
39
|
-
export declare function TaskRowMenu({ task, status, busy, isOwner, canAdmin, canEdit, labels, canMarkDone, canReopen, selected, onToggleSelected, onMarkDone, onReopen, onAddSubtask, onEdit, onDelete, onMoveTo,
|
|
34
|
+
export declare function TaskRowMenu({ task, status, busy, isOwner, canAdmin, canEdit, labels, canMarkDone, canReopen, selected, onToggleSelected, onMarkDone, onReopen, onAddSubtask, onEdit, onDelete, onMoveTo, onOpenActivity, onToggleShared, onGrantAccess, }: TaskRowMenuProps): import("react").JSX.Element;
|
|
@@ -6,8 +6,6 @@ export interface TaskStartValues {
|
|
|
6
6
|
shared: boolean;
|
|
7
7
|
/** The people @mentioned in the prompt. */
|
|
8
8
|
mentions: MessageMentionRef[];
|
|
9
|
-
/** A to-do for someone else; absent means it is for me. */
|
|
10
|
-
assigneeId?: string;
|
|
11
9
|
}
|
|
12
10
|
export interface TaskStartDialogProps {
|
|
13
11
|
open: boolean;
|
|
@@ -18,11 +16,6 @@ export interface TaskStartDialogProps {
|
|
|
18
16
|
}[];
|
|
19
17
|
/** Who can be @mentioned in the prompt: the workspace's people (the assistant is not one). */
|
|
20
18
|
people?: ReadonlyArray<MentionCandidate>;
|
|
21
|
-
/** Who a "Send to a person" to-do can be assigned to (workspace collaborators, not me). */
|
|
22
|
-
assignees?: ReadonlyArray<{
|
|
23
|
-
id: string;
|
|
24
|
-
label: string;
|
|
25
|
-
}>;
|
|
26
19
|
isPending?: boolean;
|
|
27
20
|
error?: string | null;
|
|
28
21
|
/** Replaces the start button's label (e.g. "Look again" while a started task's thread is late). */
|
|
@@ -31,4 +24,4 @@ export interface TaskStartDialogProps {
|
|
|
31
24
|
onLater: (values: TaskStartValues) => void;
|
|
32
25
|
}
|
|
33
26
|
/** One entry point: write a prompt, run a saved recipe, or keep a simple to-do. */
|
|
34
|
-
export declare function TaskStartDialog({ open, onOpenChange, workflows, people,
|
|
27
|
+
export declare function TaskStartDialog({ open, onOpenChange, workflows, people, isPending, error, startLabel, onStart, onLater, }: TaskStartDialogProps): import("react").JSX.Element;
|
|
@@ -17,8 +17,8 @@ export interface TaskStatusPillProps {
|
|
|
17
17
|
awaitingAccess?: boolean;
|
|
18
18
|
testId?: string;
|
|
19
19
|
labels?: Partial<TaskStatusPillLabels>;
|
|
20
|
-
/** Tooltip with the latest step ("
|
|
20
|
+
/** Tooltip with the latest step ("To do · 2 min ago"). */
|
|
21
21
|
hint?: string;
|
|
22
22
|
}
|
|
23
|
-
/** A task's workflow status as one tinted pill: To do, Generating (live),
|
|
23
|
+
/** A task's workflow status as one tinted pill: To do, Generating (live), Done. */
|
|
24
24
|
export declare function TaskStatusPill({ id, status, runStartedAt, lastError, awaitingAccess, testId, labels, hint, }: TaskStatusPillProps): import("react").JSX.Element;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import { type TaskPerson } from './PersonPill';
|
|
3
3
|
import { type TaskOutput, type TaskOutputsCellLabels } from './TaskOutputsCell';
|
|
4
|
-
import { type TaskReviewActionsLabels } from './TaskReviewActions';
|
|
5
4
|
import { type TaskStatusPillLabels } from './TaskStatusPill';
|
|
6
5
|
import type { TaskThreadChipLabels } from './TaskThreadChip';
|
|
7
6
|
import { type TaskListRow } from './taskRows';
|
|
@@ -14,14 +13,10 @@ export interface TaskTableProps<T extends TaskListRow> {
|
|
|
14
13
|
formatDate: (iso: string) => string;
|
|
15
14
|
/** Open the task's thread (its conversation). */
|
|
16
15
|
onOpenThread: (conversationId: string, task: T) => void;
|
|
17
|
-
/** A person marks a
|
|
16
|
+
/** A person marks a task done / reopens a finished one. */
|
|
18
17
|
onMarkDone: (task: T) => void;
|
|
19
18
|
onReopen: (task: T) => void;
|
|
20
|
-
|
|
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, approveCurrent?: boolean) => void;
|
|
24
|
-
/** People who can be asked to approve (humans only); also names the sign-off column. */
|
|
19
|
+
/** People in the workspace, by id: names the Owner column. */
|
|
25
20
|
people?: {
|
|
26
21
|
id: string;
|
|
27
22
|
label: string;
|
|
@@ -31,7 +26,7 @@ export interface TaskTableProps<T extends TaskListRow> {
|
|
|
31
26
|
/** Workflow names by id: names a task whose title the run has not generated yet, and its origin chip. */
|
|
32
27
|
workflowNames?: Record<string, string>;
|
|
33
28
|
/**
|
|
34
|
-
* How a person appears in the
|
|
29
|
+
* How a person appears in the Owner column. Defaults to the app's user pill from
|
|
35
30
|
* `@arbidocs/react`; a host with presence and direct messages passes its own.
|
|
36
31
|
*/
|
|
37
32
|
renderPerson?: (person: TaskPerson) => ReactNode;
|
|
@@ -61,17 +56,12 @@ export interface TaskTableProps<T extends TaskListRow> {
|
|
|
61
56
|
filterText?: string;
|
|
62
57
|
/**
|
|
63
58
|
* 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
|
|
65
|
-
* with the row's owner
|
|
59
|
+
* they may then edit, run, move, mark done and add sub-tasks to it. The share toggle, Delete and Allow
|
|
60
|
+
* access stay with the row's owner. A guest leaves this off and only reads.
|
|
66
61
|
*/
|
|
67
62
|
canEditShared?: boolean;
|
|
68
63
|
/** 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
64
|
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
65
|
/** Saved column state key (AG Grid persists by it). */
|
|
76
66
|
gridId?: string;
|
|
77
67
|
labels?: Partial<TaskListLabels>;
|
|
@@ -87,11 +77,10 @@ export interface TaskTableProps<T extends TaskListRow> {
|
|
|
87
77
|
onOpenActivity?: (task: T) => void;
|
|
88
78
|
/** "2 min ago" for the status tooltip; without it the tooltip is left out. */
|
|
89
79
|
formatRelative?: (iso: string) => string;
|
|
90
|
-
reviewLabels?: Partial<TaskReviewActionsLabels>;
|
|
91
80
|
}
|
|
92
81
|
/**
|
|
93
82
|
* The tasks of a workspace as a person's work list, in the same grid as every other list in the app:
|
|
94
|
-
* what
|
|
83
|
+
* what an agent is generating first, then to-dos and, last, what is done.
|
|
95
84
|
* Sub-tasks sit indented under their parent. Rows are selected with the grid's checkboxes (shift-click
|
|
96
85
|
* for a range; ticking a parent ticks its sub-tasks) and acted on from the selection bar. Agents prepare
|
|
97
86
|
* work; only a person closes it.
|
|
@@ -3,8 +3,8 @@ import { type TaskComposerProps } from './taskComposerTypes';
|
|
|
3
3
|
* The workflow dialog, where a skill is run: what it does, when it runs (Now by default, or on a date, a
|
|
4
4
|
* repeat, an event or after a task) and who runs it (the person, or an agent), up front and in that
|
|
5
5
|
* order, each saying in plain words what is missing. "Now" runs it at once and saves nothing; every
|
|
6
|
-
* other start saves a workflow, which needs an agent because nobody is present when it fires. The name, details,
|
|
6
|
+
* other start saves a workflow, which needs an agent because nobody is present when it fires. The name, details, visibility, plan and unattended
|
|
7
7
|
* access are optional and sit behind "More options". A blank name is derived from the template or the
|
|
8
8
|
* instruction and shown as the placeholder, so the Create button needs only the three required parts.
|
|
9
9
|
*/
|
|
10
|
-
export declare function WorkflowComposer({ open, onOpenChange, isEdit, saveOnly, hideRunLater, workflows, agents,
|
|
10
|
+
export declare function WorkflowComposer({ open, onOpenChange, isEdit, saveOnly, hideRunLater, workflows, agents, tasks, values: valuesProp, initialValues, onValuesChange, timezones, eventOptions, eventWorkflowOptions, goal, standingAccess, scopeSource, renderScope, renderDocuments, addFilesAction, onDropFiles, defaultAgentId, isPending, planDrafting, hasPlan, onSubmit, renderIcon, labels, formLabels, recurrence, testId, }: TaskComposerProps): import("react").JSX.Element;
|
|
@@ -27,14 +27,11 @@ export { compactThreadActivity, type CompactThreadActivity } from './compact-thr
|
|
|
27
27
|
export { TaskOutputsCell, DEFAULT_TASK_OUTPUTS_CELL_LABELS, type TaskOutput, type TaskOutputsCellProps, type TaskOutputsCellLabels, } from './TaskOutputsCell';
|
|
28
28
|
export { TaskThreadChip, DEFAULT_TASK_THREAD_CHIP_LABELS, type TaskThreadChipProps, type TaskThreadChipLabels, } from './TaskThreadChip';
|
|
29
29
|
export { TaskTriggerChip, DEFAULT_TASK_TRIGGER_CHIP_LABELS, type TaskTriggerChipProps, type TaskTriggerChipLabels, } from './TaskTriggerChip';
|
|
30
|
-
export { TaskReviewActions, DEFAULT_TASK_REVIEW_ACTIONS_LABELS, type TaskReviewActionsProps, type TaskReviewActionsLabels, } from './TaskReviewActions';
|
|
31
30
|
export { TaskRunsDialog, DEFAULT_TASK_RUNS_DIALOG_LABELS, type TaskRunsDialogProps, type TaskRunsDialogLabels, type TaskRunsDialogTestIds, type TaskRunView, } from './TaskRunsDialog';
|
|
32
31
|
export { TasksToolbar, DEFAULT_TASKS_CHROME_LABELS, type TasksChromeLabels, type TasksToolbarProps, WorkflowsToolbar, DEFAULT_WORKFLOWS_CHROME_LABELS, type WorkflowsChromeLabels, type WorkflowsToolbarProps, } from './TasksChrome';
|
|
33
|
-
export { TaskComposer, DEFAULT_TASK_COMPOSER_LABELS, defaultTaskComposerValues, type TaskComposerProps, type TaskComposerLabels, type TaskComposerValues, type TaskOption, type
|
|
32
|
+
export { TaskComposer, DEFAULT_TASK_COMPOSER_LABELS, defaultTaskComposerValues, type TaskComposerProps, type TaskComposerLabels, type TaskComposerValues, type TaskOption, type TaskWhen, type TaskAccessMode, type TaskAssignee, } from './TaskComposer';
|
|
34
33
|
export { authModeFor, workflowTaskFields, isAgenticWorkflow, createsWork, EMPTY_NEW_THREAD, hasTaskFields, newThreadToRequest, type NewThreadRequest, type NewThreadValues, deriveWorkflowName, firstWords, DERIVED_NAME_WORDS, composerToWorkRequest, composerToTaskQuery, inputDocumentIds, composerToWorkflowRequest, composerToWorkflowUpdate, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskToComposerValues, workflowToComposerValues, workflowWhen, taskNeedsAccess, isoToLocalInput, localInputToIso, type TaskAuthMode, type ComposerCreate, type TaskQuery, type ThreadQuery, type WorkflowTaskFields, type TaskRequestContext, type TaskValuesWorkflows, } from './taskRequest';
|
|
35
34
|
export { PillSelect, DEFAULT_PILL_SELECT_LABELS, type PillSelectProps, type PillSelectLabels, type PillOption, } from './PillSelect';
|
|
36
|
-
export { TaskReviewDialog } from './TaskReviewDialog';
|
|
37
|
-
export type { TaskReviewDecision, TaskReviewDialogProps } from './TaskReviewDialog';
|
|
38
35
|
export type { TaskInboxProps, TaskInboxWorkflow, TaskInboxWorkflowActions } from './TaskInbox';
|
|
39
36
|
export { ThreadNotifyDialog } from './ThreadNotifyDialog';
|
|
40
37
|
export { ConversationTurnSpeaker, type TurnSpeakerProfile } from './ConversationTurnSpeaker';
|
|
@@ -15,8 +15,8 @@ import type { ReactNode } from 'react';
|
|
|
15
15
|
import type { ColDef } from 'ag-grid-community';
|
|
16
16
|
import type { TaskGridRow, TaskListRow } from './taskRows';
|
|
17
17
|
import type { TaskListLabels } from './taskTableLabels';
|
|
18
|
-
/** The actions column's width:
|
|
19
|
-
export declare const ACTIONS_WIDTH =
|
|
18
|
+
/** The actions column's width: Allow access and the menu (the widest row). */
|
|
19
|
+
export declare const ACTIONS_WIDTH = 160;
|
|
20
20
|
export declare const TASK_COLUMN_ORDER: readonly ["name", "owner", "due", "status", "outputs", "shared", "actions"];
|
|
21
21
|
export type TaskColumnId = (typeof TASK_COLUMN_ORDER)[number];
|
|
22
22
|
export interface CreateTaskColumnsOptions<T extends TaskListRow> {
|
|
@@ -31,8 +31,6 @@ export interface TaskComposerValues {
|
|
|
31
31
|
afterTaskId: string;
|
|
32
32
|
/** The task this is a sub-task of (`con-…`); `''` = a top-level task. */
|
|
33
33
|
parentTaskId: string;
|
|
34
|
-
/** The person who signs the task off (`usr-…`); `''` = me. Always a human. */
|
|
35
|
-
signoffUserId: string;
|
|
36
34
|
/** Shared with the workspace's members (like a document); off keeps it private to its owner. */
|
|
37
35
|
shared: boolean;
|
|
38
36
|
/** What the task is, in the owner's words. */
|
|
@@ -43,7 +41,7 @@ export interface TaskComposerValues {
|
|
|
43
41
|
agentId: string;
|
|
44
42
|
/** The task's title. */
|
|
45
43
|
name: string;
|
|
46
|
-
/** The
|
|
44
|
+
/** The owner is always told when the assistant finishes; kept so hosts can map it. */
|
|
47
45
|
notifyOnComplete: boolean;
|
|
48
46
|
/** Only asked for tasks the assistant starts unattended. */
|
|
49
47
|
access: TaskAccessMode;
|
|
@@ -82,7 +80,7 @@ export interface TaskComposerLabels {
|
|
|
82
80
|
needRrule: string;
|
|
83
81
|
needEvent: string;
|
|
84
82
|
needAfterTask: string;
|
|
85
|
-
/** The "More options" disclosure (name, details,
|
|
83
|
+
/** The "More options" disclosure (name, details, visibility, plan, unattended access). */
|
|
86
84
|
moreOptions: string;
|
|
87
85
|
fewerOptions: string;
|
|
88
86
|
nameHint: string;
|
|
@@ -90,8 +88,6 @@ export interface TaskComposerLabels {
|
|
|
90
88
|
titlePlaceholder: string;
|
|
91
89
|
descriptionLabel: string;
|
|
92
90
|
descriptionPlaceholder: string;
|
|
93
|
-
signoff: string;
|
|
94
|
-
signoffMe: string;
|
|
95
91
|
due: string;
|
|
96
92
|
dueNone: string;
|
|
97
93
|
dueClear: string;
|
|
@@ -147,13 +143,6 @@ export interface TaskOption {
|
|
|
147
143
|
id: string;
|
|
148
144
|
name: string;
|
|
149
145
|
}
|
|
150
|
-
/** A person who can be asked to sign a task off. */
|
|
151
|
-
export interface PersonOption {
|
|
152
|
-
id: string;
|
|
153
|
-
label: string;
|
|
154
|
-
/** Small line after the name (e.g. their role). */
|
|
155
|
-
description?: string;
|
|
156
|
-
}
|
|
157
146
|
export interface TaskComposerProps {
|
|
158
147
|
open: boolean;
|
|
159
148
|
onOpenChange: (open: boolean) => void;
|
|
@@ -175,8 +164,6 @@ export interface TaskComposerProps {
|
|
|
175
164
|
/** Workflows the assistant can run. The host includes its "my own instruction" entry. */
|
|
176
165
|
workflows: WorkflowDefinition[];
|
|
177
166
|
agents: AgentOption[];
|
|
178
|
-
/** People who can sign a task off (humans who can edit the workspace, besides me). Omit to hide the field. */
|
|
179
|
-
people?: PersonOption[];
|
|
180
167
|
/** Tasks a new task can be part of, or wait on (`when: 'task'`) — conversations with a status. */
|
|
181
168
|
tasks?: TaskOption[];
|
|
182
169
|
/**
|
|
@@ -5,18 +5,16 @@ import type { Tone } from '../../components/tones';
|
|
|
5
5
|
*/
|
|
6
6
|
export type WorkflowTriggerType = 'one_time' | 'recurring' | 'event' | 'after' | 'on_demand';
|
|
7
7
|
/**
|
|
8
|
-
* Where a task (a conversation with a status) is
|
|
9
|
-
*
|
|
10
|
-
* - `todo`: nothing automated pending.
|
|
8
|
+
* Where a task (a conversation with a status) is. Agents do the work; only a person marks it `done`.
|
|
9
|
+
* - `todo`: open, nothing automated pending (a finished run leaves the task here).
|
|
11
10
|
* - `generating`: an agent run is in flight.
|
|
12
|
-
* - `
|
|
13
|
-
* - `done`: a person accepted it.
|
|
11
|
+
* - `done`: a person marked it done.
|
|
14
12
|
* - `chat`: no status at all: a plain conversation, listed beside the tasks.
|
|
15
13
|
*/
|
|
16
|
-
export type TaskStatusKey = 'todo' | 'generating' | '
|
|
14
|
+
export type TaskStatusKey = 'todo' | 'generating' | 'done' | 'chat';
|
|
17
15
|
export declare const TRIGGER_LABELS: Record<WorkflowTriggerType, string>;
|
|
18
16
|
export declare const STATUS_LABELS: Record<TaskStatusKey, string>;
|
|
19
|
-
/** The order sections appear in the list:
|
|
17
|
+
/** The order sections appear in the list: work in progress first, finished work last. */
|
|
20
18
|
export declare const STATUS_ORDER: readonly TaskStatusKey[];
|
|
21
19
|
export declare const STATUS_TONE: Record<TaskStatusKey, Tone>;
|
|
22
20
|
/**
|
|
@@ -80,7 +80,7 @@ export declare const createsWork: (values: Pick<TaskComposerValues, "assignee" |
|
|
|
80
80
|
export declare function composerToWorkRequest({ workflow, values, plan, documentTitles }: TaskRequestContext, workspaceId: string | undefined): CreateWorkRequest;
|
|
81
81
|
/**
|
|
82
82
|
* Run now is a plain assistant query that carries `task` options: the thread it starts becomes a task
|
|
83
|
-
* (generating, then
|
|
83
|
+
* (generating, then open again). The query is the person's own run, so there is no agent and no
|
|
84
84
|
* access tier. The host turns this into a `POST /v1/responses` body.
|
|
85
85
|
*/
|
|
86
86
|
export interface TaskQuery {
|
|
@@ -124,8 +124,8 @@ export type ComposerCreate = {
|
|
|
124
124
|
*/
|
|
125
125
|
export declare function taskComposerToCreateRequest(ctx: TaskRequestContext, workspaceId: string | undefined, forceWorkflow?: boolean): ComposerCreate;
|
|
126
126
|
/**
|
|
127
|
-
* The patch for editing a task (`PATCH /v1/conversation/{id}`): title, description, due date,
|
|
128
|
-
*
|
|
127
|
+
* The patch for editing a task (`PATCH /v1/conversation/{id}`): title, description, due date, parent
|
|
128
|
+
* (`null` detaches) and sharing. What the agent was told to do stays as created.
|
|
129
129
|
*/
|
|
130
130
|
export declare function taskComposerToUpdateRequest({ values, plan, }: TaskRequestContext): UpdateConversationRequest;
|
|
131
131
|
/** The patch for editing a workflow: name, trigger (the other triggers are cleared) and action. */
|
|
@@ -154,8 +154,6 @@ export interface NewThreadValues {
|
|
|
154
154
|
title: string;
|
|
155
155
|
/** Shared with the workspace's members (the default), or private to its creator. */
|
|
156
156
|
shared: boolean;
|
|
157
|
-
/** The person who has the next step (`usr-…`); `''` = me. A task field. */
|
|
158
|
-
ownerId: string;
|
|
159
157
|
/** datetime-local value; empty = none. A task field. */
|
|
160
158
|
dueAt: string;
|
|
161
159
|
/** The task this is a sub-task of (`con-…`); `''` = none. A task field. */
|
|
@@ -182,8 +180,8 @@ export interface NewThreadRequest {
|
|
|
182
180
|
/** The first line of a prompt, kept to a title's length. */
|
|
183
181
|
export declare function titleFromPrompt(prompt: string, max?: number): string;
|
|
184
182
|
/**
|
|
185
|
-
* The request for a New task submission. Every ask is a task, so the options always ride along; the
|
|
186
|
-
*
|
|
183
|
+
* The request for a New task submission. Every ask is a task, so the options always ride along; the due
|
|
184
|
+
* date and parent are only set when filled in. The title is only sent when the person wrote one;
|
|
187
185
|
* otherwise the server names the task from the prompt. With the assistant switched off nothing is run: it
|
|
188
186
|
* is a to-do.
|
|
189
187
|
*/
|
|
@@ -15,7 +15,7 @@ export interface TaskListRow {
|
|
|
15
15
|
/** The conversation title; null until a run (which holds the key) names it. */
|
|
16
16
|
title?: string | null;
|
|
17
17
|
description?: string | null;
|
|
18
|
-
/** `todo | generating |
|
|
18
|
+
/** `todo | generating | done`; null for a plain chat. */
|
|
19
19
|
status?: string | null;
|
|
20
20
|
in_progress?: boolean | null;
|
|
21
21
|
run_started_at?: string | null;
|
|
@@ -26,7 +26,7 @@ export interface TaskListRow {
|
|
|
26
26
|
goal_state?: unknown;
|
|
27
27
|
/** Shared with the workspace's members (false = private to its owner). */
|
|
28
28
|
is_shared?: boolean | null;
|
|
29
|
-
/** False for a teammate's shared task: they can finish it, but not run,
|
|
29
|
+
/** False for a teammate's shared task: they can finish it, but not run, share or delete it. */
|
|
30
30
|
is_owner?: boolean | null;
|
|
31
31
|
/** The person who created the task (it is assigned to them when no agent works on it). */
|
|
32
32
|
owner_ext_id?: string | null;
|
|
@@ -39,21 +39,17 @@ export interface TaskListRow {
|
|
|
39
39
|
/** Work for the default assistant need not have a named agent. */
|
|
40
40
|
has_agent_action?: boolean;
|
|
41
41
|
skill_ref?: string | null;
|
|
42
|
-
/** The person who signs the task off; `can_signoff` is true when that is the viewer. */
|
|
43
|
-
signoff_ext_id?: string | null;
|
|
44
|
-
can_signoff?: boolean | null;
|
|
45
42
|
/** Who started the thread. */
|
|
46
43
|
created_by_ext_id?: string | null;
|
|
47
44
|
message_count?: number | null;
|
|
48
45
|
updated_at?: string | null;
|
|
49
46
|
}
|
|
50
47
|
/**
|
|
51
|
-
* Who
|
|
52
|
-
*
|
|
53
|
-
* the agent that did the work.
|
|
48
|
+
* Who owns a task: the person who created it (never the agent that did the work). They are notified
|
|
49
|
+
* when its run finishes.
|
|
54
50
|
*/
|
|
55
51
|
export declare const ownerExtId: (task: TaskListRow) => string | null;
|
|
56
|
-
/** A plain to-do (no agent, no skill): a person marks it done
|
|
52
|
+
/** A plain to-do (no agent, no skill): nothing to run, a person just marks it done. */
|
|
57
53
|
export declare const isPlainTodo: (task: TaskListRow) => boolean;
|
|
58
54
|
export type TaskFilter = 'all' | TaskStatusKey;
|
|
59
55
|
/** One line of the table: a task, how deep it sits under its parent and what its children add up to. */
|
|
@@ -101,7 +97,7 @@ export interface BuildTaskRowsOptions<T extends TaskListRow> {
|
|
|
101
97
|
}
|
|
102
98
|
/**
|
|
103
99
|
* The table's lines, in order. The full view is the sub-task forest grouped by the status of each root
|
|
104
|
-
* (what
|
|
100
|
+
* (what an agent is generating first, then to-dos, and finally what is done). A
|
|
105
101
|
* status filter or a search keeps every match together with its ancestors, which show as `context`
|
|
106
102
|
* rows rather than leaving their children orphaned. A task whose parent is not in the list (not
|
|
107
103
|
* visible, or deleted) is top-level, and a collapsed task hides its sub-tasks.
|
|
@@ -11,9 +11,6 @@ export interface TaskListLabels {
|
|
|
11
11
|
colOwner: string;
|
|
12
12
|
ownerHint: string;
|
|
13
13
|
colOutputs: string;
|
|
14
|
-
changeOwner: string;
|
|
15
|
-
changeOwnerTitle: (taskName: string) => string;
|
|
16
|
-
changeOwnerMe: string;
|
|
17
14
|
preparedBy: (agentName: string) => string;
|
|
18
15
|
colDue: string;
|
|
19
16
|
colStatus: string;
|
|
@@ -35,7 +32,6 @@ export interface TaskListLabels {
|
|
|
35
32
|
markDoneMany: string;
|
|
36
33
|
markDoneManyHint: string;
|
|
37
34
|
deleteMany: string;
|
|
38
|
-
approve: string;
|
|
39
35
|
moveTo: string;
|
|
40
36
|
untitled: string;
|
|
41
37
|
fromWorkflow: (workflowName: string) => string;
|
|
@@ -57,8 +53,8 @@ export interface TaskListLabels {
|
|
|
57
53
|
allowAccess: string;
|
|
58
54
|
moreActions: string;
|
|
59
55
|
activity: string;
|
|
60
|
-
/** Status tooltip: the latest step
|
|
61
|
-
statusHint: (status: string, ago: string
|
|
56
|
+
/** Status tooltip: the latest step and how long ago. */
|
|
57
|
+
statusHint: (status: string, ago: string) => string;
|
|
62
58
|
status: Partial<Record<TaskStatusKey, string>>;
|
|
63
59
|
}
|
|
64
60
|
export declare const DEFAULT_TASK_LIST_LABELS: TaskListLabels;
|
|
@@ -50,7 +50,7 @@ export declare function workflowTriggerType(workflow: WorkflowListRow): Workflow
|
|
|
50
50
|
export declare function workflowRunStatusLabel(status?: string | null): string;
|
|
51
51
|
/**
|
|
52
52
|
* The result to list for an automation: its stored run status corrected by the state of the thread
|
|
53
|
-
* its last run produced. The stored status lags the thread: it can still say "running"
|
|
54
|
-
* thread
|
|
53
|
+
* its last run produced. The stored status lags the thread: it can still say "running" once the
|
|
54
|
+
* thread is done.
|
|
55
55
|
*/
|
|
56
56
|
export declare function listedRunStatus(status?: string | null, threadStatus?: string | null): string | null | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type TouchEvent, type WheelEvent } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Handlers for a panel that floats over the thread (portaled out of it, like the steps panel): a
|
|
4
|
+
* wheel or swipe the panel cannot use itself scrolls the thread underneath, as it would over any
|
|
5
|
+
* other part of the thread, instead of being swallowed by the panel.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useForwardScrollToThread(getThread: () => HTMLElement | null | undefined): {
|
|
8
|
+
onWheel: (event: WheelEvent<HTMLElement>) => void;
|
|
9
|
+
onTouchStart: (event: TouchEvent<HTMLElement>) => void;
|
|
10
|
+
onTouchMove: (event: TouchEvent<HTMLElement>) => void;
|
|
11
|
+
};
|