@arbidocs/blocks 0.5.95 → 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 +21 -8
- package/dist/{ConnectedNativeDocxComparison-FNHQKY57.js → ConnectedNativeDocxComparison-6KL5XI3L.js} +6 -6
- package/dist/{ConnectedNativeDocxComparison-FNHQKY57.js.map → ConnectedNativeDocxComparison-6KL5XI3L.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-KIMSYQV2.cjs → ConnectedNativeDocxComparison-P346QOX5.cjs} +7 -7
- package/dist/{ConnectedNativeDocxComparison-KIMSYQV2.cjs.map → ConnectedNativeDocxComparison-P346QOX5.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-UOZGILPM.cjs → ConnectedNativeDocxEditor-7JHSQ6KI.cjs} +7 -7
- package/dist/{ConnectedNativeDocxEditor-UOZGILPM.cjs.map → ConnectedNativeDocxEditor-7JHSQ6KI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-WFDFGJYW.js → ConnectedNativeDocxEditor-ATZ2TG2L.js} +5 -5
- package/dist/{ConnectedNativeDocxEditor-WFDFGJYW.js.map → ConnectedNativeDocxEditor-ATZ2TG2L.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-WFKYXIX5.cjs → ConnectedStreamedWordArtifact-5HI3WSAJ.cjs} +7 -7
- package/dist/ConnectedStreamedWordArtifact-5HI3WSAJ.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-SFELZUTS.js → ConnectedStreamedWordArtifact-FHSGQHXQ.js} +6 -6
- package/dist/{ConnectedStreamedWordArtifact-SFELZUTS.js.map → ConnectedStreamedWordArtifact-FHSGQHXQ.js.map} +1 -1
- package/dist/{DocumentReviewCard-X5DXEU2G.js → DocumentReviewCard-7UFQGDOG.js} +3 -3
- package/dist/{DocumentReviewCard-X5DXEU2G.js.map → DocumentReviewCard-7UFQGDOG.js.map} +1 -1
- package/dist/{DocumentReviewCard-7XUBPCQD.cjs → DocumentReviewCard-E3HB3K2G.cjs} +3 -3
- package/dist/{DocumentReviewCard-7XUBPCQD.cjs.map → DocumentReviewCard-E3HB3K2G.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-H4ZXFNLV.cjs → FilesViewerDialog-3KWTQARB.cjs} +41 -32
- package/dist/FilesViewerDialog-3KWTQARB.cjs.map +1 -0
- package/dist/{FilesViewerDialog-4Q6WJMSX.js → FilesViewerDialog-EQKBFAWI.js} +40 -31
- package/dist/FilesViewerDialog-EQKBFAWI.js.map +1 -0
- package/dist/WorkspaceTableView-DYABS53K.js +1 -1
- package/dist/WorkspaceTableView-ZIQ7JWT5.cjs +1 -1
- package/dist/agents/index.cjs +254 -254
- package/dist/agents/index.js +4 -4
- package/dist/agents/workflows/WorkflowStepAction.d.ts +9 -2
- package/dist/agents/workflows/requiredLabels.d.ts +7 -2
- package/dist/{chunk-CY2K4K5M.js → chunk-42IVGYNL.js} +4 -4
- package/dist/{chunk-CY2K4K5M.js.map → chunk-42IVGYNL.js.map} +1 -1
- package/dist/{chunk-45M4QWCM.js → chunk-4LTDELP2.js} +3 -3
- package/dist/{chunk-45M4QWCM.js.map → chunk-4LTDELP2.js.map} +1 -1
- package/dist/{chunk-NIXAAPIG.js → chunk-4RCLA52C.js} +5 -5
- package/dist/{chunk-NIXAAPIG.js.map → chunk-4RCLA52C.js.map} +1 -1
- package/dist/{chunk-CJBDBBN2.cjs → chunk-6IS3IRUF.cjs} +4 -4
- package/dist/{chunk-CJBDBBN2.cjs.map → chunk-6IS3IRUF.cjs.map} +1 -1
- package/dist/{chunk-I4PB257E.js → chunk-76O7J6IZ.js} +3 -3
- package/dist/{chunk-I4PB257E.js.map → chunk-76O7J6IZ.js.map} +1 -1
- package/dist/{chunk-ZSWMRG72.cjs → chunk-AINS6VU6.cjs} +4 -4
- package/dist/{chunk-ZSWMRG72.cjs.map → chunk-AINS6VU6.cjs.map} +1 -1
- package/dist/{chunk-U4ZLFL6M.cjs → chunk-CCALU47C.cjs} +5 -5
- package/dist/{chunk-U4ZLFL6M.cjs.map → chunk-CCALU47C.cjs.map} +1 -1
- package/dist/{chunk-5ZWEUUJN.cjs → chunk-ECCV4YOL.cjs} +8 -8
- package/dist/{chunk-5ZWEUUJN.cjs.map → chunk-ECCV4YOL.cjs.map} +1 -1
- package/dist/{chunk-D3ABKS7T.cjs → chunk-HDPT7D6F.cjs} +3 -3
- package/dist/{chunk-D3ABKS7T.cjs.map → chunk-HDPT7D6F.cjs.map} +1 -1
- package/dist/{chunk-MBXQSBG3.cjs → chunk-J4CXF4A7.cjs} +170 -12
- package/dist/chunk-J4CXF4A7.cjs.map +1 -0
- package/dist/{chunk-TG4S236F.js → chunk-LZI4EGOW.js} +206 -53
- package/dist/chunk-LZI4EGOW.js.map +1 -0
- package/dist/{chunk-AJ4TBTA3.js → chunk-PCAWLVHE.js} +3 -3
- package/dist/{chunk-AJ4TBTA3.js.map → chunk-PCAWLVHE.js.map} +1 -1
- package/dist/{chunk-O5MH74TI.js → chunk-QSBPOYWA.js} +3 -3
- package/dist/{chunk-O5MH74TI.js.map → chunk-QSBPOYWA.js.map} +1 -1
- package/dist/{chunk-H2DG5HIO.js → chunk-RZG4ALKZ.js} +3 -3
- package/dist/{chunk-H2DG5HIO.js.map → chunk-RZG4ALKZ.js.map} +1 -1
- package/dist/{chunk-CVYFX7AD.js → chunk-SEBNGA3F.js} +31 -15
- package/dist/chunk-SEBNGA3F.js.map +1 -0
- package/dist/{chunk-6HI5OXB6.cjs → chunk-SYWJNSPS.cjs} +3 -3
- package/dist/{chunk-6HI5OXB6.cjs.map → chunk-SYWJNSPS.cjs.map} +1 -1
- package/dist/{chunk-SOBLG72E.js → chunk-T7LLYVOW.js} +166 -8
- package/dist/chunk-T7LLYVOW.js.map +1 -0
- package/dist/{chunk-VVQEEHDV.cjs → chunk-V2CNHRLZ.cjs} +4 -4
- package/dist/{chunk-VVQEEHDV.cjs.map → chunk-V2CNHRLZ.cjs.map} +1 -1
- package/dist/{chunk-KTHBUDYQ.cjs → chunk-WN7XPEYK.cjs} +5 -5
- package/dist/{chunk-KTHBUDYQ.cjs.map → chunk-WN7XPEYK.cjs.map} +1 -1
- package/dist/{chunk-DCHNB7DF.cjs → chunk-XM4KRGCK.cjs} +246 -93
- package/dist/chunk-XM4KRGCK.cjs.map +1 -0
- package/dist/{chunk-CIXA5A65.cjs → chunk-YZ6YOOTF.cjs} +30 -14
- package/dist/chunk-YZ6YOOTF.cjs.map +1 -0
- package/dist/{chunk-HU3MX5PY.js → chunk-Z4IPTLRS.js} +3 -3
- package/dist/{chunk-HU3MX5PY.js.map → chunk-Z4IPTLRS.js.map} +1 -1
- package/dist/connect/docx.cjs +10 -10
- package/dist/connect/docx.js +6 -6
- package/dist/connect/index.cjs +279 -249
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +52 -22
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +3 -3
- package/dist/connect/viewer.js +2 -2
- package/dist/connection/files/page/ConnectedFilesPage.d.ts +11 -7
- package/dist/connection/viewer/DocumentViewerDialog.d.ts +3 -0
- package/dist/connection/viewer/documentPlace.d.ts +10 -4
- 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/embed/index.cjs +2 -2
- package/dist/embed/index.js +2 -2
- package/dist/facts/index.cjs +43 -43
- package/dist/facts/index.js +2 -2
- package/dist/index.cjs +307 -307
- package/dist/index.js +6 -6
- package/dist/settings/index.cjs +1 -1
- package/dist/settings/index.js +1 -1
- package/dist/workflow-canvas/index.cjs +23 -23
- package/dist/workflow-canvas/index.js +8 -8
- 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-WFKYXIX5.cjs.map +0 -1
- package/dist/FilesViewerDialog-4Q6WJMSX.js.map +0 -1
- package/dist/FilesViewerDialog-H4ZXFNLV.cjs.map +0 -1
- package/dist/chunk-CIXA5A65.cjs.map +0 -1
- package/dist/chunk-CVYFX7AD.js.map +0 -1
- package/dist/chunk-DCHNB7DF.cjs.map +0 -1
- package/dist/chunk-MBXQSBG3.cjs.map +0 -1
- package/dist/chunk-SOBLG72E.js.map +0 -1
- package/dist/chunk-TG4S236F.js.map +0 -1
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkYZ6YOOTF_cjs = require('./chunk-YZ6YOOTF.cjs');
|
|
5
5
|
var chunkKWJW5TMH_cjs = require('./chunk-KWJW5TMH.cjs');
|
|
6
6
|
var chunkXTCNETMI_cjs = require('./chunk-XTCNETMI.cjs');
|
|
7
7
|
var chunkTZHLO7HF_cjs = require('./chunk-TZHLO7HF.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunkECCV4YOL_cjs = require('./chunk-ECCV4YOL.cjs');
|
|
9
9
|
var chunkSIYNZR5B_cjs = require('./chunk-SIYNZR5B.cjs');
|
|
10
10
|
var chunkMMSHLHTA_cjs = require('./chunk-MMSHLHTA.cjs');
|
|
11
11
|
var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
|
|
12
12
|
var chunkZ3LFF3YT_cjs = require('./chunk-Z3LFF3YT.cjs');
|
|
13
13
|
var chunkNSD37OF5_cjs = require('./chunk-NSD37OF5.cjs');
|
|
14
|
-
var
|
|
14
|
+
var chunkJ4CXF4A7_cjs = require('./chunk-J4CXF4A7.cjs');
|
|
15
15
|
var chunkKNC77LZZ_cjs = require('./chunk-KNC77LZZ.cjs');
|
|
16
|
-
var
|
|
16
|
+
var chunkSYWJNSPS_cjs = require('./chunk-SYWJNSPS.cjs');
|
|
17
|
+
var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
|
|
17
18
|
var chunkBFKTZUFT_cjs = require('./chunk-BFKTZUFT.cjs');
|
|
18
19
|
var chunkWV65MJ43_cjs = require('./chunk-WV65MJ43.cjs');
|
|
19
|
-
var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
|
|
20
20
|
var chunk7CSEMMDJ_cjs = require('./chunk-7CSEMMDJ.cjs');
|
|
21
21
|
var chunkYQT24SAZ_cjs = require('./chunk-YQT24SAZ.cjs');
|
|
22
22
|
var chunk6K5CGISL_cjs = require('./chunk-6K5CGISL.cjs');
|
|
@@ -39,25 +39,25 @@ function useSkillsEnabled() {
|
|
|
39
39
|
}
|
|
40
40
|
function useWorkflowDefinitions() {
|
|
41
41
|
const { data: listings } = react.useSkills();
|
|
42
|
-
const usage =
|
|
42
|
+
const usage = chunkJ4CXF4A7_cjs.useWorkflowUsage();
|
|
43
43
|
const skillsEnabled = useSkillsEnabled();
|
|
44
44
|
return react$1.useMemo(() => {
|
|
45
45
|
const { host: builtins, skills: fromServer } = chunk5GQOIQCB_cjs.mergeSkillWorkflows(
|
|
46
|
-
|
|
46
|
+
chunkJ4CXF4A7_cjs.WEB_WORKFLOWS,
|
|
47
47
|
listings ?? []
|
|
48
48
|
);
|
|
49
49
|
const all = [...builtins, ...fromServer];
|
|
50
50
|
const byId = new Map(all.map((w) => [w.id, w]));
|
|
51
|
-
const pinned =
|
|
51
|
+
const pinned = chunkJ4CXF4A7_cjs.DASHBOARD_PINNED.flatMap((id) => {
|
|
52
52
|
const w = byId.get(id);
|
|
53
53
|
return w ? [w] : [];
|
|
54
54
|
});
|
|
55
55
|
return {
|
|
56
56
|
skills: all,
|
|
57
57
|
skillsEnabled,
|
|
58
|
-
start: skillsEnabled ? [...builtins, ...
|
|
59
|
-
dashboard: [...pinned, ...
|
|
60
|
-
forTasks: [
|
|
58
|
+
start: skillsEnabled ? [...builtins, ...chunkJ4CXF4A7_cjs.sortByRecentUse(fromServer, usage)] : [],
|
|
59
|
+
dashboard: [...pinned, ...chunkJ4CXF4A7_cjs.DASHBOARD_OPERATIONS],
|
|
60
|
+
forTasks: [chunkJ4CXF4A7_cjs.CUSTOM_TASK, ...all.filter((w) => w.schedulable), chunkJ4CXF4A7_cjs.REMIND_TASK]
|
|
61
61
|
};
|
|
62
62
|
}, [listings, usage, skillsEnabled]);
|
|
63
63
|
}
|
|
@@ -85,7 +85,7 @@ function useWorkflowTasks() {
|
|
|
85
85
|
);
|
|
86
86
|
const create = react$1.useCallback(
|
|
87
87
|
async (ctx, forceWorkflow = false) => {
|
|
88
|
-
const request =
|
|
88
|
+
const request = chunkJ4CXF4A7_cjs.taskComposerToCreateRequest(
|
|
89
89
|
{ ...ctx, documentTitles, plan: ctx.plan ?? null },
|
|
90
90
|
activeWorkspaceId ?? void 0,
|
|
91
91
|
forceWorkflow
|
|
@@ -127,7 +127,7 @@ function useWorkflowTasks() {
|
|
|
127
127
|
);
|
|
128
128
|
const update = react$1.useCallback(
|
|
129
129
|
async (task, ctx) => {
|
|
130
|
-
const patch =
|
|
130
|
+
const patch = chunkJ4CXF4A7_cjs.taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
|
|
131
131
|
if (task.is_owner === false) delete patch.shared;
|
|
132
132
|
await updateConversation.mutateAsync({ conversationId: task.external_id, patch });
|
|
133
133
|
},
|
|
@@ -135,7 +135,7 @@ function useWorkflowTasks() {
|
|
|
135
135
|
);
|
|
136
136
|
const updateWorkflow = react$1.useCallback(
|
|
137
137
|
async (workflow, ctx) => {
|
|
138
|
-
const patch =
|
|
138
|
+
const patch = chunkJ4CXF4A7_cjs.composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
|
|
139
139
|
if (workflow.is_owner === false) delete patch.shared;
|
|
140
140
|
const workspaceId = workflow.workspace_ext_id ?? activeWorkspaceId;
|
|
141
141
|
const updated = await updateWorkflowMutation.mutateAsync({
|
|
@@ -249,7 +249,7 @@ function ConnectedTaskComposer({
|
|
|
249
249
|
const { tasks: allTasks } = react.useWorkItems();
|
|
250
250
|
const { data: documents = [] } = react.useDocuments();
|
|
251
251
|
const { create, update, updateWorkflow, isPending } = useWorkflowTasks();
|
|
252
|
-
const scopeSource =
|
|
252
|
+
const scopeSource = chunkECCV4YOL_cjs.useConnectedWorkflowScopeSource();
|
|
253
253
|
const activeWorkspaceId = react.useArbiSessionState((s) => s.workspaceId);
|
|
254
254
|
const planWork = react.usePlanWork(activeWorkspaceId);
|
|
255
255
|
const activeWorkspace = react$1.useMemo(
|
|
@@ -267,7 +267,7 @@ function ConnectedTaskComposer({
|
|
|
267
267
|
const label = (t) => t.title?.trim() || "Untitled task";
|
|
268
268
|
if (isWorkflow) return allTasks.map((t) => ({ id: t.external_id, name: label(t) }));
|
|
269
269
|
const subject = task ?? { external_id: "__new__" };
|
|
270
|
-
return
|
|
270
|
+
return chunkJ4CXF4A7_cjs.moveTargets(
|
|
271
271
|
[...allTasks.filter((t) => t.external_id !== subject.external_id), subject],
|
|
272
272
|
subject
|
|
273
273
|
).map((t) => ({ id: t.external_id, name: label(t) }));
|
|
@@ -282,33 +282,33 @@ function ConnectedTaskComposer({
|
|
|
282
282
|
);
|
|
283
283
|
const initialValues = react$1.useMemo(() => {
|
|
284
284
|
const ids = {
|
|
285
|
-
customWorkflowId:
|
|
286
|
-
reminderWorkflowId:
|
|
285
|
+
customWorkflowId: chunkJ4CXF4A7_cjs.CUSTOM_TASK_ID,
|
|
286
|
+
reminderWorkflowId: chunkJ4CXF4A7_cjs.REMIND_TASK_ID,
|
|
287
287
|
definitions: forTasks
|
|
288
288
|
};
|
|
289
289
|
const base = launchWorkflow ? {
|
|
290
|
-
...
|
|
290
|
+
...chunkJ4CXF4A7_cjs.workflowToComposerValues(launchWorkflow, ids),
|
|
291
291
|
when: "once",
|
|
292
292
|
runAt: "",
|
|
293
293
|
rrule: "",
|
|
294
294
|
eventKind: "",
|
|
295
295
|
afterTaskId: "",
|
|
296
296
|
name: ""
|
|
297
|
-
} : editingWorkflow ?
|
|
297
|
+
} : editingWorkflow ? chunkJ4CXF4A7_cjs.workflowToComposerValues(editingWorkflow, ids) : task ? chunkJ4CXF4A7_cjs.taskToComposerValues(task, ids) : isWorkflow ? {
|
|
298
298
|
// Run now is the default start; scheduling is the fallback in the same field.
|
|
299
299
|
assignee: "agent",
|
|
300
|
-
workflowId: initialWorkflowId ??
|
|
300
|
+
workflowId: initialWorkflowId ?? chunkJ4CXF4A7_cjs.CUSTOM_TASK_ID,
|
|
301
301
|
when: startLater ? "once" : "now",
|
|
302
302
|
...initialPrompt ? {
|
|
303
303
|
inputs: {
|
|
304
|
-
[initialWorkflowId ===
|
|
304
|
+
[initialWorkflowId === chunkJ4CXF4A7_cjs.REMIND_TASK_ID ? "message" : "instruction"]: initialPrompt
|
|
305
305
|
}
|
|
306
306
|
} : {},
|
|
307
307
|
// A scheduled run needs an agent: the owner's Assistant unless another is picked.
|
|
308
308
|
...startLater && defaultAgentId ? { agentId: defaultAgentId } : {}
|
|
309
309
|
} : initialAgentExtId ? (
|
|
310
310
|
// Assigning an agent means agentic work: the free instruction, and tell me when done.
|
|
311
|
-
{ agentId: initialAgentExtId, workflowId:
|
|
311
|
+
{ agentId: initialAgentExtId, workflowId: chunkJ4CXF4A7_cjs.CUSTOM_TASK_ID, notifyOnComplete: true }
|
|
312
312
|
) : {};
|
|
313
313
|
return {
|
|
314
314
|
timezone: chunkQUMUAJ2P_cjs.detectTimeZone(),
|
|
@@ -369,7 +369,7 @@ function ConnectedTaskComposer({
|
|
|
369
369
|
const ctx = {
|
|
370
370
|
workflow: chosen,
|
|
371
371
|
values: submitted,
|
|
372
|
-
plan: chosen.id ===
|
|
372
|
+
plan: chosen.id === chunkJ4CXF4A7_cjs.CUSTOM_TASK_ID ? plan : null
|
|
373
373
|
};
|
|
374
374
|
try {
|
|
375
375
|
if (isWorkflow && editingWorkflow && !options?.runOnce) {
|
|
@@ -405,7 +405,7 @@ function ConnectedTaskComposer({
|
|
|
405
405
|
}
|
|
406
406
|
};
|
|
407
407
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
408
|
-
|
|
408
|
+
chunkJ4CXF4A7_cjs.TaskComposer,
|
|
409
409
|
{
|
|
410
410
|
open,
|
|
411
411
|
onOpenChange,
|
|
@@ -424,10 +424,10 @@ function ConnectedTaskComposer({
|
|
|
424
424
|
isPending,
|
|
425
425
|
planDrafting: planWork.isPending,
|
|
426
426
|
hasPlan: plan !== null,
|
|
427
|
-
renderIcon:
|
|
427
|
+
renderIcon: chunkJ4CXF4A7_cjs.renderWorkflowIcon,
|
|
428
428
|
scopeSource,
|
|
429
429
|
renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
430
|
-
|
|
430
|
+
chunkECCV4YOL_cjs.ConnectedWorkflowDocumentsField,
|
|
431
431
|
{
|
|
432
432
|
field,
|
|
433
433
|
value,
|
|
@@ -458,8 +458,8 @@ function ConnectedTaskComposer({
|
|
|
458
458
|
...plan ? { addAndStart: "Approve plan and start", addAndSchedule: "Approve plan and schedule" } : {}
|
|
459
459
|
},
|
|
460
460
|
onSubmit: submit,
|
|
461
|
-
goal: (values) => values.workflowId ===
|
|
462
|
-
|
|
461
|
+
goal: (values) => values.workflowId === chunkJ4CXF4A7_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
462
|
+
chunkJ4CXF4A7_cjs.TaskPlan,
|
|
463
463
|
{
|
|
464
464
|
plan,
|
|
465
465
|
onChange: setPlan,
|
|
@@ -505,7 +505,7 @@ function ConnectedWorkflowHistory({
|
|
|
505
505
|
const { openConversation } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
506
506
|
const { data: runs = [], isLoading } = react.useWorkflowRuns(workflow?.external_id);
|
|
507
507
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
508
|
-
|
|
508
|
+
chunkJ4CXF4A7_cjs.TaskRunsDialog,
|
|
509
509
|
{
|
|
510
510
|
inline,
|
|
511
511
|
hideHeader,
|
|
@@ -540,14 +540,14 @@ function ConnectedTaskActivityDialog({
|
|
|
540
540
|
const activity = react.useConversationActivity(conversationId, { live });
|
|
541
541
|
const { data: agents = [] } = react.useAgents();
|
|
542
542
|
const { userId } = chunkWV65MJ43_cjs.useConnectedWorkspace();
|
|
543
|
-
const { members } =
|
|
543
|
+
const { members } = chunkECCV4YOL_cjs.useConnectedWorkspaceRole();
|
|
544
544
|
const renderPerson = react$1.useCallback(
|
|
545
545
|
(id) => {
|
|
546
546
|
const isMe = !!id && id === userId;
|
|
547
547
|
const member = members.find((m) => m.user.external_id === id)?.user;
|
|
548
548
|
const name = member && [member.given_name, member.family_name].filter(Boolean).join(" ") || member?.email;
|
|
549
549
|
const person = { id, label: isMe ? "You" : name || "Someone", isMe };
|
|
550
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
550
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkSYWJNSPS_cjs.PersonPill, { person });
|
|
551
551
|
},
|
|
552
552
|
[userId, members]
|
|
553
553
|
);
|
|
@@ -556,7 +556,7 @@ function ConnectedTaskActivityDialog({
|
|
|
556
556
|
[agents]
|
|
557
557
|
);
|
|
558
558
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
559
|
-
|
|
559
|
+
chunkJ4CXF4A7_cjs.TaskActivityDialog,
|
|
560
560
|
{
|
|
561
561
|
open: true,
|
|
562
562
|
onOpenChange: (open) => !open && onClose(),
|
|
@@ -593,7 +593,7 @@ function useRenderTaskPerson() {
|
|
|
593
593
|
return react$1.useCallback(
|
|
594
594
|
(person) => {
|
|
595
595
|
const user = person.id ? byId.get(person.id) : void 0;
|
|
596
|
-
return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkTZHLO7HF_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
596
|
+
return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkTZHLO7HF_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkSYWJNSPS_cjs.PersonPill, { person });
|
|
597
597
|
},
|
|
598
598
|
[byId]
|
|
599
599
|
);
|
|
@@ -610,6 +610,8 @@ function ConnectedThreadTaskBar({
|
|
|
610
610
|
const canEditShared = react.useCanEditShared();
|
|
611
611
|
const update = react.useUpdateConversation();
|
|
612
612
|
const actOnStep = react.useActOnStep();
|
|
613
|
+
const upload = react.useUploadDocuments();
|
|
614
|
+
const runWorkspace = react.useConversationWorkspace(conversationId);
|
|
613
615
|
const [error, setError] = react$1.useState(null);
|
|
614
616
|
const [busy, setBusy] = react$1.useState(false);
|
|
615
617
|
const [renameOpen, setRenameOpen] = react$1.useState(false);
|
|
@@ -629,6 +631,15 @@ function ConnectedThreadTaskBar({
|
|
|
629
631
|
const states = chunkMGVECEQQ_cjs.stepStatesFromActivity(activity.data ?? []);
|
|
630
632
|
const runInputs = task?.skill_inputs ?? {};
|
|
631
633
|
const stepCall = (body) => actOnStep.mutateAsync({ conversationId, body });
|
|
634
|
+
const uploadToRun = async (files) => {
|
|
635
|
+
const workspaceExtId = runWorkspace ?? void 0;
|
|
636
|
+
const { doc_ext_ids = [] } = await upload.mutateAsync({
|
|
637
|
+
files,
|
|
638
|
+
options: { workspaceExtId }
|
|
639
|
+
});
|
|
640
|
+
if (!doc_ext_ids.length) throw new Error("The file was not added");
|
|
641
|
+
return doc_ext_ids;
|
|
642
|
+
};
|
|
632
643
|
const canEdit = Boolean(task?.is_owner || task?.is_shared && canEditShared);
|
|
633
644
|
const renameThread = () => {
|
|
634
645
|
const title = newTitle.trim();
|
|
@@ -643,7 +654,7 @@ function ConnectedThreadTaskBar({
|
|
|
643
654
|
).finally(() => setBusy(false));
|
|
644
655
|
};
|
|
645
656
|
const strip = /* @__PURE__ */ jsxRuntime.jsx(
|
|
646
|
-
|
|
657
|
+
chunkJ4CXF4A7_cjs.WorkflowThreadStrip,
|
|
647
658
|
{
|
|
648
659
|
renderIcon,
|
|
649
660
|
...variant === "steps" ? { maxSpan: 3, current: currentStepId, onSelectStep } : {},
|
|
@@ -672,7 +683,7 @@ function ConnectedThreadTaskBar({
|
|
|
672
683
|
renderStepAction: (step, phase) => (
|
|
673
684
|
// A signer or a draft's person acts on their step even on a thread they cannot edit.
|
|
674
685
|
canEdit || phase === "waiting" || phase === "done" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
675
|
-
|
|
686
|
+
chunkJ4CXF4A7_cjs.WorkflowStepAction,
|
|
676
687
|
{
|
|
677
688
|
step,
|
|
678
689
|
phase,
|
|
@@ -681,7 +692,13 @@ function ConnectedThreadTaskBar({
|
|
|
681
692
|
inputs: runInputs,
|
|
682
693
|
me,
|
|
683
694
|
nameOf,
|
|
684
|
-
onComplete: (inputs) => stepCall({
|
|
695
|
+
onComplete: (inputs, documents2) => stepCall({
|
|
696
|
+
step: step.id,
|
|
697
|
+
action: "complete",
|
|
698
|
+
...inputs ? { inputs } : {},
|
|
699
|
+
...documents2 ? { documents: documents2 } : {}
|
|
700
|
+
}),
|
|
701
|
+
onUpload: uploadToRun,
|
|
685
702
|
onSendBack: (to, note) => stepCall({ step: step.id, action: "send_back", to, ...note ? { note } : {} }),
|
|
686
703
|
onDecline: (note) => stepCall({ step: step.id, action: "decline", ...note ? { note } : {} }),
|
|
687
704
|
onOpenDocument: (id) => openDocument(id),
|
|
@@ -704,7 +721,7 @@ function ConnectedThreadTaskBar({
|
|
|
704
721
|
// A workflow run: its named steps, with what happened in the thread under each.
|
|
705
722
|
strip
|
|
706
723
|
) : items.length || startedBy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
707
|
-
startedBy && /* @__PURE__ */ jsxRuntime.jsx(
|
|
724
|
+
startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunkJ4CXF4A7_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
|
|
708
725
|
/* @__PURE__ */ jsxRuntime.jsx(chunkKNC77LZZ_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
|
|
709
726
|
] }) : (
|
|
710
727
|
// Ordinary chats record no activity events, so an empty ribbon says nothing rather than
|
|
@@ -823,7 +840,7 @@ ${labels.map((l) => `${l.key}=${l.name}`).join("\n")}`;
|
|
|
823
840
|
if (known) return known;
|
|
824
841
|
const setUp = (async () => {
|
|
825
842
|
const existing = await arbi.tags.list({ workspaceId });
|
|
826
|
-
const { ids, missing } =
|
|
843
|
+
const { ids, missing } = chunkJ4CXF4A7_cjs.matchRequiredLabels(labels, existing);
|
|
827
844
|
for (const label of missing) {
|
|
828
845
|
const tag = await createTag({
|
|
829
846
|
name: label.name,
|
|
@@ -977,6 +994,51 @@ function primaryProjectWorkspace(project) {
|
|
|
977
994
|
const work = (w) => w.documentCount + w.conversationCount;
|
|
978
995
|
return [...project.workspaces].sort((a, b) => work(b) - work(a))[0];
|
|
979
996
|
}
|
|
997
|
+
|
|
998
|
+
// src/connection/workflows/runProject.ts
|
|
999
|
+
function projectStepOf(from) {
|
|
1000
|
+
return typeof from === "object" && "step" in from ? from : void 0;
|
|
1001
|
+
}
|
|
1002
|
+
function projectChosenOnPage(from) {
|
|
1003
|
+
return from === "pick" || typeof from === "object" && "fields" in from;
|
|
1004
|
+
}
|
|
1005
|
+
function newProjectFields(from, nameLabel) {
|
|
1006
|
+
const extra = typeof from === "object" && "fields" in from ? from.fields : [];
|
|
1007
|
+
const name = { name: "name", type: "text", label: nameLabel, required: true };
|
|
1008
|
+
return [extra.find((f) => f.name === "name") ?? name, ...extra.filter((f) => f.name !== "name")];
|
|
1009
|
+
}
|
|
1010
|
+
var PROJECT_DETAILS = ["client", "client_ref", "stage"];
|
|
1011
|
+
var isDetail = (key) => PROJECT_DETAILS.includes(key);
|
|
1012
|
+
function typedProjectInputs(inputs) {
|
|
1013
|
+
const out = {};
|
|
1014
|
+
for (const [key, raw] of Object.entries(inputs)) {
|
|
1015
|
+
const value = typeof raw === "string" ? raw.trim() : raw;
|
|
1016
|
+
if (value !== "" && value !== void 0) out[key] = value;
|
|
1017
|
+
}
|
|
1018
|
+
return out;
|
|
1019
|
+
}
|
|
1020
|
+
function stable(value) {
|
|
1021
|
+
if (Array.isArray(value)) return value.map(stable);
|
|
1022
|
+
if (value && typeof value === "object")
|
|
1023
|
+
return Object.fromEntries(
|
|
1024
|
+
Object.keys(value).sort().map((k) => [k, stable(value[k])])
|
|
1025
|
+
);
|
|
1026
|
+
return value;
|
|
1027
|
+
}
|
|
1028
|
+
function sameProjectVars(a, b) {
|
|
1029
|
+
return JSON.stringify(stable(a)) === JSON.stringify(stable(b));
|
|
1030
|
+
}
|
|
1031
|
+
function newProjectVars(from, inputs) {
|
|
1032
|
+
if (typeof from === "object" && "fields" in from && from.project) return from.project(inputs);
|
|
1033
|
+
const vars = { name: String(inputs.name ?? "") };
|
|
1034
|
+
const fields = {};
|
|
1035
|
+
for (const [key, value] of Object.entries(inputs)) {
|
|
1036
|
+
if (key === "name") continue;
|
|
1037
|
+
if (isDetail(key)) vars[key] = String(value);
|
|
1038
|
+
else fields[key] = value;
|
|
1039
|
+
}
|
|
1040
|
+
return Object.keys(fields).length ? { ...vars, fields } : vars;
|
|
1041
|
+
}
|
|
980
1042
|
var DEFAULT_WORKFLOW_RUN_PAGE_LABELS = {
|
|
981
1043
|
runsIn: "Runs in",
|
|
982
1044
|
get chooseProject() {
|
|
@@ -993,6 +1055,8 @@ var DEFAULT_WORKFLOW_RUN_PAGE_LABELS = {
|
|
|
993
1055
|
},
|
|
994
1056
|
newProjectName: "Name",
|
|
995
1057
|
createProject: "Create and continue",
|
|
1058
|
+
moreOptions: "More options",
|
|
1059
|
+
stillNeeded: "Still needed: {fields}",
|
|
996
1060
|
get projectFromStep() {
|
|
997
1061
|
return `A new ${ui.entityNoun("PROJECT")}, from the first step`;
|
|
998
1062
|
},
|
|
@@ -1030,11 +1094,14 @@ function useWorkflowRunTarget({
|
|
|
1030
1094
|
const session = react.useArbiSessionStore();
|
|
1031
1095
|
const selectWorkspace = chunkXTCNETMI_cjs.useSelectWorkspace();
|
|
1032
1096
|
const createProject = react.useCreateProject();
|
|
1097
|
+
const { mutateAsync: updateProject } = react.useUpdateProjectFields();
|
|
1098
|
+
const { mutateAsync: updateWorkspace } = react.useUpdateWorkspace();
|
|
1033
1099
|
const { projects, isLoading: projectsLoading } = useProjectSummaries();
|
|
1034
1100
|
const { data: workspaces } = react.useWorkspaces();
|
|
1035
1101
|
const [own, setOwn] = react$1.useState(null);
|
|
1036
1102
|
const projectId = controlled !== void 0 ? controlled : own;
|
|
1037
1103
|
const [created, setCreated] = react$1.useState(null);
|
|
1104
|
+
const [settingUp, setSettingUp] = react$1.useState(null);
|
|
1038
1105
|
const [startedIn, setStartedIn] = react$1.useState(null);
|
|
1039
1106
|
const project = projectId ? projects.find((p) => p.id === projectId) : void 0;
|
|
1040
1107
|
const projectWorkspace = created && created.projectId === projectId ? created.workspaceId : project ? primaryProjectWorkspace(project)?.id : void 0;
|
|
@@ -1051,8 +1118,18 @@ function useWorkflowRunTarget({
|
|
|
1051
1118
|
selectWorkspace(target).catch(() => {
|
|
1052
1119
|
}).finally(() => setOpening((o) => o === target ? null : o));
|
|
1053
1120
|
}, [target, open, startedIn, selectWorkspace]);
|
|
1121
|
+
const madeRef = react$1.useRef(null);
|
|
1122
|
+
const lastProjectId = react$1.useRef(projectId);
|
|
1123
|
+
react$1.useEffect(() => {
|
|
1124
|
+
const madeId = madeRef.current?.made.external_id;
|
|
1125
|
+
const before = lastProjectId.current;
|
|
1126
|
+
lastProjectId.current = projectId;
|
|
1127
|
+
if (madeId && (before === madeId && projectId !== madeId || projectId && projectId !== madeId))
|
|
1128
|
+
madeRef.current = null;
|
|
1129
|
+
}, [projectId]);
|
|
1054
1130
|
const pick = react$1.useCallback(
|
|
1055
1131
|
(id) => {
|
|
1132
|
+
madeRef.current = null;
|
|
1056
1133
|
setOwn(id);
|
|
1057
1134
|
onProjectChange?.(id);
|
|
1058
1135
|
},
|
|
@@ -1060,33 +1137,74 @@ function useWorkflowRunTarget({
|
|
|
1060
1137
|
);
|
|
1061
1138
|
const makeProject = react$1.useCallback(
|
|
1062
1139
|
async (vars, inputs = {}) => {
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1140
|
+
let kept = madeRef.current;
|
|
1141
|
+
if (!kept) {
|
|
1142
|
+
const fresh = await createProject.mutateAsync({
|
|
1143
|
+
plan: "free",
|
|
1144
|
+
...vars,
|
|
1145
|
+
workspace: vars.workspace ?? {}
|
|
1146
|
+
});
|
|
1147
|
+
const freshWs = fresh.workspace?.external_id;
|
|
1148
|
+
if (!freshWs) throw new Error(`The ${ui.entityNoun("PROJECT")} has no workspace`);
|
|
1149
|
+
kept = madeRef.current = { made: fresh, ws: freshWs, vars };
|
|
1150
|
+
}
|
|
1151
|
+
const { made, ws } = kept;
|
|
1152
|
+
const onPage = projectChosenOnPage(projectFrom);
|
|
1153
|
+
if (onPage) setSettingUp(made.external_id);
|
|
1154
|
+
setCreated({ projectId: made.external_id, workspaceId: ws, inputs });
|
|
1071
1155
|
targetRef.current = ws;
|
|
1072
1156
|
setOwn(made.external_id);
|
|
1073
1157
|
onProjectChange?.(made.external_id);
|
|
1074
1158
|
tried.current.add(ws);
|
|
1075
1159
|
setOpening(ws);
|
|
1076
1160
|
try {
|
|
1077
|
-
|
|
1161
|
+
try {
|
|
1162
|
+
await selectWorkspace(ws);
|
|
1163
|
+
} finally {
|
|
1164
|
+
setOpening((o) => o === ws ? null : o);
|
|
1165
|
+
}
|
|
1166
|
+
if (!sameProjectVars(kept.vars, vars)) {
|
|
1167
|
+
const { name, plan: _plan, workspace, ...details } = vars;
|
|
1168
|
+
await updateProject({
|
|
1169
|
+
projectExtId: made.external_id,
|
|
1170
|
+
patch: { name, ...details }
|
|
1171
|
+
});
|
|
1172
|
+
const description = workspace?.description;
|
|
1173
|
+
if (name !== kept.vars.name || description !== kept.vars.workspace?.description)
|
|
1174
|
+
await updateWorkspace({
|
|
1175
|
+
name,
|
|
1176
|
+
...description !== void 0 ? { description } : {}
|
|
1177
|
+
});
|
|
1178
|
+
kept.vars = vars;
|
|
1179
|
+
kept.made = { ...made, name };
|
|
1180
|
+
}
|
|
1181
|
+
if (!kept.followUp) kept.followUp = { extra: await onProjectCreated?.(kept.made, inputs) };
|
|
1182
|
+
const extra = kept.followUp.extra;
|
|
1183
|
+
if (extra)
|
|
1184
|
+
setCreated({
|
|
1185
|
+
projectId: made.external_id,
|
|
1186
|
+
workspaceId: ws,
|
|
1187
|
+
inputs: { ...inputs, ...extra }
|
|
1188
|
+
});
|
|
1189
|
+
return { project: kept.made, workspaceId: ws, inputs: extra ?? void 0 };
|
|
1078
1190
|
} finally {
|
|
1079
|
-
|
|
1191
|
+
if (onPage) setSettingUp(null);
|
|
1080
1192
|
}
|
|
1081
|
-
const extra = await onProjectCreated?.(made, inputs);
|
|
1082
|
-
return { project: made, workspaceId: ws, inputs: extra ?? void 0 };
|
|
1083
1193
|
},
|
|
1084
|
-
[
|
|
1194
|
+
[
|
|
1195
|
+
createProject,
|
|
1196
|
+
updateProject,
|
|
1197
|
+
updateWorkspace,
|
|
1198
|
+
projectFrom,
|
|
1199
|
+
onProjectChange,
|
|
1200
|
+
selectWorkspace,
|
|
1201
|
+
onProjectCreated
|
|
1202
|
+
]
|
|
1085
1203
|
);
|
|
1086
1204
|
const nameOf = (id) => id ? project?.workspaces.find((w) => w.id === id)?.name ?? workspaces?.find(
|
|
1087
1205
|
(w) => w.external_id === id
|
|
1088
1206
|
)?.name : void 0;
|
|
1089
|
-
const stage = projectFrom
|
|
1207
|
+
const stage = projectChosenOnPage(projectFrom) && !projectId && !startedIn ? "pick" : settingUp && settingUp === projectId ? "opening" : projectFrom && projectId && !target ? "loading" : target && target !== open ? opening === target ? "opening" : "switch" : "ready";
|
|
1090
1208
|
return {
|
|
1091
1209
|
stage,
|
|
1092
1210
|
target,
|
|
@@ -1099,6 +1217,8 @@ function useWorkflowRunTarget({
|
|
|
1099
1217
|
projectsLoading,
|
|
1100
1218
|
pick,
|
|
1101
1219
|
makeProject,
|
|
1220
|
+
/** What a project made on the page (not by the run's step) starts the run from. */
|
|
1221
|
+
createdInputs: projectChosenOnPage(projectFrom) && created?.projectId === projectId ? created.inputs : void 0,
|
|
1102
1222
|
creating: createProject.isPending,
|
|
1103
1223
|
/** The run started in `workspaceId`: it stays the run's. */
|
|
1104
1224
|
pin: setStartedIn,
|
|
@@ -1109,19 +1229,35 @@ function WorkflowRunProjectChooser({
|
|
|
1109
1229
|
projects,
|
|
1110
1230
|
loading,
|
|
1111
1231
|
onPick,
|
|
1232
|
+
fields,
|
|
1112
1233
|
onCreate,
|
|
1113
1234
|
creating,
|
|
1114
1235
|
labels,
|
|
1115
1236
|
testId
|
|
1116
1237
|
}) {
|
|
1238
|
+
const form = {
|
|
1239
|
+
id: "new-project",
|
|
1240
|
+
title: "",
|
|
1241
|
+
description: "",
|
|
1242
|
+
inputs: fields,
|
|
1243
|
+
run: { kind: "operation" },
|
|
1244
|
+
landing: "chat"
|
|
1245
|
+
};
|
|
1117
1246
|
const [adding, setAdding] = react$1.useState(false);
|
|
1118
|
-
const [
|
|
1247
|
+
const [values, setValues] = react$1.useState(() => chunk5GQOIQCB_cjs.defaultInputs(form));
|
|
1119
1248
|
const [error, setError] = react$1.useState(null);
|
|
1249
|
+
const formRef = react$1.useRef(null);
|
|
1250
|
+
react$1.useEffect(() => {
|
|
1251
|
+
if (adding) formRef.current?.querySelector("input, textarea")?.focus();
|
|
1252
|
+
}, [adding]);
|
|
1253
|
+
const problems = chunk5GQOIQCB_cjs.validateInputs(form, values);
|
|
1254
|
+
const complete = Object.keys(problems).length === 0;
|
|
1255
|
+
const missing = fields.filter((f) => problems[f.name]).map((f) => f.label);
|
|
1120
1256
|
const options = react$1.useMemo(
|
|
1121
1257
|
() => projects.map((p) => ({
|
|
1122
1258
|
id: p.id,
|
|
1123
1259
|
content: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1124
|
-
|
|
1260
|
+
chunkYZ6YOOTF_cjs.ProjectOptionRow,
|
|
1125
1261
|
{
|
|
1126
1262
|
identity: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: p.name }),
|
|
1127
1263
|
meta: p.client ?? void 0
|
|
@@ -1132,10 +1268,9 @@ function WorkflowRunProjectChooser({
|
|
|
1132
1268
|
);
|
|
1133
1269
|
const submit = (e) => {
|
|
1134
1270
|
e.preventDefault();
|
|
1135
|
-
|
|
1136
|
-
if (!n) return;
|
|
1271
|
+
if (!complete || creating) return;
|
|
1137
1272
|
setError(null);
|
|
1138
|
-
onCreate(
|
|
1273
|
+
onCreate(typedProjectInputs(values)).catch(
|
|
1139
1274
|
(err) => setError(err instanceof Error && err.message ? err.message : String(err))
|
|
1140
1275
|
);
|
|
1141
1276
|
};
|
|
@@ -1145,7 +1280,7 @@ function WorkflowRunProjectChooser({
|
|
|
1145
1280
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: labels.chooseProjectHint })
|
|
1146
1281
|
] }),
|
|
1147
1282
|
loading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin text-muted-foreground" }) : projects.length ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1148
|
-
|
|
1283
|
+
chunkYZ6YOOTF_cjs.ProjectPicker,
|
|
1149
1284
|
{
|
|
1150
1285
|
variant: "run",
|
|
1151
1286
|
options,
|
|
@@ -1158,34 +1293,45 @@ function WorkflowRunProjectChooser({
|
|
|
1158
1293
|
adding || !loading && !projects.length ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1159
1294
|
"form",
|
|
1160
1295
|
{
|
|
1296
|
+
ref: formRef,
|
|
1161
1297
|
onSubmit: submit,
|
|
1162
|
-
className: "space-y-
|
|
1298
|
+
className: "space-y-4 border-t border-border pt-4",
|
|
1163
1299
|
"data-testid": `${testId}-new-project`,
|
|
1164
1300
|
children: [
|
|
1165
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1301
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1302
|
+
chunkSYWJNSPS_cjs.SchemaForm,
|
|
1303
|
+
{
|
|
1304
|
+
fields,
|
|
1305
|
+
values,
|
|
1306
|
+
onChange: (name, value) => setValues((v) => ({ ...v, [name]: value })),
|
|
1307
|
+
onEnterSubmit: () => formRef.current?.requestSubmit(),
|
|
1308
|
+
testIdPrefix: `${testId}-new-project`,
|
|
1309
|
+
labels: { advanced: labels.moreOptions },
|
|
1310
|
+
className: "sm:max-w-md"
|
|
1311
|
+
}
|
|
1312
|
+
),
|
|
1313
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
1178
1314
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1179
1315
|
ui.Button,
|
|
1180
1316
|
{
|
|
1181
1317
|
type: "submit",
|
|
1182
|
-
disabled: !
|
|
1318
|
+
disabled: !complete || creating,
|
|
1319
|
+
"aria-describedby": missing.length ? `${testId}-new-project-missing` : void 0,
|
|
1183
1320
|
"data-testid": `${testId}-new-project-create`,
|
|
1184
1321
|
children: [
|
|
1185
1322
|
creating ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4" }),
|
|
1186
1323
|
labels.createProject
|
|
1187
1324
|
]
|
|
1188
1325
|
}
|
|
1326
|
+
),
|
|
1327
|
+
missing.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1328
|
+
"p",
|
|
1329
|
+
{
|
|
1330
|
+
id: `${testId}-new-project-missing`,
|
|
1331
|
+
className: "text-sm text-muted-foreground",
|
|
1332
|
+
"data-testid": `${testId}-new-project-missing`,
|
|
1333
|
+
children: labels.stillNeeded.replace("{fields}", missing.join(", "))
|
|
1334
|
+
}
|
|
1189
1335
|
)
|
|
1190
1336
|
] }),
|
|
1191
1337
|
error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-sm text-destructive", children: error })
|
|
@@ -1448,7 +1594,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
1448
1594
|
const createThread = react$1.useCallback(
|
|
1449
1595
|
async (values, done) => {
|
|
1450
1596
|
const prepared = await options.beforeStart?.();
|
|
1451
|
-
const planned = prepared?.labelIds ?
|
|
1597
|
+
const planned = prepared?.labelIds ? chunkJ4CXF4A7_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
|
|
1452
1598
|
const created = await createWork.mutateAsync({
|
|
1453
1599
|
title: chunkMGVECEQQ_cjs.runThreadTitle(workflow, values).slice(0, 60),
|
|
1454
1600
|
description: workflow.description || null,
|
|
@@ -1549,7 +1695,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
1549
1695
|
const anyRunning = Object.values(states).some((s) => s.status === "running");
|
|
1550
1696
|
const needsStart = !threadId || idle && !anyRunning;
|
|
1551
1697
|
const runError = idle ? conversation?.last_error ?? null : null;
|
|
1552
|
-
const view =
|
|
1698
|
+
const view = chunkJ4CXF4A7_cjs.useWorkflowView({
|
|
1553
1699
|
steps,
|
|
1554
1700
|
states,
|
|
1555
1701
|
inputs,
|
|
@@ -1685,7 +1831,7 @@ function WorkflowWordDialog({
|
|
|
1685
1831
|
title: title ?? labels.wordTitle,
|
|
1686
1832
|
size: "xl",
|
|
1687
1833
|
testId: "workflow-word-dialog",
|
|
1688
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1834
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkECCV4YOL_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
|
|
1689
1835
|
}
|
|
1690
1836
|
);
|
|
1691
1837
|
}
|
|
@@ -1841,7 +1987,7 @@ function WorkflowRunBody({
|
|
|
1841
1987
|
const session = react.useArbiSessionStore();
|
|
1842
1988
|
const openRef = react$1.useRef(workspaceId);
|
|
1843
1989
|
openRef.current = workspaceId;
|
|
1844
|
-
const required =
|
|
1990
|
+
const required = chunkJ4CXF4A7_cjs.requiredLabelsOf(given);
|
|
1845
1991
|
const ownEnsureLabels = useEnsureRequiredLabels();
|
|
1846
1992
|
const ensureLabels = page?.ensureLabels ?? ownEnsureLabels;
|
|
1847
1993
|
const [startedLabelIds, setStartedLabelIds] = react$1.useState({});
|
|
@@ -1853,9 +1999,10 @@ function WorkflowRunBody({
|
|
|
1853
1999
|
const pageTarget = page?.target;
|
|
1854
2000
|
const projectFrom = page?.projectFrom;
|
|
1855
2001
|
const inputsFromProject = page?.inputsFromProject;
|
|
1856
|
-
const
|
|
2002
|
+
const fromStep = pageTarget ? projectStepOf(projectFrom) : void 0;
|
|
2003
|
+
const projectStep = fromStep?.step;
|
|
1857
2004
|
const workflow = react$1.useMemo(
|
|
1858
|
-
() => withCommitStep(
|
|
2005
|
+
() => withCommitStep(chunkJ4CXF4A7_cjs.withLabelIds(given, labelIds), projectStep),
|
|
1859
2006
|
[given, labelIds, projectStep]
|
|
1860
2007
|
);
|
|
1861
2008
|
const hostBeforeStart = options?.beforeStart;
|
|
@@ -1876,23 +2023,28 @@ function WorkflowRunBody({
|
|
|
1876
2023
|
}, [hostBeforeStart, pageTarget, noWorkspace, required, ensureLabels, session]);
|
|
1877
2024
|
const hostCommit = options?.commit;
|
|
1878
2025
|
const commit = react$1.useMemo(() => {
|
|
1879
|
-
if (!pageTarget ||
|
|
1880
|
-
const step =
|
|
2026
|
+
if (!pageTarget || !fromStep) return hostCommit;
|
|
2027
|
+
const step = fromStep.step;
|
|
1881
2028
|
return {
|
|
1882
2029
|
...hostCommit,
|
|
1883
2030
|
[step]: async (inputs) => {
|
|
1884
|
-
const made = await pageTarget.makeProject(
|
|
2031
|
+
const made = await pageTarget.makeProject(fromStep.project(inputs), inputs);
|
|
1885
2032
|
const merged = { ...inputs, ...made.inputs };
|
|
1886
2033
|
const fromHost = await hostCommit?.[step]?.(merged);
|
|
1887
2034
|
return { ...made.inputs, ...fromHost ?? {} };
|
|
1888
2035
|
}
|
|
1889
2036
|
};
|
|
1890
|
-
}, [hostCommit, pageTarget,
|
|
2037
|
+
}, [hostCommit, pageTarget, fromStep]);
|
|
1891
2038
|
const project = pageTarget?.project;
|
|
2039
|
+
const createdInputs = pageTarget?.createdInputs;
|
|
1892
2040
|
const hostInitial = options?.initialInputs;
|
|
1893
2041
|
const initialInputs = react$1.useMemo(
|
|
1894
|
-
() => project && inputsFromProject ? {
|
|
1895
|
-
|
|
2042
|
+
() => project && inputsFromProject || createdInputs ? {
|
|
2043
|
+
...project && inputsFromProject?.(project),
|
|
2044
|
+
...createdInputs,
|
|
2045
|
+
...hostInitial
|
|
2046
|
+
} : hostInitial,
|
|
2047
|
+
[project, inputsFromProject, createdInputs, hostInitial]
|
|
1896
2048
|
);
|
|
1897
2049
|
const { data: docs = [], refetch } = react.useDocuments(wsId);
|
|
1898
2050
|
const documentFilter = chunkBFKTZUFT_cjs.useDocumentFilter();
|
|
@@ -2043,7 +2195,7 @@ function WorkflowRunBody({
|
|
|
2043
2195
|
) : null;
|
|
2044
2196
|
};
|
|
2045
2197
|
const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2046
|
-
|
|
2198
|
+
chunkJ4CXF4A7_cjs.WorkflowRunner,
|
|
2047
2199
|
{
|
|
2048
2200
|
people,
|
|
2049
2201
|
...runnerProps,
|
|
@@ -2104,7 +2256,7 @@ function WorkflowRunBody({
|
|
|
2104
2256
|
pageBar,
|
|
2105
2257
|
inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2106
2258
|
!page && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2107
|
-
|
|
2259
|
+
chunkJ4CXF4A7_cjs.WorkflowStepBar,
|
|
2108
2260
|
{
|
|
2109
2261
|
run: view,
|
|
2110
2262
|
levels: chunkMGVECEQQ_cjs.stepLevels(view.steps),
|
|
@@ -2344,10 +2496,10 @@ function ConnectedWorkflowRunPage({
|
|
|
2344
2496
|
workspaceId,
|
|
2345
2497
|
onProjectCreated
|
|
2346
2498
|
});
|
|
2347
|
-
const required =
|
|
2499
|
+
const required = chunkJ4CXF4A7_cjs.requiredLabelsOf(workflow);
|
|
2348
2500
|
const ensure = useEnsureRequiredLabels();
|
|
2349
2501
|
const labels = useRequiredLabels(required, target.target, ensure, target.stage === "ready");
|
|
2350
|
-
const fromStep =
|
|
2502
|
+
const fromStep = !!projectStepOf(projectFrom);
|
|
2351
2503
|
const labelsReady = !required.length || labels.status === "ready" || fromStep && !target.target;
|
|
2352
2504
|
const [shown, setShown] = react$1.useState(false);
|
|
2353
2505
|
if (!shown && target.stage === "ready" && labelsReady) setShown(true);
|
|
@@ -2381,7 +2533,8 @@ function ConnectedWorkflowRunPage({
|
|
|
2381
2533
|
projects: target.projects,
|
|
2382
2534
|
loading: target.projectsLoading,
|
|
2383
2535
|
onPick: target.pick,
|
|
2384
|
-
|
|
2536
|
+
fields: newProjectFields(projectFrom, l.newProjectName),
|
|
2537
|
+
onCreate: (inputs) => target.makeProject(newProjectVars(projectFrom, inputs), inputs),
|
|
2385
2538
|
creating: target.creating,
|
|
2386
2539
|
labels: l,
|
|
2387
2540
|
testId: testIdPrefix
|
|
@@ -2471,5 +2624,5 @@ exports.useWorkflowDefinitions = useWorkflowDefinitions;
|
|
|
2471
2624
|
exports.useWorkflowTasks = useWorkflowTasks;
|
|
2472
2625
|
exports.useWorkflowsPageState = useWorkflowsPageState;
|
|
2473
2626
|
exports.workflowRunView = workflowRunView;
|
|
2474
|
-
//# sourceMappingURL=chunk-
|
|
2475
|
-
//# sourceMappingURL=chunk-
|
|
2627
|
+
//# sourceMappingURL=chunk-XM4KRGCK.cjs.map
|
|
2628
|
+
//# sourceMappingURL=chunk-XM4KRGCK.cjs.map
|