@arbidocs/blocks 0.5.96 → 0.5.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/{ConnectedCallDock-D4DG4VDA.cjs → ConnectedCallDock-HI2KMQZ3.cjs} +12 -12
- package/dist/{ConnectedCallDock-D4DG4VDA.cjs.map → ConnectedCallDock-HI2KMQZ3.cjs.map} +1 -1
- package/dist/{ConnectedCallDock-VVZUSFFK.js → ConnectedCallDock-Y64FTKFF.js} +11 -11
- package/dist/{ConnectedCallDock-VVZUSFFK.js.map → ConnectedCallDock-Y64FTKFF.js.map} +1 -1
- package/dist/{ConnectedCallRoom-EDHNAJHA.js → ConnectedCallRoom-LEBIJGFT.js} +11 -11
- package/dist/{ConnectedCallRoom-EDHNAJHA.js.map → ConnectedCallRoom-LEBIJGFT.js.map} +1 -1
- package/dist/{ConnectedCallRoom-VDQD25QW.cjs → ConnectedCallRoom-UXIJJKNG.cjs} +12 -12
- package/dist/{ConnectedCallRoom-VDQD25QW.cjs.map → ConnectedCallRoom-UXIJJKNG.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-IS27M6FV.js → ConnectedNativeDocxComparison-6KL5XI3L.js} +10 -10
- package/dist/{ConnectedNativeDocxComparison-IS27M6FV.js.map → ConnectedNativeDocxComparison-6KL5XI3L.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-ADQURGHU.cjs → ConnectedNativeDocxComparison-P346QOX5.cjs} +11 -11
- package/dist/{ConnectedNativeDocxComparison-ADQURGHU.cjs.map → ConnectedNativeDocxComparison-P346QOX5.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-7EQ6DE3Q.cjs → ConnectedNativeDocxEditor-7JHSQ6KI.cjs} +11 -11
- package/dist/{ConnectedNativeDocxEditor-7EQ6DE3Q.cjs.map → ConnectedNativeDocxEditor-7JHSQ6KI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-JYXGX55F.js → ConnectedNativeDocxEditor-ATZ2TG2L.js} +9 -9
- package/dist/{ConnectedNativeDocxEditor-JYXGX55F.js.map → ConnectedNativeDocxEditor-ATZ2TG2L.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-IYAQ2L7G.cjs → ConnectedStreamedWordArtifact-5HI3WSAJ.cjs} +11 -11
- package/dist/ConnectedStreamedWordArtifact-5HI3WSAJ.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-KLLG6W5L.js → ConnectedStreamedWordArtifact-FHSGQHXQ.js} +10 -10
- package/dist/ConnectedStreamedWordArtifact-FHSGQHXQ.js.map +1 -0
- package/dist/{DocumentReviewCard-FEVDNY6U.js → DocumentReviewCard-7UFQGDOG.js} +6 -6
- package/dist/{DocumentReviewCard-FEVDNY6U.js.map → DocumentReviewCard-7UFQGDOG.js.map} +1 -1
- package/dist/{DocumentReviewCard-3H66FMMO.cjs → DocumentReviewCard-E3HB3K2G.cjs} +6 -6
- package/dist/{DocumentReviewCard-3H66FMMO.cjs.map → DocumentReviewCard-E3HB3K2G.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-DSK5HMLL.cjs → FilesViewerDialog-3KWTQARB.cjs} +12 -12
- package/dist/{FilesViewerDialog-DSK5HMLL.cjs.map → FilesViewerDialog-3KWTQARB.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-HL4E57K5.js → FilesViewerDialog-EQKBFAWI.js} +10 -10
- package/dist/{FilesViewerDialog-HL4E57K5.js.map → FilesViewerDialog-EQKBFAWI.js.map} +1 -1
- package/dist/{WorkspaceTableView-X3KZ7YFI.js → WorkspaceTableView-DYABS53K.js} +6 -6
- package/dist/{WorkspaceTableView-X3KZ7YFI.js.map → WorkspaceTableView-DYABS53K.js.map} +1 -1
- package/dist/{WorkspaceTableView-5DWNJN6J.cjs → WorkspaceTableView-ZIQ7JWT5.cjs} +8 -8
- package/dist/{WorkspaceTableView-5DWNJN6J.cjs.map → WorkspaceTableView-ZIQ7JWT5.cjs.map} +1 -1
- package/dist/agents/index.cjs +255 -255
- package/dist/agents/index.js +5 -5
- package/dist/agents/workflows/WorkflowStepAction.d.ts +9 -2
- package/dist/agents/workflows/requiredLabels.d.ts +7 -2
- package/dist/calls/index.cjs +2 -2
- package/dist/calls/index.js +2 -2
- package/dist/{chunk-VSZPY4LK.js → chunk-42IVGYNL.js} +5 -5
- package/dist/{chunk-VSZPY4LK.js.map → chunk-42IVGYNL.js.map} +1 -1
- package/dist/{chunk-GEUP5IV7.js → chunk-4LTDELP2.js} +3 -3
- package/dist/{chunk-GEUP5IV7.js.map → chunk-4LTDELP2.js.map} +1 -1
- package/dist/{chunk-HA27RMKD.js → chunk-4RCLA52C.js} +7 -7
- package/dist/{chunk-HA27RMKD.js.map → chunk-4RCLA52C.js.map} +1 -1
- package/dist/{chunk-6NMLRGUJ.cjs → chunk-6IS3IRUF.cjs} +4 -4
- package/dist/{chunk-6NMLRGUJ.cjs.map → chunk-6IS3IRUF.cjs.map} +1 -1
- package/dist/{chunk-KQUFEMPP.js → chunk-76O7J6IZ.js} +3 -3
- package/dist/{chunk-KQUFEMPP.js.map → chunk-76O7J6IZ.js.map} +1 -1
- package/dist/{chunk-5YIUHRTR.cjs → chunk-AINS6VU6.cjs} +4 -4
- package/dist/{chunk-5YIUHRTR.cjs.map → chunk-AINS6VU6.cjs.map} +1 -1
- package/dist/{chunk-ZA3ZELSH.cjs → chunk-CCALU47C.cjs} +5 -5
- package/dist/{chunk-ZA3ZELSH.cjs.map → chunk-CCALU47C.cjs.map} +1 -1
- package/dist/{chunk-BAJNXRI5.cjs → chunk-DDIV3MYQ.cjs} +5 -5
- package/dist/{chunk-BAJNXRI5.cjs.map → chunk-DDIV3MYQ.cjs.map} +1 -1
- package/dist/{chunk-ZJ3NII4U.cjs → chunk-ECCV4YOL.cjs} +9 -9
- package/dist/{chunk-ZJ3NII4U.cjs.map → chunk-ECCV4YOL.cjs.map} +1 -1
- package/dist/{chunk-S2CKH2LH.js → chunk-FNGFSHVE.js} +3 -3
- package/dist/{chunk-S2CKH2LH.js.map → chunk-FNGFSHVE.js.map} +1 -1
- package/dist/{chunk-CMMFXSTS.cjs → chunk-HXWBXYVN.cjs} +3 -3
- package/dist/{chunk-CMMFXSTS.cjs.map → chunk-HXWBXYVN.cjs.map} +1 -1
- package/dist/{chunk-NRE7ZR6M.js → chunk-ITK7GW7B.js} +3 -3
- package/dist/{chunk-NRE7ZR6M.js.map → chunk-ITK7GW7B.js.map} +1 -1
- package/dist/{chunk-FAKRTCAL.cjs → chunk-J4CXF4A7.cjs} +172 -14
- package/dist/chunk-J4CXF4A7.cjs.map +1 -0
- package/dist/{chunk-AS3HX7LL.js → chunk-K6UKLIRR.js} +3 -3
- package/dist/{chunk-AS3HX7LL.js.map → chunk-K6UKLIRR.js.map} +1 -1
- package/dist/{chunk-RMJNCYPD.js → chunk-KJLHFS7T.js} +3 -3
- package/dist/{chunk-RMJNCYPD.js.map → chunk-KJLHFS7T.js.map} +1 -1
- package/dist/{chunk-4DRLOAVD.js → chunk-LZI4EGOW.js} +209 -56
- package/dist/chunk-LZI4EGOW.js.map +1 -0
- package/dist/{chunk-6OXR4R6J.cjs → chunk-MMSHLHTA.cjs} +3 -3
- package/dist/{chunk-6OXR4R6J.cjs.map → chunk-MMSHLHTA.cjs.map} +1 -1
- package/dist/{chunk-VEK64VEE.js → chunk-N77UYRV7.js} +3 -3
- package/dist/{chunk-VEK64VEE.js.map → chunk-N77UYRV7.js.map} +1 -1
- package/dist/{chunk-64KZM3RZ.cjs → chunk-NZQZ2HFU.cjs} +3 -3
- package/dist/{chunk-64KZM3RZ.cjs.map → chunk-NZQZ2HFU.cjs.map} +1 -1
- package/dist/{chunk-7XVQATK2.cjs → chunk-OXHAUVK2.cjs} +3 -3
- package/dist/{chunk-7XVQATK2.cjs.map → chunk-OXHAUVK2.cjs.map} +1 -1
- package/dist/{chunk-YIKE2IY4.js → chunk-QSBPOYWA.js} +3 -3
- package/dist/{chunk-YIKE2IY4.js.map → chunk-QSBPOYWA.js.map} +1 -1
- package/dist/{chunk-NCGJKKGR.js → chunk-RQW2CFOQ.js} +9 -9
- package/dist/{chunk-NCGJKKGR.js.map → chunk-RQW2CFOQ.js.map} +1 -1
- package/dist/{chunk-DCNBNLWC.js → chunk-RZG4ALKZ.js} +4 -4
- package/dist/{chunk-DCNBNLWC.js.map → chunk-RZG4ALKZ.js.map} +1 -1
- package/dist/{chunk-O2ATVRRO.cjs → chunk-SDXK2COQ.cjs} +27 -27
- package/dist/{chunk-O2ATVRRO.cjs.map → chunk-SDXK2COQ.cjs.map} +1 -1
- package/dist/{chunk-CVYFX7AD.js → chunk-SEBNGA3F.js} +31 -15
- package/dist/chunk-SEBNGA3F.js.map +1 -0
- package/dist/{chunk-ZBQTFA5X.cjs → chunk-SYWJNSPS.cjs} +4 -4
- package/dist/{chunk-ZBQTFA5X.cjs.map → chunk-SYWJNSPS.cjs.map} +1 -1
- package/dist/{chunk-2JXJE7Y4.js → chunk-T7LLYVOW.js} +168 -10
- package/dist/chunk-T7LLYVOW.js.map +1 -0
- package/dist/{chunk-TANZTMPL.cjs → chunk-V2CNHRLZ.cjs} +4 -4
- package/dist/{chunk-TANZTMPL.cjs.map → chunk-V2CNHRLZ.cjs.map} +1 -1
- package/dist/{chunk-IMFE6FKN.cjs → chunk-WN7XPEYK.cjs} +7 -7
- package/dist/{chunk-IMFE6FKN.cjs.map → chunk-WN7XPEYK.cjs.map} +1 -1
- package/dist/{chunk-KVKKVSBT.cjs → chunk-XM4KRGCK.cjs} +252 -99
- package/dist/chunk-XM4KRGCK.cjs.map +1 -0
- package/dist/{chunk-MB2OXZEA.cjs → chunk-XTCNETMI.cjs} +4 -4
- package/dist/{chunk-MB2OXZEA.cjs.map → chunk-XTCNETMI.cjs.map} +1 -1
- package/dist/{chunk-4HMJQ66B.js → chunk-Y7UHKEVT.js} +4 -4
- package/dist/{chunk-4HMJQ66B.js.map → chunk-Y7UHKEVT.js.map} +1 -1
- package/dist/{chunk-CIXA5A65.cjs → chunk-YZ6YOOTF.cjs} +30 -14
- package/dist/chunk-YZ6YOOTF.cjs.map +1 -0
- package/dist/{chunk-QJVDQAYQ.js → chunk-Z4IPTLRS.js} +3 -3
- package/dist/{chunk-QJVDQAYQ.js.map → chunk-Z4IPTLRS.js.map} +1 -1
- package/dist/collaboration/index.cjs +1 -1
- package/dist/collaboration/index.js +1 -1
- package/dist/connect/docx.cjs +14 -14
- package/dist/connect/docx.js +10 -10
- package/dist/connect/index.cjs +680 -677
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +43 -40
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +9 -9
- package/dist/connect/viewer.js +8 -8
- package/dist/connection/workflows/ConnectedWorkflowRunPage.d.ts +4 -3
- package/dist/connection/workflows/WorkflowRunPage.d.ts +18 -15
- package/dist/connection/workflows/index.d.ts +2 -1
- package/dist/connection/workflows/runProject.d.ts +47 -0
- package/dist/dashboards/index.cjs +1 -1
- package/dist/dashboards/index.js +1 -1
- package/dist/embed/index.cjs +19 -19
- package/dist/embed/index.js +13 -13
- package/dist/index.cjs +383 -383
- package/dist/index.js +12 -12
- package/dist/settings/index.cjs +151 -151
- package/dist/settings/index.js +2 -2
- package/dist/shell/index.cjs +33 -33
- package/dist/shell/index.js +3 -3
- package/dist/studio/index.cjs +5 -5
- package/dist/studio/index.js +4 -4
- package/dist/workflow-canvas/index.cjs +32 -32
- package/dist/workflow-canvas/index.js +17 -17
- package/dist/workspaces/index.cjs +8 -8
- package/dist/workspaces/index.js +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-IYAQ2L7G.cjs.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-KLLG6W5L.js.map +0 -1
- package/dist/chunk-2JXJE7Y4.js.map +0 -1
- package/dist/chunk-4DRLOAVD.js.map +0 -1
- package/dist/chunk-CIXA5A65.cjs.map +0 -1
- package/dist/chunk-CVYFX7AD.js.map +0 -1
- package/dist/chunk-FAKRTCAL.cjs.map +0 -1
- package/dist/chunk-KVKKVSBT.cjs.map +0 -1
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { ProjectOptionRow, ProjectPicker } from './chunk-
|
|
2
|
+
import { ProjectOptionRow, ProjectPicker } from './chunk-SEBNGA3F.js';
|
|
3
3
|
import { workspaceGroupStats, isAgentAccount, workspaceConversationCount, workspaceDocumentCount } from './chunk-57CG33XJ.js';
|
|
4
|
-
import { useConnectedThreadActivity, useSelectWorkspace } from './chunk-
|
|
4
|
+
import { useConnectedThreadActivity, useSelectWorkspace } from './chunk-Y7UHKEVT.js';
|
|
5
5
|
import { DocumentUser } from './chunk-5T5CM7UC.js';
|
|
6
|
-
import { useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, useConnectedWorkspaceRole, ConnectedNativeDocxEditor } from './chunk-
|
|
6
|
+
import { useConnectedWorkflowScopeSource, ConnectedWorkflowDocumentsField, useConnectedWorkspaceRole, ConnectedNativeDocxEditor } from './chunk-42IVGYNL.js';
|
|
7
7
|
import { useOpenWorkflow } from './chunk-K2U5BCQ2.js';
|
|
8
|
-
import { RenameDialog } from './chunk-
|
|
8
|
+
import { RenameDialog } from './chunk-N77UYRV7.js';
|
|
9
9
|
import { SignDocumentDialog } from './chunk-2YOVK524.js';
|
|
10
10
|
import { ThreadFollowMenuItem } from './chunk-66NMPTOH.js';
|
|
11
11
|
import { PageHeader } from './chunk-XCVLUXFP.js';
|
|
12
|
-
import { useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, renderWorkflowIcon, TaskPlan, TaskRunsDialog, TaskActivityDialog, WorkflowThreadStartedBy, matchRequiredLabels, requiredLabelsOf, withLabelIds, WorkflowStepBar, WorkflowThreadStrip, WorkflowStepAction, WorkflowRunner, useWorkflowView } from './chunk-
|
|
12
|
+
import { useWorkflowUsage, WEB_WORKFLOWS, DASHBOARD_PINNED, CUSTOM_TASK, REMIND_TASK, DASHBOARD_OPERATIONS, sortByRecentUse, taskComposerToCreateRequest, taskComposerToUpdateRequest, composerToWorkflowUpdate, moveTargets, workflowToComposerValues, REMIND_TASK_ID, CUSTOM_TASK_ID, taskToComposerValues, TaskComposer, renderWorkflowIcon, TaskPlan, TaskRunsDialog, TaskActivityDialog, WorkflowThreadStartedBy, matchRequiredLabels, requiredLabelsOf, withLabelIds, WorkflowStepBar, WorkflowThreadStrip, WorkflowStepAction, WorkflowRunner, useWorkflowView } from './chunk-T7LLYVOW.js';
|
|
13
13
|
import { AUTOMATION_EVENTS, fromPlanSteps, TaskFlow, toPlanSteps } from './chunk-RIBQCTBQ.js';
|
|
14
|
-
import { PersonPill } from './chunk-
|
|
14
|
+
import { PersonPill, SchemaForm } from './chunk-RZG4ALKZ.js';
|
|
15
15
|
import { listTimeZones, detectTimeZone } from './chunk-OJIX5NBN.js';
|
|
16
|
+
import { useDocumentFilter } from './chunk-CCUXCN4M.js';
|
|
17
|
+
import { useConnectedWorkspace } from './chunk-JVJOIZNN.js';
|
|
16
18
|
import { useOpenCitation } from './chunk-K57LFBUW.js';
|
|
17
19
|
import { ChatPage } from './chunk-GWAL6O7B.js';
|
|
18
20
|
import { stepDocuments, stepKindOf } from './chunk-U6C4R6J4.js';
|
|
19
21
|
import { stepStatesFromActivity, splitDocRef, stepLevels, canAssign, assigneeName, runFieldsOf, initialRunInputs, workflowSteps, runThreadTitle, stepFields } from './chunk-MMSBCSGH.js';
|
|
20
|
-
import { mergeSkillWorkflows } from './chunk-YQPI7SRN.js';
|
|
22
|
+
import { mergeSkillWorkflows, defaultInputs, validateInputs } from './chunk-YQPI7SRN.js';
|
|
21
23
|
import { fmtDate } from './chunk-X5YMI6A7.js';
|
|
22
|
-
import { useDocumentFilter } from './chunk-CCUXCN4M.js';
|
|
23
|
-
import { useConnectedWorkspace } from './chunk-JVJOIZNN.js';
|
|
24
24
|
import { useBlocksEnvironment } from './chunk-3KA6GZUW.js';
|
|
25
25
|
import { ModalScaffold } from './chunk-TX2ZICS7.js';
|
|
26
|
-
import { useUserSettings, useSkills, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateConversation, useUpdateWorkflow, useArbiSessionState, useCreateWork, useGrantAgentAccess, useDocuments, useTags, useWorkflows, useAgents, useWorkspaces, useWorkItems, usePlanWork, useWorkflowRuns, useConversationActivity, useWorkspaceUsers, useArbiSession, useConversationItems, useCanEditShared, useActOnStep, useFollowThread, useArbi, useCreateTag, useProjects, useProjectUsage, ConversationScope, useConversation, useArbiSessionStore, useAgentWorkspaces, useConversations, useConversationThreads, useCreateProject } from '@arbidocs/react';
|
|
26
|
+
import { useUserSettings, useSkills, useRunWorkflow, useStartTaskQuery, useCreateWorkflow, useUpdateConversation, useUpdateWorkflow, useArbiSessionState, useCreateWork, useGrantAgentAccess, useDocuments, useTags, useWorkflows, useAgents, useWorkspaces, useWorkItems, usePlanWork, useWorkflowRuns, useConversationActivity, useWorkspaceUsers, useArbiSession, useConversationItems, useCanEditShared, useActOnStep, useUploadDocuments, useConversationWorkspace, useFollowThread, useArbi, useCreateTag, useProjects, useProjectUsage, ConversationScope, useConversation, useArbiSessionStore, useAgentWorkspaces, useConversations, useConversationThreads, useCreateProject, useUpdateProjectFields, useUpdateWorkspace } from '@arbidocs/react';
|
|
27
27
|
import { useMemo, useCallback, useState, useEffect, useRef, createElement, useLayoutEffect } from 'react';
|
|
28
|
-
import { getDocumentTitle, Button, isAgent, getUserDisplayName, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, getEntityLabel, entityNoun, cn, formatRelativeTime, Card
|
|
28
|
+
import { getDocumentTitle, Button, isAgent, getUserDisplayName, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, getEntityLabel, entityNoun, cn, formatRelativeTime, Card } from '@arbidocs/react/ui';
|
|
29
29
|
import { ArbiApiError } from '@arbidocs/sdk/browser';
|
|
30
30
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
31
31
|
import { MoreHorizontal, ExternalLink, Loader2, FolderKanban, Plus, AlertTriangle, Check, MessageSquare } from 'lucide-react';
|
|
@@ -608,6 +608,8 @@ function ConnectedThreadTaskBar({
|
|
|
608
608
|
const canEditShared = useCanEditShared();
|
|
609
609
|
const update = useUpdateConversation();
|
|
610
610
|
const actOnStep = useActOnStep();
|
|
611
|
+
const upload = useUploadDocuments();
|
|
612
|
+
const runWorkspace = useConversationWorkspace(conversationId);
|
|
611
613
|
const [error, setError] = useState(null);
|
|
612
614
|
const [busy, setBusy] = useState(false);
|
|
613
615
|
const [renameOpen, setRenameOpen] = useState(false);
|
|
@@ -627,6 +629,15 @@ function ConnectedThreadTaskBar({
|
|
|
627
629
|
const states = stepStatesFromActivity(activity.data ?? []);
|
|
628
630
|
const runInputs = task?.skill_inputs ?? {};
|
|
629
631
|
const stepCall = (body) => actOnStep.mutateAsync({ conversationId, body });
|
|
632
|
+
const uploadToRun = async (files) => {
|
|
633
|
+
const workspaceExtId = runWorkspace ?? void 0;
|
|
634
|
+
const { doc_ext_ids = [] } = await upload.mutateAsync({
|
|
635
|
+
files,
|
|
636
|
+
options: { workspaceExtId }
|
|
637
|
+
});
|
|
638
|
+
if (!doc_ext_ids.length) throw new Error("The file was not added");
|
|
639
|
+
return doc_ext_ids;
|
|
640
|
+
};
|
|
630
641
|
const canEdit = Boolean(task?.is_owner || task?.is_shared && canEditShared);
|
|
631
642
|
const renameThread = () => {
|
|
632
643
|
const title = newTitle.trim();
|
|
@@ -679,7 +690,13 @@ function ConnectedThreadTaskBar({
|
|
|
679
690
|
inputs: runInputs,
|
|
680
691
|
me,
|
|
681
692
|
nameOf,
|
|
682
|
-
onComplete: (inputs) => stepCall({
|
|
693
|
+
onComplete: (inputs, documents2) => stepCall({
|
|
694
|
+
step: step.id,
|
|
695
|
+
action: "complete",
|
|
696
|
+
...inputs ? { inputs } : {},
|
|
697
|
+
...documents2 ? { documents: documents2 } : {}
|
|
698
|
+
}),
|
|
699
|
+
onUpload: uploadToRun,
|
|
683
700
|
onSendBack: (to, note) => stepCall({ step: step.id, action: "send_back", to, ...note ? { note } : {} }),
|
|
684
701
|
onDecline: (note) => stepCall({ step: step.id, action: "decline", ...note ? { note } : {} }),
|
|
685
702
|
onOpenDocument: (id) => openDocument(id),
|
|
@@ -975,6 +992,51 @@ function primaryProjectWorkspace(project) {
|
|
|
975
992
|
const work = (w) => w.documentCount + w.conversationCount;
|
|
976
993
|
return [...project.workspaces].sort((a, b) => work(b) - work(a))[0];
|
|
977
994
|
}
|
|
995
|
+
|
|
996
|
+
// src/connection/workflows/runProject.ts
|
|
997
|
+
function projectStepOf(from) {
|
|
998
|
+
return typeof from === "object" && "step" in from ? from : void 0;
|
|
999
|
+
}
|
|
1000
|
+
function projectChosenOnPage(from) {
|
|
1001
|
+
return from === "pick" || typeof from === "object" && "fields" in from;
|
|
1002
|
+
}
|
|
1003
|
+
function newProjectFields(from, nameLabel) {
|
|
1004
|
+
const extra = typeof from === "object" && "fields" in from ? from.fields : [];
|
|
1005
|
+
const name = { name: "name", type: "text", label: nameLabel, required: true };
|
|
1006
|
+
return [extra.find((f) => f.name === "name") ?? name, ...extra.filter((f) => f.name !== "name")];
|
|
1007
|
+
}
|
|
1008
|
+
var PROJECT_DETAILS = ["client", "client_ref", "stage"];
|
|
1009
|
+
var isDetail = (key) => PROJECT_DETAILS.includes(key);
|
|
1010
|
+
function typedProjectInputs(inputs) {
|
|
1011
|
+
const out = {};
|
|
1012
|
+
for (const [key, raw] of Object.entries(inputs)) {
|
|
1013
|
+
const value = typeof raw === "string" ? raw.trim() : raw;
|
|
1014
|
+
if (value !== "" && value !== void 0) out[key] = value;
|
|
1015
|
+
}
|
|
1016
|
+
return out;
|
|
1017
|
+
}
|
|
1018
|
+
function stable(value) {
|
|
1019
|
+
if (Array.isArray(value)) return value.map(stable);
|
|
1020
|
+
if (value && typeof value === "object")
|
|
1021
|
+
return Object.fromEntries(
|
|
1022
|
+
Object.keys(value).sort().map((k) => [k, stable(value[k])])
|
|
1023
|
+
);
|
|
1024
|
+
return value;
|
|
1025
|
+
}
|
|
1026
|
+
function sameProjectVars(a, b) {
|
|
1027
|
+
return JSON.stringify(stable(a)) === JSON.stringify(stable(b));
|
|
1028
|
+
}
|
|
1029
|
+
function newProjectVars(from, inputs) {
|
|
1030
|
+
if (typeof from === "object" && "fields" in from && from.project) return from.project(inputs);
|
|
1031
|
+
const vars = { name: String(inputs.name ?? "") };
|
|
1032
|
+
const fields = {};
|
|
1033
|
+
for (const [key, value] of Object.entries(inputs)) {
|
|
1034
|
+
if (key === "name") continue;
|
|
1035
|
+
if (isDetail(key)) vars[key] = String(value);
|
|
1036
|
+
else fields[key] = value;
|
|
1037
|
+
}
|
|
1038
|
+
return Object.keys(fields).length ? { ...vars, fields } : vars;
|
|
1039
|
+
}
|
|
978
1040
|
var DEFAULT_WORKFLOW_RUN_PAGE_LABELS = {
|
|
979
1041
|
runsIn: "Runs in",
|
|
980
1042
|
get chooseProject() {
|
|
@@ -991,6 +1053,8 @@ var DEFAULT_WORKFLOW_RUN_PAGE_LABELS = {
|
|
|
991
1053
|
},
|
|
992
1054
|
newProjectName: "Name",
|
|
993
1055
|
createProject: "Create and continue",
|
|
1056
|
+
moreOptions: "More options",
|
|
1057
|
+
stillNeeded: "Still needed: {fields}",
|
|
994
1058
|
get projectFromStep() {
|
|
995
1059
|
return `A new ${entityNoun("PROJECT")}, from the first step`;
|
|
996
1060
|
},
|
|
@@ -1028,11 +1092,14 @@ function useWorkflowRunTarget({
|
|
|
1028
1092
|
const session = useArbiSessionStore();
|
|
1029
1093
|
const selectWorkspace = useSelectWorkspace();
|
|
1030
1094
|
const createProject = useCreateProject();
|
|
1095
|
+
const { mutateAsync: updateProject } = useUpdateProjectFields();
|
|
1096
|
+
const { mutateAsync: updateWorkspace } = useUpdateWorkspace();
|
|
1031
1097
|
const { projects, isLoading: projectsLoading } = useProjectSummaries();
|
|
1032
1098
|
const { data: workspaces } = useWorkspaces();
|
|
1033
1099
|
const [own, setOwn] = useState(null);
|
|
1034
1100
|
const projectId = controlled !== void 0 ? controlled : own;
|
|
1035
1101
|
const [created, setCreated] = useState(null);
|
|
1102
|
+
const [settingUp, setSettingUp] = useState(null);
|
|
1036
1103
|
const [startedIn, setStartedIn] = useState(null);
|
|
1037
1104
|
const project = projectId ? projects.find((p) => p.id === projectId) : void 0;
|
|
1038
1105
|
const projectWorkspace = created && created.projectId === projectId ? created.workspaceId : project ? primaryProjectWorkspace(project)?.id : void 0;
|
|
@@ -1049,8 +1116,18 @@ function useWorkflowRunTarget({
|
|
|
1049
1116
|
selectWorkspace(target).catch(() => {
|
|
1050
1117
|
}).finally(() => setOpening((o) => o === target ? null : o));
|
|
1051
1118
|
}, [target, open, startedIn, selectWorkspace]);
|
|
1119
|
+
const madeRef = useRef(null);
|
|
1120
|
+
const lastProjectId = useRef(projectId);
|
|
1121
|
+
useEffect(() => {
|
|
1122
|
+
const madeId = madeRef.current?.made.external_id;
|
|
1123
|
+
const before = lastProjectId.current;
|
|
1124
|
+
lastProjectId.current = projectId;
|
|
1125
|
+
if (madeId && (before === madeId && projectId !== madeId || projectId && projectId !== madeId))
|
|
1126
|
+
madeRef.current = null;
|
|
1127
|
+
}, [projectId]);
|
|
1052
1128
|
const pick = useCallback(
|
|
1053
1129
|
(id) => {
|
|
1130
|
+
madeRef.current = null;
|
|
1054
1131
|
setOwn(id);
|
|
1055
1132
|
onProjectChange?.(id);
|
|
1056
1133
|
},
|
|
@@ -1058,33 +1135,74 @@ function useWorkflowRunTarget({
|
|
|
1058
1135
|
);
|
|
1059
1136
|
const makeProject = useCallback(
|
|
1060
1137
|
async (vars, inputs = {}) => {
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1138
|
+
let kept = madeRef.current;
|
|
1139
|
+
if (!kept) {
|
|
1140
|
+
const fresh = await createProject.mutateAsync({
|
|
1141
|
+
plan: "free",
|
|
1142
|
+
...vars,
|
|
1143
|
+
workspace: vars.workspace ?? {}
|
|
1144
|
+
});
|
|
1145
|
+
const freshWs = fresh.workspace?.external_id;
|
|
1146
|
+
if (!freshWs) throw new Error(`The ${entityNoun("PROJECT")} has no workspace`);
|
|
1147
|
+
kept = madeRef.current = { made: fresh, ws: freshWs, vars };
|
|
1148
|
+
}
|
|
1149
|
+
const { made, ws } = kept;
|
|
1150
|
+
const onPage = projectChosenOnPage(projectFrom);
|
|
1151
|
+
if (onPage) setSettingUp(made.external_id);
|
|
1152
|
+
setCreated({ projectId: made.external_id, workspaceId: ws, inputs });
|
|
1069
1153
|
targetRef.current = ws;
|
|
1070
1154
|
setOwn(made.external_id);
|
|
1071
1155
|
onProjectChange?.(made.external_id);
|
|
1072
1156
|
tried.current.add(ws);
|
|
1073
1157
|
setOpening(ws);
|
|
1074
1158
|
try {
|
|
1075
|
-
|
|
1159
|
+
try {
|
|
1160
|
+
await selectWorkspace(ws);
|
|
1161
|
+
} finally {
|
|
1162
|
+
setOpening((o) => o === ws ? null : o);
|
|
1163
|
+
}
|
|
1164
|
+
if (!sameProjectVars(kept.vars, vars)) {
|
|
1165
|
+
const { name, plan: _plan, workspace, ...details } = vars;
|
|
1166
|
+
await updateProject({
|
|
1167
|
+
projectExtId: made.external_id,
|
|
1168
|
+
patch: { name, ...details }
|
|
1169
|
+
});
|
|
1170
|
+
const description = workspace?.description;
|
|
1171
|
+
if (name !== kept.vars.name || description !== kept.vars.workspace?.description)
|
|
1172
|
+
await updateWorkspace({
|
|
1173
|
+
name,
|
|
1174
|
+
...description !== void 0 ? { description } : {}
|
|
1175
|
+
});
|
|
1176
|
+
kept.vars = vars;
|
|
1177
|
+
kept.made = { ...made, name };
|
|
1178
|
+
}
|
|
1179
|
+
if (!kept.followUp) kept.followUp = { extra: await onProjectCreated?.(kept.made, inputs) };
|
|
1180
|
+
const extra = kept.followUp.extra;
|
|
1181
|
+
if (extra)
|
|
1182
|
+
setCreated({
|
|
1183
|
+
projectId: made.external_id,
|
|
1184
|
+
workspaceId: ws,
|
|
1185
|
+
inputs: { ...inputs, ...extra }
|
|
1186
|
+
});
|
|
1187
|
+
return { project: kept.made, workspaceId: ws, inputs: extra ?? void 0 };
|
|
1076
1188
|
} finally {
|
|
1077
|
-
|
|
1189
|
+
if (onPage) setSettingUp(null);
|
|
1078
1190
|
}
|
|
1079
|
-
const extra = await onProjectCreated?.(made, inputs);
|
|
1080
|
-
return { project: made, workspaceId: ws, inputs: extra ?? void 0 };
|
|
1081
1191
|
},
|
|
1082
|
-
[
|
|
1192
|
+
[
|
|
1193
|
+
createProject,
|
|
1194
|
+
updateProject,
|
|
1195
|
+
updateWorkspace,
|
|
1196
|
+
projectFrom,
|
|
1197
|
+
onProjectChange,
|
|
1198
|
+
selectWorkspace,
|
|
1199
|
+
onProjectCreated
|
|
1200
|
+
]
|
|
1083
1201
|
);
|
|
1084
1202
|
const nameOf = (id) => id ? project?.workspaces.find((w) => w.id === id)?.name ?? workspaces?.find(
|
|
1085
1203
|
(w) => w.external_id === id
|
|
1086
1204
|
)?.name : void 0;
|
|
1087
|
-
const stage = projectFrom
|
|
1205
|
+
const stage = projectChosenOnPage(projectFrom) && !projectId && !startedIn ? "pick" : settingUp && settingUp === projectId ? "opening" : projectFrom && projectId && !target ? "loading" : target && target !== open ? opening === target ? "opening" : "switch" : "ready";
|
|
1088
1206
|
return {
|
|
1089
1207
|
stage,
|
|
1090
1208
|
target,
|
|
@@ -1097,6 +1215,8 @@ function useWorkflowRunTarget({
|
|
|
1097
1215
|
projectsLoading,
|
|
1098
1216
|
pick,
|
|
1099
1217
|
makeProject,
|
|
1218
|
+
/** What a project made on the page (not by the run's step) starts the run from. */
|
|
1219
|
+
createdInputs: projectChosenOnPage(projectFrom) && created?.projectId === projectId ? created.inputs : void 0,
|
|
1100
1220
|
creating: createProject.isPending,
|
|
1101
1221
|
/** The run started in `workspaceId`: it stays the run's. */
|
|
1102
1222
|
pin: setStartedIn,
|
|
@@ -1107,14 +1227,30 @@ function WorkflowRunProjectChooser({
|
|
|
1107
1227
|
projects,
|
|
1108
1228
|
loading,
|
|
1109
1229
|
onPick,
|
|
1230
|
+
fields,
|
|
1110
1231
|
onCreate,
|
|
1111
1232
|
creating,
|
|
1112
1233
|
labels,
|
|
1113
1234
|
testId
|
|
1114
1235
|
}) {
|
|
1236
|
+
const form = {
|
|
1237
|
+
id: "new-project",
|
|
1238
|
+
title: "",
|
|
1239
|
+
description: "",
|
|
1240
|
+
inputs: fields,
|
|
1241
|
+
run: { kind: "operation" },
|
|
1242
|
+
landing: "chat"
|
|
1243
|
+
};
|
|
1115
1244
|
const [adding, setAdding] = useState(false);
|
|
1116
|
-
const [
|
|
1245
|
+
const [values, setValues] = useState(() => defaultInputs(form));
|
|
1117
1246
|
const [error, setError] = useState(null);
|
|
1247
|
+
const formRef = useRef(null);
|
|
1248
|
+
useEffect(() => {
|
|
1249
|
+
if (adding) formRef.current?.querySelector("input, textarea")?.focus();
|
|
1250
|
+
}, [adding]);
|
|
1251
|
+
const problems = validateInputs(form, values);
|
|
1252
|
+
const complete = Object.keys(problems).length === 0;
|
|
1253
|
+
const missing = fields.filter((f) => problems[f.name]).map((f) => f.label);
|
|
1118
1254
|
const options = useMemo(
|
|
1119
1255
|
() => projects.map((p) => ({
|
|
1120
1256
|
id: p.id,
|
|
@@ -1130,10 +1266,9 @@ function WorkflowRunProjectChooser({
|
|
|
1130
1266
|
);
|
|
1131
1267
|
const submit = (e) => {
|
|
1132
1268
|
e.preventDefault();
|
|
1133
|
-
|
|
1134
|
-
if (!n) return;
|
|
1269
|
+
if (!complete || creating) return;
|
|
1135
1270
|
setError(null);
|
|
1136
|
-
onCreate(
|
|
1271
|
+
onCreate(typedProjectInputs(values)).catch(
|
|
1137
1272
|
(err) => setError(err instanceof Error && err.message ? err.message : String(err))
|
|
1138
1273
|
);
|
|
1139
1274
|
};
|
|
@@ -1156,34 +1291,45 @@ function WorkflowRunProjectChooser({
|
|
|
1156
1291
|
adding || !loading && !projects.length ? /* @__PURE__ */ jsxs(
|
|
1157
1292
|
"form",
|
|
1158
1293
|
{
|
|
1294
|
+
ref: formRef,
|
|
1159
1295
|
onSubmit: submit,
|
|
1160
|
-
className: "space-y-
|
|
1296
|
+
className: "space-y-4 border-t border-border pt-4",
|
|
1161
1297
|
"data-testid": `${testId}-new-project`,
|
|
1162
1298
|
children: [
|
|
1163
|
-
/* @__PURE__ */ jsx(
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1299
|
+
/* @__PURE__ */ jsx(
|
|
1300
|
+
SchemaForm,
|
|
1301
|
+
{
|
|
1302
|
+
fields,
|
|
1303
|
+
values,
|
|
1304
|
+
onChange: (name, value) => setValues((v) => ({ ...v, [name]: value })),
|
|
1305
|
+
onEnterSubmit: () => formRef.current?.requestSubmit(),
|
|
1306
|
+
testIdPrefix: `${testId}-new-project`,
|
|
1307
|
+
labels: { advanced: labels.moreOptions },
|
|
1308
|
+
className: "sm:max-w-md"
|
|
1309
|
+
}
|
|
1310
|
+
),
|
|
1311
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
1176
1312
|
/* @__PURE__ */ jsxs(
|
|
1177
1313
|
Button,
|
|
1178
1314
|
{
|
|
1179
1315
|
type: "submit",
|
|
1180
|
-
disabled: !
|
|
1316
|
+
disabled: !complete || creating,
|
|
1317
|
+
"aria-describedby": missing.length ? `${testId}-new-project-missing` : void 0,
|
|
1181
1318
|
"data-testid": `${testId}-new-project-create`,
|
|
1182
1319
|
children: [
|
|
1183
1320
|
creating ? /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin" }) : /* @__PURE__ */ jsx(Plus, { className: "size-4" }),
|
|
1184
1321
|
labels.createProject
|
|
1185
1322
|
]
|
|
1186
1323
|
}
|
|
1324
|
+
),
|
|
1325
|
+
missing.length > 0 && /* @__PURE__ */ jsx(
|
|
1326
|
+
"p",
|
|
1327
|
+
{
|
|
1328
|
+
id: `${testId}-new-project-missing`,
|
|
1329
|
+
className: "text-sm text-muted-foreground",
|
|
1330
|
+
"data-testid": `${testId}-new-project-missing`,
|
|
1331
|
+
children: labels.stillNeeded.replace("{fields}", missing.join(", "))
|
|
1332
|
+
}
|
|
1187
1333
|
)
|
|
1188
1334
|
] }),
|
|
1189
1335
|
error && /* @__PURE__ */ jsx("p", { role: "alert", className: "text-sm text-destructive", children: error })
|
|
@@ -1851,7 +1997,8 @@ function WorkflowRunBody({
|
|
|
1851
1997
|
const pageTarget = page?.target;
|
|
1852
1998
|
const projectFrom = page?.projectFrom;
|
|
1853
1999
|
const inputsFromProject = page?.inputsFromProject;
|
|
1854
|
-
const
|
|
2000
|
+
const fromStep = pageTarget ? projectStepOf(projectFrom) : void 0;
|
|
2001
|
+
const projectStep = fromStep?.step;
|
|
1855
2002
|
const workflow = useMemo(
|
|
1856
2003
|
() => withCommitStep(withLabelIds(given, labelIds), projectStep),
|
|
1857
2004
|
[given, labelIds, projectStep]
|
|
@@ -1874,23 +2021,28 @@ function WorkflowRunBody({
|
|
|
1874
2021
|
}, [hostBeforeStart, pageTarget, noWorkspace, required, ensureLabels, session]);
|
|
1875
2022
|
const hostCommit = options?.commit;
|
|
1876
2023
|
const commit = useMemo(() => {
|
|
1877
|
-
if (!pageTarget ||
|
|
1878
|
-
const step =
|
|
2024
|
+
if (!pageTarget || !fromStep) return hostCommit;
|
|
2025
|
+
const step = fromStep.step;
|
|
1879
2026
|
return {
|
|
1880
2027
|
...hostCommit,
|
|
1881
2028
|
[step]: async (inputs) => {
|
|
1882
|
-
const made = await pageTarget.makeProject(
|
|
2029
|
+
const made = await pageTarget.makeProject(fromStep.project(inputs), inputs);
|
|
1883
2030
|
const merged = { ...inputs, ...made.inputs };
|
|
1884
2031
|
const fromHost = await hostCommit?.[step]?.(merged);
|
|
1885
2032
|
return { ...made.inputs, ...fromHost ?? {} };
|
|
1886
2033
|
}
|
|
1887
2034
|
};
|
|
1888
|
-
}, [hostCommit, pageTarget,
|
|
2035
|
+
}, [hostCommit, pageTarget, fromStep]);
|
|
1889
2036
|
const project = pageTarget?.project;
|
|
2037
|
+
const createdInputs = pageTarget?.createdInputs;
|
|
1890
2038
|
const hostInitial = options?.initialInputs;
|
|
1891
2039
|
const initialInputs = useMemo(
|
|
1892
|
-
() => project && inputsFromProject ? {
|
|
1893
|
-
|
|
2040
|
+
() => project && inputsFromProject || createdInputs ? {
|
|
2041
|
+
...project && inputsFromProject?.(project),
|
|
2042
|
+
...createdInputs,
|
|
2043
|
+
...hostInitial
|
|
2044
|
+
} : hostInitial,
|
|
2045
|
+
[project, inputsFromProject, createdInputs, hostInitial]
|
|
1894
2046
|
);
|
|
1895
2047
|
const { data: docs = [], refetch } = useDocuments(wsId);
|
|
1896
2048
|
const documentFilter = useDocumentFilter();
|
|
@@ -2345,7 +2497,7 @@ function ConnectedWorkflowRunPage({
|
|
|
2345
2497
|
const required = requiredLabelsOf(workflow);
|
|
2346
2498
|
const ensure = useEnsureRequiredLabels();
|
|
2347
2499
|
const labels = useRequiredLabels(required, target.target, ensure, target.stage === "ready");
|
|
2348
|
-
const fromStep =
|
|
2500
|
+
const fromStep = !!projectStepOf(projectFrom);
|
|
2349
2501
|
const labelsReady = !required.length || labels.status === "ready" || fromStep && !target.target;
|
|
2350
2502
|
const [shown, setShown] = useState(false);
|
|
2351
2503
|
if (!shown && target.stage === "ready" && labelsReady) setShown(true);
|
|
@@ -2379,7 +2531,8 @@ function ConnectedWorkflowRunPage({
|
|
|
2379
2531
|
projects: target.projects,
|
|
2380
2532
|
loading: target.projectsLoading,
|
|
2381
2533
|
onPick: target.pick,
|
|
2382
|
-
|
|
2534
|
+
fields: newProjectFields(projectFrom, l.newProjectName),
|
|
2535
|
+
onCreate: (inputs) => target.makeProject(newProjectVars(projectFrom, inputs), inputs),
|
|
2383
2536
|
creating: target.creating,
|
|
2384
2537
|
labels: l,
|
|
2385
2538
|
testId: testIdPrefix
|
|
@@ -2447,5 +2600,5 @@ function ConnectedWorkflowRunPage({
|
|
|
2447
2600
|
}
|
|
2448
2601
|
|
|
2449
2602
|
export { ConnectedTaskActivityDialog, ConnectedTaskComposer, ConnectedThreadTaskBar, ConnectedWorkflowHistory, ConnectedWorkflowRunPage, ConnectedWorkflowRunner, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_WORKFLOW_RUN_PAGE_LABELS, WorkflowRunThread, WorkflowRunWorkspaceChangedError, buildProjectSummaries, primaryProjectWorkspace, useEnsureRequiredLabels, useProjectSummaries, useProjectSummary, useRenderTaskPerson, useRequiredLabels, useSkillsEnabled, useTaskPeople, useWorkflowDefinitions, useWorkflowTasks, useWorkflowsPageState, workflowRunView };
|
|
2450
|
-
//# sourceMappingURL=chunk-
|
|
2451
|
-
//# sourceMappingURL=chunk-
|
|
2603
|
+
//# sourceMappingURL=chunk-LZI4EGOW.js.map
|
|
2604
|
+
//# sourceMappingURL=chunk-LZI4EGOW.js.map
|