@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.
Files changed (147) hide show
  1. package/README.md +8 -1
  2. package/dist/{ConnectedCallDock-D4DG4VDA.cjs → ConnectedCallDock-HI2KMQZ3.cjs} +12 -12
  3. package/dist/{ConnectedCallDock-D4DG4VDA.cjs.map → ConnectedCallDock-HI2KMQZ3.cjs.map} +1 -1
  4. package/dist/{ConnectedCallDock-VVZUSFFK.js → ConnectedCallDock-Y64FTKFF.js} +11 -11
  5. package/dist/{ConnectedCallDock-VVZUSFFK.js.map → ConnectedCallDock-Y64FTKFF.js.map} +1 -1
  6. package/dist/{ConnectedCallRoom-EDHNAJHA.js → ConnectedCallRoom-LEBIJGFT.js} +11 -11
  7. package/dist/{ConnectedCallRoom-EDHNAJHA.js.map → ConnectedCallRoom-LEBIJGFT.js.map} +1 -1
  8. package/dist/{ConnectedCallRoom-VDQD25QW.cjs → ConnectedCallRoom-UXIJJKNG.cjs} +12 -12
  9. package/dist/{ConnectedCallRoom-VDQD25QW.cjs.map → ConnectedCallRoom-UXIJJKNG.cjs.map} +1 -1
  10. package/dist/{ConnectedNativeDocxComparison-IS27M6FV.js → ConnectedNativeDocxComparison-6KL5XI3L.js} +10 -10
  11. package/dist/{ConnectedNativeDocxComparison-IS27M6FV.js.map → ConnectedNativeDocxComparison-6KL5XI3L.js.map} +1 -1
  12. package/dist/{ConnectedNativeDocxComparison-ADQURGHU.cjs → ConnectedNativeDocxComparison-P346QOX5.cjs} +11 -11
  13. package/dist/{ConnectedNativeDocxComparison-ADQURGHU.cjs.map → ConnectedNativeDocxComparison-P346QOX5.cjs.map} +1 -1
  14. package/dist/{ConnectedNativeDocxEditor-7EQ6DE3Q.cjs → ConnectedNativeDocxEditor-7JHSQ6KI.cjs} +11 -11
  15. package/dist/{ConnectedNativeDocxEditor-7EQ6DE3Q.cjs.map → ConnectedNativeDocxEditor-7JHSQ6KI.cjs.map} +1 -1
  16. package/dist/{ConnectedNativeDocxEditor-JYXGX55F.js → ConnectedNativeDocxEditor-ATZ2TG2L.js} +9 -9
  17. package/dist/{ConnectedNativeDocxEditor-JYXGX55F.js.map → ConnectedNativeDocxEditor-ATZ2TG2L.js.map} +1 -1
  18. package/dist/{ConnectedStreamedWordArtifact-IYAQ2L7G.cjs → ConnectedStreamedWordArtifact-5HI3WSAJ.cjs} +11 -11
  19. package/dist/ConnectedStreamedWordArtifact-5HI3WSAJ.cjs.map +1 -0
  20. package/dist/{ConnectedStreamedWordArtifact-KLLG6W5L.js → ConnectedStreamedWordArtifact-FHSGQHXQ.js} +10 -10
  21. package/dist/ConnectedStreamedWordArtifact-FHSGQHXQ.js.map +1 -0
  22. package/dist/{DocumentReviewCard-FEVDNY6U.js → DocumentReviewCard-7UFQGDOG.js} +6 -6
  23. package/dist/{DocumentReviewCard-FEVDNY6U.js.map → DocumentReviewCard-7UFQGDOG.js.map} +1 -1
  24. package/dist/{DocumentReviewCard-3H66FMMO.cjs → DocumentReviewCard-E3HB3K2G.cjs} +6 -6
  25. package/dist/{DocumentReviewCard-3H66FMMO.cjs.map → DocumentReviewCard-E3HB3K2G.cjs.map} +1 -1
  26. package/dist/{FilesViewerDialog-DSK5HMLL.cjs → FilesViewerDialog-3KWTQARB.cjs} +12 -12
  27. package/dist/{FilesViewerDialog-DSK5HMLL.cjs.map → FilesViewerDialog-3KWTQARB.cjs.map} +1 -1
  28. package/dist/{FilesViewerDialog-HL4E57K5.js → FilesViewerDialog-EQKBFAWI.js} +10 -10
  29. package/dist/{FilesViewerDialog-HL4E57K5.js.map → FilesViewerDialog-EQKBFAWI.js.map} +1 -1
  30. package/dist/{WorkspaceTableView-X3KZ7YFI.js → WorkspaceTableView-DYABS53K.js} +6 -6
  31. package/dist/{WorkspaceTableView-X3KZ7YFI.js.map → WorkspaceTableView-DYABS53K.js.map} +1 -1
  32. package/dist/{WorkspaceTableView-5DWNJN6J.cjs → WorkspaceTableView-ZIQ7JWT5.cjs} +8 -8
  33. package/dist/{WorkspaceTableView-5DWNJN6J.cjs.map → WorkspaceTableView-ZIQ7JWT5.cjs.map} +1 -1
  34. package/dist/agents/index.cjs +255 -255
  35. package/dist/agents/index.js +5 -5
  36. package/dist/agents/workflows/WorkflowStepAction.d.ts +9 -2
  37. package/dist/agents/workflows/requiredLabels.d.ts +7 -2
  38. package/dist/calls/index.cjs +2 -2
  39. package/dist/calls/index.js +2 -2
  40. package/dist/{chunk-VSZPY4LK.js → chunk-42IVGYNL.js} +5 -5
  41. package/dist/{chunk-VSZPY4LK.js.map → chunk-42IVGYNL.js.map} +1 -1
  42. package/dist/{chunk-GEUP5IV7.js → chunk-4LTDELP2.js} +3 -3
  43. package/dist/{chunk-GEUP5IV7.js.map → chunk-4LTDELP2.js.map} +1 -1
  44. package/dist/{chunk-HA27RMKD.js → chunk-4RCLA52C.js} +7 -7
  45. package/dist/{chunk-HA27RMKD.js.map → chunk-4RCLA52C.js.map} +1 -1
  46. package/dist/{chunk-6NMLRGUJ.cjs → chunk-6IS3IRUF.cjs} +4 -4
  47. package/dist/{chunk-6NMLRGUJ.cjs.map → chunk-6IS3IRUF.cjs.map} +1 -1
  48. package/dist/{chunk-KQUFEMPP.js → chunk-76O7J6IZ.js} +3 -3
  49. package/dist/{chunk-KQUFEMPP.js.map → chunk-76O7J6IZ.js.map} +1 -1
  50. package/dist/{chunk-5YIUHRTR.cjs → chunk-AINS6VU6.cjs} +4 -4
  51. package/dist/{chunk-5YIUHRTR.cjs.map → chunk-AINS6VU6.cjs.map} +1 -1
  52. package/dist/{chunk-ZA3ZELSH.cjs → chunk-CCALU47C.cjs} +5 -5
  53. package/dist/{chunk-ZA3ZELSH.cjs.map → chunk-CCALU47C.cjs.map} +1 -1
  54. package/dist/{chunk-BAJNXRI5.cjs → chunk-DDIV3MYQ.cjs} +5 -5
  55. package/dist/{chunk-BAJNXRI5.cjs.map → chunk-DDIV3MYQ.cjs.map} +1 -1
  56. package/dist/{chunk-ZJ3NII4U.cjs → chunk-ECCV4YOL.cjs} +9 -9
  57. package/dist/{chunk-ZJ3NII4U.cjs.map → chunk-ECCV4YOL.cjs.map} +1 -1
  58. package/dist/{chunk-S2CKH2LH.js → chunk-FNGFSHVE.js} +3 -3
  59. package/dist/{chunk-S2CKH2LH.js.map → chunk-FNGFSHVE.js.map} +1 -1
  60. package/dist/{chunk-CMMFXSTS.cjs → chunk-HXWBXYVN.cjs} +3 -3
  61. package/dist/{chunk-CMMFXSTS.cjs.map → chunk-HXWBXYVN.cjs.map} +1 -1
  62. package/dist/{chunk-NRE7ZR6M.js → chunk-ITK7GW7B.js} +3 -3
  63. package/dist/{chunk-NRE7ZR6M.js.map → chunk-ITK7GW7B.js.map} +1 -1
  64. package/dist/{chunk-FAKRTCAL.cjs → chunk-J4CXF4A7.cjs} +172 -14
  65. package/dist/chunk-J4CXF4A7.cjs.map +1 -0
  66. package/dist/{chunk-AS3HX7LL.js → chunk-K6UKLIRR.js} +3 -3
  67. package/dist/{chunk-AS3HX7LL.js.map → chunk-K6UKLIRR.js.map} +1 -1
  68. package/dist/{chunk-RMJNCYPD.js → chunk-KJLHFS7T.js} +3 -3
  69. package/dist/{chunk-RMJNCYPD.js.map → chunk-KJLHFS7T.js.map} +1 -1
  70. package/dist/{chunk-4DRLOAVD.js → chunk-LZI4EGOW.js} +209 -56
  71. package/dist/chunk-LZI4EGOW.js.map +1 -0
  72. package/dist/{chunk-6OXR4R6J.cjs → chunk-MMSHLHTA.cjs} +3 -3
  73. package/dist/{chunk-6OXR4R6J.cjs.map → chunk-MMSHLHTA.cjs.map} +1 -1
  74. package/dist/{chunk-VEK64VEE.js → chunk-N77UYRV7.js} +3 -3
  75. package/dist/{chunk-VEK64VEE.js.map → chunk-N77UYRV7.js.map} +1 -1
  76. package/dist/{chunk-64KZM3RZ.cjs → chunk-NZQZ2HFU.cjs} +3 -3
  77. package/dist/{chunk-64KZM3RZ.cjs.map → chunk-NZQZ2HFU.cjs.map} +1 -1
  78. package/dist/{chunk-7XVQATK2.cjs → chunk-OXHAUVK2.cjs} +3 -3
  79. package/dist/{chunk-7XVQATK2.cjs.map → chunk-OXHAUVK2.cjs.map} +1 -1
  80. package/dist/{chunk-YIKE2IY4.js → chunk-QSBPOYWA.js} +3 -3
  81. package/dist/{chunk-YIKE2IY4.js.map → chunk-QSBPOYWA.js.map} +1 -1
  82. package/dist/{chunk-NCGJKKGR.js → chunk-RQW2CFOQ.js} +9 -9
  83. package/dist/{chunk-NCGJKKGR.js.map → chunk-RQW2CFOQ.js.map} +1 -1
  84. package/dist/{chunk-DCNBNLWC.js → chunk-RZG4ALKZ.js} +4 -4
  85. package/dist/{chunk-DCNBNLWC.js.map → chunk-RZG4ALKZ.js.map} +1 -1
  86. package/dist/{chunk-O2ATVRRO.cjs → chunk-SDXK2COQ.cjs} +27 -27
  87. package/dist/{chunk-O2ATVRRO.cjs.map → chunk-SDXK2COQ.cjs.map} +1 -1
  88. package/dist/{chunk-CVYFX7AD.js → chunk-SEBNGA3F.js} +31 -15
  89. package/dist/chunk-SEBNGA3F.js.map +1 -0
  90. package/dist/{chunk-ZBQTFA5X.cjs → chunk-SYWJNSPS.cjs} +4 -4
  91. package/dist/{chunk-ZBQTFA5X.cjs.map → chunk-SYWJNSPS.cjs.map} +1 -1
  92. package/dist/{chunk-2JXJE7Y4.js → chunk-T7LLYVOW.js} +168 -10
  93. package/dist/chunk-T7LLYVOW.js.map +1 -0
  94. package/dist/{chunk-TANZTMPL.cjs → chunk-V2CNHRLZ.cjs} +4 -4
  95. package/dist/{chunk-TANZTMPL.cjs.map → chunk-V2CNHRLZ.cjs.map} +1 -1
  96. package/dist/{chunk-IMFE6FKN.cjs → chunk-WN7XPEYK.cjs} +7 -7
  97. package/dist/{chunk-IMFE6FKN.cjs.map → chunk-WN7XPEYK.cjs.map} +1 -1
  98. package/dist/{chunk-KVKKVSBT.cjs → chunk-XM4KRGCK.cjs} +252 -99
  99. package/dist/chunk-XM4KRGCK.cjs.map +1 -0
  100. package/dist/{chunk-MB2OXZEA.cjs → chunk-XTCNETMI.cjs} +4 -4
  101. package/dist/{chunk-MB2OXZEA.cjs.map → chunk-XTCNETMI.cjs.map} +1 -1
  102. package/dist/{chunk-4HMJQ66B.js → chunk-Y7UHKEVT.js} +4 -4
  103. package/dist/{chunk-4HMJQ66B.js.map → chunk-Y7UHKEVT.js.map} +1 -1
  104. package/dist/{chunk-CIXA5A65.cjs → chunk-YZ6YOOTF.cjs} +30 -14
  105. package/dist/chunk-YZ6YOOTF.cjs.map +1 -0
  106. package/dist/{chunk-QJVDQAYQ.js → chunk-Z4IPTLRS.js} +3 -3
  107. package/dist/{chunk-QJVDQAYQ.js.map → chunk-Z4IPTLRS.js.map} +1 -1
  108. package/dist/collaboration/index.cjs +1 -1
  109. package/dist/collaboration/index.js +1 -1
  110. package/dist/connect/docx.cjs +14 -14
  111. package/dist/connect/docx.js +10 -10
  112. package/dist/connect/index.cjs +680 -677
  113. package/dist/connect/index.cjs.map +1 -1
  114. package/dist/connect/index.js +43 -40
  115. package/dist/connect/index.js.map +1 -1
  116. package/dist/connect/viewer.cjs +9 -9
  117. package/dist/connect/viewer.js +8 -8
  118. package/dist/connection/workflows/ConnectedWorkflowRunPage.d.ts +4 -3
  119. package/dist/connection/workflows/WorkflowRunPage.d.ts +18 -15
  120. package/dist/connection/workflows/index.d.ts +2 -1
  121. package/dist/connection/workflows/runProject.d.ts +47 -0
  122. package/dist/dashboards/index.cjs +1 -1
  123. package/dist/dashboards/index.js +1 -1
  124. package/dist/embed/index.cjs +19 -19
  125. package/dist/embed/index.js +13 -13
  126. package/dist/index.cjs +383 -383
  127. package/dist/index.js +12 -12
  128. package/dist/settings/index.cjs +151 -151
  129. package/dist/settings/index.js +2 -2
  130. package/dist/shell/index.cjs +33 -33
  131. package/dist/shell/index.js +3 -3
  132. package/dist/studio/index.cjs +5 -5
  133. package/dist/studio/index.js +4 -4
  134. package/dist/workflow-canvas/index.cjs +32 -32
  135. package/dist/workflow-canvas/index.js +17 -17
  136. package/dist/workspaces/index.cjs +8 -8
  137. package/dist/workspaces/index.js +1 -1
  138. package/node_modules/@arbidocs/coedit/package.json +1 -1
  139. package/package.json +5 -5
  140. package/dist/ConnectedStreamedWordArtifact-IYAQ2L7G.cjs.map +0 -1
  141. package/dist/ConnectedStreamedWordArtifact-KLLG6W5L.js.map +0 -1
  142. package/dist/chunk-2JXJE7Y4.js.map +0 -1
  143. package/dist/chunk-4DRLOAVD.js.map +0 -1
  144. package/dist/chunk-CIXA5A65.cjs.map +0 -1
  145. package/dist/chunk-CVYFX7AD.js.map +0 -1
  146. package/dist/chunk-FAKRTCAL.cjs.map +0 -1
  147. package/dist/chunk-KVKKVSBT.cjs.map +0 -1
@@ -1,28 +1,28 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkCIXA5A65_cjs = require('./chunk-CIXA5A65.cjs');
4
+ var chunkYZ6YOOTF_cjs = require('./chunk-YZ6YOOTF.cjs');
5
5
  var chunkKWJW5TMH_cjs = require('./chunk-KWJW5TMH.cjs');
6
- var chunkMB2OXZEA_cjs = require('./chunk-MB2OXZEA.cjs');
6
+ var chunkXTCNETMI_cjs = require('./chunk-XTCNETMI.cjs');
7
7
  var chunkTZHLO7HF_cjs = require('./chunk-TZHLO7HF.cjs');
8
- var chunkZJ3NII4U_cjs = require('./chunk-ZJ3NII4U.cjs');
8
+ var chunkECCV4YOL_cjs = require('./chunk-ECCV4YOL.cjs');
9
9
  var chunkSIYNZR5B_cjs = require('./chunk-SIYNZR5B.cjs');
10
- var chunk6OXR4R6J_cjs = require('./chunk-6OXR4R6J.cjs');
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 chunkFAKRTCAL_cjs = require('./chunk-FAKRTCAL.cjs');
14
+ var chunkJ4CXF4A7_cjs = require('./chunk-J4CXF4A7.cjs');
15
15
  var chunkKNC77LZZ_cjs = require('./chunk-KNC77LZZ.cjs');
16
- var chunkZBQTFA5X_cjs = require('./chunk-ZBQTFA5X.cjs');
16
+ var chunkSYWJNSPS_cjs = require('./chunk-SYWJNSPS.cjs');
17
17
  var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
18
+ var chunkBFKTZUFT_cjs = require('./chunk-BFKTZUFT.cjs');
19
+ var chunkWV65MJ43_cjs = require('./chunk-WV65MJ43.cjs');
18
20
  var chunk7CSEMMDJ_cjs = require('./chunk-7CSEMMDJ.cjs');
19
21
  var chunkYQT24SAZ_cjs = require('./chunk-YQT24SAZ.cjs');
20
22
  var chunk6K5CGISL_cjs = require('./chunk-6K5CGISL.cjs');
21
23
  var chunkMGVECEQQ_cjs = require('./chunk-MGVECEQQ.cjs');
22
24
  var chunk5GQOIQCB_cjs = require('./chunk-5GQOIQCB.cjs');
23
25
  var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
24
- var chunkBFKTZUFT_cjs = require('./chunk-BFKTZUFT.cjs');
25
- var chunkWV65MJ43_cjs = require('./chunk-WV65MJ43.cjs');
26
26
  var chunkUIXY4HKM_cjs = require('./chunk-UIXY4HKM.cjs');
27
27
  var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
28
28
  var react = require('@arbidocs/react');
@@ -39,25 +39,25 @@ function useSkillsEnabled() {
39
39
  }
40
40
  function useWorkflowDefinitions() {
41
41
  const { data: listings } = react.useSkills();
42
- const usage = chunkFAKRTCAL_cjs.useWorkflowUsage();
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
- chunkFAKRTCAL_cjs.WEB_WORKFLOWS,
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 = chunkFAKRTCAL_cjs.DASHBOARD_PINNED.flatMap((id) => {
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, ...chunkFAKRTCAL_cjs.sortByRecentUse(fromServer, usage)] : [],
59
- dashboard: [...pinned, ...chunkFAKRTCAL_cjs.DASHBOARD_OPERATIONS],
60
- forTasks: [chunkFAKRTCAL_cjs.CUSTOM_TASK, ...all.filter((w) => w.schedulable), chunkFAKRTCAL_cjs.REMIND_TASK]
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 = chunkFAKRTCAL_cjs.taskComposerToCreateRequest(
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 = chunkFAKRTCAL_cjs.taskComposerToUpdateRequest({ ...ctx, plan: ctx.plan ?? null });
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 = chunkFAKRTCAL_cjs.composerToWorkflowUpdate({ ...ctx, documentTitles, plan: ctx.plan ?? null });
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 = chunkZJ3NII4U_cjs.useConnectedWorkflowScopeSource();
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 chunkFAKRTCAL_cjs.moveTargets(
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: chunkFAKRTCAL_cjs.CUSTOM_TASK_ID,
286
- reminderWorkflowId: chunkFAKRTCAL_cjs.REMIND_TASK_ID,
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
- ...chunkFAKRTCAL_cjs.workflowToComposerValues(launchWorkflow, ids),
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 ? chunkFAKRTCAL_cjs.workflowToComposerValues(editingWorkflow, ids) : task ? chunkFAKRTCAL_cjs.taskToComposerValues(task, ids) : isWorkflow ? {
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 ?? chunkFAKRTCAL_cjs.CUSTOM_TASK_ID,
300
+ workflowId: initialWorkflowId ?? chunkJ4CXF4A7_cjs.CUSTOM_TASK_ID,
301
301
  when: startLater ? "once" : "now",
302
302
  ...initialPrompt ? {
303
303
  inputs: {
304
- [initialWorkflowId === chunkFAKRTCAL_cjs.REMIND_TASK_ID ? "message" : "instruction"]: initialPrompt
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: chunkFAKRTCAL_cjs.CUSTOM_TASK_ID, notifyOnComplete: true }
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 === chunkFAKRTCAL_cjs.CUSTOM_TASK_ID ? plan : null
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
- chunkFAKRTCAL_cjs.TaskComposer,
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: chunkFAKRTCAL_cjs.renderWorkflowIcon,
427
+ renderIcon: chunkJ4CXF4A7_cjs.renderWorkflowIcon,
428
428
  scopeSource,
429
429
  renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
430
- chunkZJ3NII4U_cjs.ConnectedWorkflowDocumentsField,
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 === chunkFAKRTCAL_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
462
- chunkFAKRTCAL_cjs.TaskPlan,
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
- chunkFAKRTCAL_cjs.TaskRunsDialog,
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 } = chunkZJ3NII4U_cjs.useConnectedWorkspaceRole();
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(chunkZBQTFA5X_cjs.PersonPill, { person });
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
- chunkFAKRTCAL_cjs.TaskActivityDialog,
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(chunkZBQTFA5X_cjs.PersonPill, { person });
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
  );
@@ -606,10 +606,12 @@ function ConnectedThreadTaskBar({
606
606
  renderIcon
607
607
  }) {
608
608
  const { conversations } = react.useConversationItems();
609
- const { activity, items, related, signals, startedBy } = chunkMB2OXZEA_cjs.useConnectedThreadActivity(conversationId);
609
+ const { activity, items, related, signals, startedBy } = chunkXTCNETMI_cjs.useConnectedThreadActivity(conversationId);
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
- chunkFAKRTCAL_cjs.WorkflowThreadStrip,
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
- chunkFAKRTCAL_cjs.WorkflowStepAction,
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({ step: step.id, action: "complete", inputs }),
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(chunkFAKRTCAL_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
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
@@ -790,7 +807,7 @@ function ConnectedThreadTaskBar({
790
807
  ] }),
791
808
  error && /* @__PURE__ */ jsxRuntime.jsx("span", { role: "alert", className: "text-xs text-destructive", children: error }),
792
809
  /* @__PURE__ */ jsxRuntime.jsx(
793
- chunk6OXR4R6J_cjs.RenameDialog,
810
+ chunkMMSHLHTA_cjs.RenameDialog,
794
811
  {
795
812
  open: renameOpen,
796
813
  onClose: () => setRenameOpen(false),
@@ -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 } = chunkFAKRTCAL_cjs.matchRequiredLabels(labels, existing);
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
  },
@@ -1028,13 +1092,16 @@ function useWorkflowRunTarget({
1028
1092
  }) {
1029
1093
  const { workspaceId: open } = chunkWV65MJ43_cjs.useConnectedWorkspace();
1030
1094
  const session = react.useArbiSessionStore();
1031
- const selectWorkspace = chunkMB2OXZEA_cjs.useSelectWorkspace();
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
- const made = await createProject.mutateAsync({
1064
- plan: "free",
1065
- ...vars,
1066
- workspace: vars.workspace ?? {}
1067
- });
1068
- const ws = made.workspace?.external_id;
1069
- if (!ws) throw new Error(`The ${ui.entityNoun("PROJECT")} has no workspace`);
1070
- setCreated({ projectId: made.external_id, workspaceId: ws });
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
- await selectWorkspace(ws);
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
- setOpening((o) => o === ws ? null : o);
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
- [createProject, onProjectChange, selectWorkspace, onProjectCreated]
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 === "pick" && !projectId && !startedIn ? "pick" : projectFrom && projectId && !target ? "loading" : target && target !== open ? opening === target ? "opening" : "switch" : "ready";
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 [name, setName] = react$1.useState("");
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
- chunkCIXA5A65_cjs.ProjectOptionRow,
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
- const n = name.trim();
1136
- if (!n) return;
1271
+ if (!complete || creating) return;
1137
1272
  setError(null);
1138
- onCreate(n).catch(
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
- chunkCIXA5A65_cjs.ProjectPicker,
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-2 border-t border-border pt-4",
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(ui.Label, { htmlFor: `${testId}-new-project-name`, children: labels.newProjectName }),
1166
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 sm:flex-row", children: [
1167
- /* @__PURE__ */ jsxRuntime.jsx(
1168
- ui.Input,
1169
- {
1170
- id: `${testId}-new-project-name`,
1171
- value: name,
1172
- onChange: (e) => setName(e.target.value),
1173
- autoFocus: adding,
1174
- className: "sm:max-w-md",
1175
- "data-testid": `${testId}-new-project-name`
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: !name.trim() || creating,
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 ? chunkFAKRTCAL_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
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 = chunkFAKRTCAL_cjs.useWorkflowView({
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(chunkZJ3NII4U_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
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 = chunkFAKRTCAL_cjs.requiredLabelsOf(given);
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 projectStep = pageTarget && typeof projectFrom === "object" ? projectFrom.step : void 0;
2002
+ const fromStep = pageTarget ? projectStepOf(projectFrom) : void 0;
2003
+ const projectStep = fromStep?.step;
1857
2004
  const workflow = react$1.useMemo(
1858
- () => withCommitStep(chunkFAKRTCAL_cjs.withLabelIds(given, labelIds), projectStep),
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 || typeof projectFrom !== "object") return hostCommit;
1880
- const step = projectFrom.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(projectFrom.project(inputs), inputs);
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, projectFrom]);
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 ? { ...inputsFromProject(project), ...hostInitial } : hostInitial,
1895
- [project, inputsFromProject, hostInitial]
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
- chunkFAKRTCAL_cjs.WorkflowRunner,
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
- chunkFAKRTCAL_cjs.WorkflowStepBar,
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 = chunkFAKRTCAL_cjs.requiredLabelsOf(workflow);
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 = typeof projectFrom === "object";
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
- onCreate: (name) => target.makeProject({ name }),
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-KVKKVSBT.cjs.map
2475
- //# sourceMappingURL=chunk-KVKKVSBT.cjs.map
2627
+ //# sourceMappingURL=chunk-XM4KRGCK.cjs.map
2628
+ //# sourceMappingURL=chunk-XM4KRGCK.cjs.map