@arbidocs/blocks 0.4.130 → 0.4.131
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 +3 -4
- package/dist/agents/index.cjs +304 -304
- package/dist/agents/index.js +12 -12
- package/dist/calls/index.cjs +3 -3
- package/dist/calls/index.js +2 -2
- package/dist/chat/index.cjs +144 -144
- package/dist/chat/index.js +5 -5
- package/dist/chat/open-document.d.ts +1 -5
- package/dist/{chunk-SZX44LCT.js → chunk-26E6PHD2.js} +3 -3
- package/dist/{chunk-SZX44LCT.js.map → chunk-26E6PHD2.js.map} +1 -1
- package/dist/{chunk-2PNNCEPH.js → chunk-54ANPPMV.js} +4 -4
- package/dist/{chunk-2PNNCEPH.js.map → chunk-54ANPPMV.js.map} +1 -1
- package/dist/{chunk-FUTMU4FR.js → chunk-5HFPRI3W.js} +3 -3
- package/dist/{chunk-FUTMU4FR.js.map → chunk-5HFPRI3W.js.map} +1 -1
- package/dist/chunk-76JDDMSP.js +31 -0
- package/dist/chunk-76JDDMSP.js.map +1 -0
- package/dist/{chunk-4RLCRFZS.js → chunk-7D4W3SAH.js} +12 -15
- package/dist/chunk-7D4W3SAH.js.map +1 -0
- package/dist/{chunk-2DFDFOM7.js → chunk-7HAM7Y5U.js} +3 -3
- package/dist/{chunk-2DFDFOM7.js.map → chunk-7HAM7Y5U.js.map} +1 -1
- package/dist/{chunk-4QIIDXLF.cjs → chunk-7KH4M3KY.cjs} +10 -10
- package/dist/{chunk-4QIIDXLF.cjs.map → chunk-7KH4M3KY.cjs.map} +1 -1
- package/dist/{chunk-TP6PLDNM.cjs → chunk-7QDX2CO4.cjs} +4 -4
- package/dist/{chunk-TP6PLDNM.cjs.map → chunk-7QDX2CO4.cjs.map} +1 -1
- package/dist/{chunk-RI6DZA5X.js → chunk-A2YAC22G.js} +3 -3
- package/dist/{chunk-RI6DZA5X.js.map → chunk-A2YAC22G.js.map} +1 -1
- package/dist/{chunk-4S5IDT5F.cjs → chunk-BZF55UCE.cjs} +5 -5
- package/dist/{chunk-4S5IDT5F.cjs.map → chunk-BZF55UCE.cjs.map} +1 -1
- package/dist/chunk-C54XEN5T.cjs +34 -0
- package/dist/chunk-C54XEN5T.cjs.map +1 -0
- package/dist/{chunk-GZPTWHP5.cjs → chunk-CDZVC32G.cjs} +10 -22
- package/dist/chunk-CDZVC32G.cjs.map +1 -0
- package/dist/{chunk-PUCY3UXN.js → chunk-CXLVI3SB.js} +3 -3
- package/dist/{chunk-PUCY3UXN.js.map → chunk-CXLVI3SB.js.map} +1 -1
- package/dist/{chunk-W3VYZXNS.js → chunk-D3N67Q4D.js} +3 -3
- package/dist/{chunk-W3VYZXNS.js.map → chunk-D3N67Q4D.js.map} +1 -1
- package/dist/{chunk-KYDRUFWT.cjs → chunk-D4YR56FV.cjs} +5 -5
- package/dist/{chunk-KYDRUFWT.cjs.map → chunk-D4YR56FV.cjs.map} +1 -1
- package/dist/{chunk-QYTYW74G.js → chunk-DI35D756.js} +5 -5
- package/dist/{chunk-QYTYW74G.js.map → chunk-DI35D756.js.map} +1 -1
- package/dist/{chunk-OPTBQSCV.cjs → chunk-DJM7DLCT.cjs} +3 -3
- package/dist/{chunk-OPTBQSCV.cjs.map → chunk-DJM7DLCT.cjs.map} +1 -1
- package/dist/{chunk-2Q7FDZAY.js → chunk-DQCYCEDR.js} +3 -3
- package/dist/{chunk-2Q7FDZAY.js.map → chunk-DQCYCEDR.js.map} +1 -1
- package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
- package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
- package/dist/{chunk-OQ7RUNOC.js → chunk-GFYGYME3.js} +3 -3
- package/dist/{chunk-OQ7RUNOC.js.map → chunk-GFYGYME3.js.map} +1 -1
- package/dist/{chunk-YBLIKTJK.js → chunk-GYCQ3FNL.js} +2 -2
- package/dist/chunk-GYCQ3FNL.js.map +1 -0
- package/dist/{chunk-6AALMYPS.cjs → chunk-HM23LXUP.cjs} +3 -3
- package/dist/{chunk-6AALMYPS.cjs.map → chunk-HM23LXUP.cjs.map} +1 -1
- package/dist/{chunk-WXYQ66KC.cjs → chunk-JK45LSIH.cjs} +5 -5
- package/dist/{chunk-WXYQ66KC.cjs.map → chunk-JK45LSIH.cjs.map} +1 -1
- package/dist/{chunk-UMIY4SQS.js → chunk-KLOSOT26.js} +11 -11
- package/dist/{chunk-UMIY4SQS.js.map → chunk-KLOSOT26.js.map} +1 -1
- package/dist/{chunk-SARREDFP.cjs → chunk-LC2KJSUS.cjs} +46 -46
- package/dist/{chunk-SARREDFP.cjs.map → chunk-LC2KJSUS.cjs.map} +1 -1
- package/dist/{chunk-ARDHLU73.cjs → chunk-LRD7BHAT.cjs} +10 -13
- package/dist/chunk-LRD7BHAT.cjs.map +1 -0
- package/dist/{chunk-R26BK7YL.cjs → chunk-OB5F4577.cjs} +4 -4
- package/dist/{chunk-R26BK7YL.cjs.map → chunk-OB5F4577.cjs.map} +1 -1
- package/dist/{chunk-AAFX64WD.cjs → chunk-OR4CO743.cjs} +3 -3
- package/dist/{chunk-AAFX64WD.cjs.map → chunk-OR4CO743.cjs.map} +1 -1
- package/dist/{chunk-HFGXA5CL.cjs → chunk-OUW6G4O2.cjs} +4 -4
- package/dist/{chunk-HFGXA5CL.cjs.map → chunk-OUW6G4O2.cjs.map} +1 -1
- package/dist/{chunk-4UMXQPNA.js → chunk-P5HOXWYL.js} +8 -20
- package/dist/chunk-P5HOXWYL.js.map +1 -0
- package/dist/{chunk-GDBDHOI4.js → chunk-P5ST47VY.js} +3 -3
- package/dist/{chunk-GDBDHOI4.js.map → chunk-P5ST47VY.js.map} +1 -1
- package/dist/{chunk-OGBXV326.cjs → chunk-S6BOINC4.cjs} +7 -7
- package/dist/{chunk-OGBXV326.cjs.map → chunk-S6BOINC4.cjs.map} +1 -1
- package/dist/{chunk-444XKG46.js → chunk-S7PSMMRG.js} +3 -3
- package/dist/{chunk-444XKG46.js.map → chunk-S7PSMMRG.js.map} +1 -1
- package/dist/{chunk-JKB7WT7L.cjs → chunk-SWQX6CTT.cjs} +2 -2
- package/dist/chunk-SWQX6CTT.cjs.map +1 -0
- package/dist/{chunk-ENDP7JER.js → chunk-VW2C2AZL.js} +3 -3
- package/dist/{chunk-ENDP7JER.js.map → chunk-VW2C2AZL.js.map} +1 -1
- package/dist/{chunk-TT6XV6WM.cjs → chunk-W27VK32R.cjs} +84 -84
- package/dist/{chunk-TT6XV6WM.cjs.map → chunk-W27VK32R.cjs.map} +1 -1
- package/dist/{chunk-PJJY6CYL.cjs → chunk-WV4IDVDQ.cjs} +11 -11
- package/dist/{chunk-PJJY6CYL.cjs.map → chunk-WV4IDVDQ.cjs.map} +1 -1
- package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
- package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
- package/dist/{chunk-Y3KA6X7B.js → chunk-ZCF2JJFA.js} +3 -3
- package/dist/{chunk-Y3KA6X7B.js.map → chunk-ZCF2JJFA.js.map} +1 -1
- package/dist/{chunk-QDEODGXE.cjs → chunk-ZV3BKLFY.cjs} +5 -5
- package/dist/{chunk-QDEODGXE.cjs.map → chunk-ZV3BKLFY.cjs.map} +1 -1
- package/dist/citations/index.cjs +11 -12
- package/dist/citations/index.js +2 -3
- package/dist/collaboration/index.cjs +51 -51
- package/dist/collaboration/index.js +3 -3
- package/dist/connect/docx.cjs +5 -7
- package/dist/connect/docx.cjs.map +1 -1
- package/dist/connect/docx.js +4 -6
- package/dist/connect/docx.js.map +1 -1
- package/dist/connect/index.cjs +155 -161
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -1
- package/dist/connect/index.js +78 -85
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSettings.d.ts +17 -8
- package/dist/connection/ConnectionProvider.d.ts +0 -5
- package/dist/connection/mail/ConnectedMailComposer.d.ts +3 -2
- package/dist/connection/mail/ConnectedMailbox.d.ts +3 -2
- package/dist/connection/mail/MailComposerForm.d.ts +3 -2
- package/dist/connection/mail/index.d.ts +2 -2
- package/dist/connection/mail/mailbox.d.ts +4 -1
- package/dist/connection/mail/types.d.ts +8 -0
- package/dist/document-tools/index.cjs +1 -1
- package/dist/document-tools/index.js +1 -1
- package/dist/facts/index.cjs +4 -5
- package/dist/facts/index.cjs.map +1 -1
- package/dist/facts/index.js +3 -4
- package/dist/facts/index.js.map +1 -1
- package/dist/files/index.cjs +4 -4
- package/dist/files/index.js +3 -3
- package/dist/home/index.cjs +19 -20
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +4 -5
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +679 -679
- package/dist/index.d.ts +1 -2
- package/dist/index.js +24 -24
- package/dist/provider/BlocksProvider.d.ts +4 -39
- package/dist/retrieval/index.cjs +4 -5
- package/dist/retrieval/index.js +2 -3
- package/dist/settings/index.cjs +47 -47
- package/dist/settings/index.js +5 -5
- package/dist/shell/index.cjs +47 -48
- package/dist/shell/index.js +3 -4
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +18 -19
- package/dist/studio/index.cjs.map +1 -1
- package/dist/studio/index.js +10 -11
- package/dist/studio/index.js.map +1 -1
- package/dist/workflow-canvas/index.cjs +65 -65
- package/dist/workflow-canvas/index.js +13 -13
- package/dist/workspaces/index.cjs +3 -3
- package/dist/workspaces/index.js +2 -2
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/dist/chunk-4RLCRFZS.js.map +0 -1
- package/dist/chunk-4UMXQPNA.js.map +0 -1
- package/dist/chunk-ARDHLU73.cjs.map +0 -1
- package/dist/chunk-C4WSHRR6.cjs +0 -166
- package/dist/chunk-C4WSHRR6.cjs.map +0 -1
- package/dist/chunk-GZPTWHP5.cjs.map +0 -1
- package/dist/chunk-JKB7WT7L.cjs.map +0 -1
- package/dist/chunk-YBLIKTJK.js.map +0 -1
- package/dist/chunk-YNIBUKV5.js +0 -163
- package/dist/chunk-YNIBUKV5.js.map +0 -1
- package/dist/provider/dialogs.d.ts +0 -31
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
4
|
+
var chunkLRD7BHAT_cjs = require('../chunk-LRD7BHAT.cjs');
|
|
5
|
+
var chunkW27VK32R_cjs = require('../chunk-W27VK32R.cjs');
|
|
6
|
+
require('../chunk-ZV3BKLFY.cjs');
|
|
7
7
|
require('../chunk-S5HZBXZA.cjs');
|
|
8
|
-
require('../chunk-DVUZTGVL.cjs');
|
|
9
8
|
require('../chunk-ZW6FPIFC.cjs');
|
|
10
|
-
var
|
|
11
|
-
require('../chunk-
|
|
9
|
+
var chunkLC2KJSUS_cjs = require('../chunk-LC2KJSUS.cjs');
|
|
10
|
+
require('../chunk-7D737FLE.cjs');
|
|
12
11
|
require('../chunk-N26CXGXC.cjs');
|
|
12
|
+
require('../chunk-3AFWGEDJ.cjs');
|
|
13
|
+
require('../chunk-DVUZTGVL.cjs');
|
|
14
|
+
require('../chunk-OB5F4577.cjs');
|
|
15
|
+
require('../chunk-DETZZBG2.cjs');
|
|
13
16
|
require('../chunk-V4ISCZJ7.cjs');
|
|
14
17
|
require('../chunk-2EI7NCUA.cjs');
|
|
15
18
|
require('../chunk-C2CWWEHO.cjs');
|
|
16
|
-
require('../chunk-QDEODGXE.cjs');
|
|
17
|
-
require('../chunk-R26BK7YL.cjs');
|
|
18
|
-
require('../chunk-7D737FLE.cjs');
|
|
19
19
|
require('../chunk-7RGLTF76.cjs');
|
|
20
|
-
|
|
21
|
-
var
|
|
20
|
+
require('../chunk-ULWRNGGE.cjs');
|
|
21
|
+
var chunkHM23LXUP_cjs = require('../chunk-HM23LXUP.cjs');
|
|
22
22
|
require('../chunk-7UTB4PHM.cjs');
|
|
23
|
+
var chunk32HW2Q33_cjs = require('../chunk-32HW2Q33.cjs');
|
|
23
24
|
require('../chunk-FX3K6LNZ.cjs');
|
|
24
25
|
require('../chunk-PPCATBOY.cjs');
|
|
25
26
|
require('../chunk-MHVNT4J3.cjs');
|
|
26
|
-
require('../chunk-
|
|
27
|
-
require('../chunk-ULWRNGGE.cjs');
|
|
27
|
+
require('../chunk-C54XEN5T.cjs');
|
|
28
28
|
require('../chunk-KDG6FER6.cjs');
|
|
29
29
|
require('../chunk-DES3K4SD.cjs');
|
|
30
30
|
var react = require('react');
|
|
@@ -50,11 +50,11 @@ function withSteps(workflow, steps, layout) {
|
|
|
50
50
|
const run = workflow.run.kind === "steps" ? workflow.run : { kind: "steps", steps: [] };
|
|
51
51
|
return {
|
|
52
52
|
...workflow,
|
|
53
|
-
run: { ...run, steps:
|
|
53
|
+
run: { ...run, steps: chunkHM23LXUP_cjs.orderSteps(steps), layout: layout ?? run.layout }
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
var layoutOf = (workflow) => workflow.run.kind === "steps" && workflow.run.layout || {};
|
|
57
|
-
var explicit = (steps) => steps.map((s) => ({ ...s, after:
|
|
57
|
+
var explicit = (steps) => steps.map((s) => ({ ...s, after: chunkHM23LXUP_cjs.stepDependencies(steps, s.id) }));
|
|
58
58
|
function stepIdFor(steps, title) {
|
|
59
59
|
const base = title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/^[^a-z]+/, "") || "step";
|
|
60
60
|
const taken = new Set(steps.map((s) => s.id));
|
|
@@ -101,7 +101,7 @@ function blankStep(kind, id, title) {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
function addStep(workflow, kind, options = {}) {
|
|
104
|
-
const steps = explicit(
|
|
104
|
+
const steps = explicit(chunkHM23LXUP_cjs.workflowSteps(workflow));
|
|
105
105
|
const title = options.title ?? DEFAULT_TITLES[kind];
|
|
106
106
|
const id = stepIdFor(steps, title);
|
|
107
107
|
const step = { ...blankStep(kind, id, title), after: options.after ? [options.after] : [] };
|
|
@@ -110,7 +110,7 @@ function addStep(workflow, kind, options = {}) {
|
|
|
110
110
|
return { workflow: withSteps(workflow, [...steps, step], layout), id };
|
|
111
111
|
}
|
|
112
112
|
function removeStep(workflow, id) {
|
|
113
|
-
const steps = explicit(
|
|
113
|
+
const steps = explicit(chunkHM23LXUP_cjs.workflowSteps(workflow));
|
|
114
114
|
const removed = steps.find((s) => s.id === id);
|
|
115
115
|
if (!removed) return workflow;
|
|
116
116
|
const bridged = steps.filter((s) => s.id !== id).map(
|
|
@@ -123,8 +123,8 @@ function removeStep(workflow, id) {
|
|
|
123
123
|
return withSteps(workflow, bridged, layout);
|
|
124
124
|
}
|
|
125
125
|
function connectSteps(workflow, from, to) {
|
|
126
|
-
const steps = explicit(
|
|
127
|
-
if (from === to || !steps.some((s) => s.id === from) ||
|
|
126
|
+
const steps = explicit(chunkHM23LXUP_cjs.workflowSteps(workflow));
|
|
127
|
+
if (from === to || !steps.some((s) => s.id === from) || chunkHM23LXUP_cjs.dependsOn(steps, from, to)) {
|
|
128
128
|
return workflow;
|
|
129
129
|
}
|
|
130
130
|
return withSteps(
|
|
@@ -134,16 +134,16 @@ function connectSteps(workflow, from, to) {
|
|
|
134
134
|
)
|
|
135
135
|
);
|
|
136
136
|
}
|
|
137
|
-
var wouldCycle = (workflow, from, to) => from === to ||
|
|
137
|
+
var wouldCycle = (workflow, from, to) => from === to || chunkHM23LXUP_cjs.dependsOn(chunkHM23LXUP_cjs.workflowSteps(workflow), from, to);
|
|
138
138
|
function disconnectSteps(workflow, from, to) {
|
|
139
|
-
const steps = explicit(
|
|
139
|
+
const steps = explicit(chunkHM23LXUP_cjs.workflowSteps(workflow));
|
|
140
140
|
return withSteps(
|
|
141
141
|
workflow,
|
|
142
142
|
steps.map((s) => s.id === to ? { ...s, after: (s.after ?? []).filter((d) => d !== from) } : s)
|
|
143
143
|
);
|
|
144
144
|
}
|
|
145
145
|
function updateStep(workflow, id, patch) {
|
|
146
|
-
const steps = explicit(
|
|
146
|
+
const steps = explicit(chunkHM23LXUP_cjs.workflowSteps(workflow));
|
|
147
147
|
return withSteps(
|
|
148
148
|
workflow,
|
|
149
149
|
steps.map(
|
|
@@ -157,7 +157,7 @@ var renameIn = (text, from, to) => text.replace(
|
|
|
157
157
|
);
|
|
158
158
|
function renameInput(workflow, from, to) {
|
|
159
159
|
if (from === to) return workflow;
|
|
160
|
-
const steps =
|
|
160
|
+
const steps = chunkHM23LXUP_cjs.workflowSteps(workflow).map((s) => {
|
|
161
161
|
if (s.kind === "agent")
|
|
162
162
|
return {
|
|
163
163
|
...s,
|
|
@@ -206,13 +206,13 @@ function renameInput(workflow, from, to) {
|
|
|
206
206
|
var renamePerson = (a, from, to) => "input" in a && a.input === from ? { input: to } : a;
|
|
207
207
|
var renameRef = (r, from, to) => "input" in r && r.input === from ? { input: to } : r;
|
|
208
208
|
function moveStep(workflow, id, position) {
|
|
209
|
-
return withSteps(workflow,
|
|
209
|
+
return withSteps(workflow, chunkHM23LXUP_cjs.workflowSteps(workflow), { ...layoutOf(workflow), [id]: position });
|
|
210
210
|
}
|
|
211
211
|
var COLUMN = 300;
|
|
212
212
|
var ROW = 140;
|
|
213
213
|
function autoLayout(steps) {
|
|
214
214
|
const layout = {};
|
|
215
|
-
|
|
215
|
+
chunkHM23LXUP_cjs.stepLevels(steps).forEach(
|
|
216
216
|
(level, x) => level.forEach((s, y) => {
|
|
217
217
|
layout[s.id] = { x: x * COLUMN, y: (y - (level.length - 1) / 2) * ROW };
|
|
218
218
|
})
|
|
@@ -220,7 +220,7 @@ function autoLayout(steps) {
|
|
|
220
220
|
return layout;
|
|
221
221
|
}
|
|
222
222
|
function layoutWithDefaults(workflow) {
|
|
223
|
-
const auto = autoLayout(
|
|
223
|
+
const auto = autoLayout(chunkHM23LXUP_cjs.workflowSteps(workflow));
|
|
224
224
|
return { ...auto, ...layoutOf(workflow) };
|
|
225
225
|
}
|
|
226
226
|
var DEFAULT_SIGNALS_EDITOR_LABELS = {
|
|
@@ -317,9 +317,9 @@ function SignalsEditor({
|
|
|
317
317
|
{
|
|
318
318
|
className: ui.cn(
|
|
319
319
|
"space-y-1.5 rounded-md border p-2",
|
|
320
|
-
|
|
320
|
+
chunkLC2KJSUS_cjs.isIncompleteSignal(signal) ? "border-destructive/50" : "border-border"
|
|
321
321
|
),
|
|
322
|
-
"data-incomplete":
|
|
322
|
+
"data-incomplete": chunkLC2KJSUS_cjs.isIncompleteSignal(signal) || void 0,
|
|
323
323
|
"data-testid": `${testId}-${i}`,
|
|
324
324
|
children: [
|
|
325
325
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -1148,7 +1148,7 @@ function StepInspector({
|
|
|
1148
1148
|
}) {
|
|
1149
1149
|
const l = { ...DEFAULT_STEP_INSPECTOR_LABELS, ...labels };
|
|
1150
1150
|
const ol = { ...DEFAULT_FIELD_OPTIONS_EDITOR_LABELS, ...optionLabels };
|
|
1151
|
-
const steps =
|
|
1151
|
+
const steps = chunkHM23LXUP_cjs.workflowSteps(workflow);
|
|
1152
1152
|
const step = steps.find((s) => s.id === stepId);
|
|
1153
1153
|
const run = workflow.run.kind === "steps" ? workflow.run : void 0;
|
|
1154
1154
|
if (!step || !run) {
|
|
@@ -1175,8 +1175,8 @@ function StepInspector({
|
|
|
1175
1175
|
const patch = (p) => onChange(updateStep(workflow, step.id, p));
|
|
1176
1176
|
const al = { ...DEFAULT_STEP_ACTION_SETTINGS_LABELS, ...actionLabels };
|
|
1177
1177
|
const ctx = {
|
|
1178
|
-
earlier:
|
|
1179
|
-
fields:
|
|
1178
|
+
earlier: chunkHM23LXUP_cjs.upstreamSteps(steps, step.id),
|
|
1179
|
+
fields: chunkHM23LXUP_cjs.runFields(workflow),
|
|
1180
1180
|
people,
|
|
1181
1181
|
tags,
|
|
1182
1182
|
documents
|
|
@@ -1197,7 +1197,7 @@ function StepInspector({
|
|
|
1197
1197
|
)
|
|
1198
1198
|
);
|
|
1199
1199
|
};
|
|
1200
|
-
const deps =
|
|
1200
|
+
const deps = chunkHM23LXUP_cjs.stepDependencies(steps, step.id);
|
|
1201
1201
|
const titleOf = (id) => steps.find((s) => s.id === id)?.title ?? id;
|
|
1202
1202
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": `${testId}-step`, children: [
|
|
1203
1203
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -1278,7 +1278,7 @@ function StepInspector({
|
|
|
1278
1278
|
{
|
|
1279
1279
|
step,
|
|
1280
1280
|
workflows,
|
|
1281
|
-
fields:
|
|
1281
|
+
fields: chunkHM23LXUP_cjs.runFields(workflow).map((f) => f.name),
|
|
1282
1282
|
patch,
|
|
1283
1283
|
l,
|
|
1284
1284
|
testId
|
|
@@ -1339,7 +1339,7 @@ function StepInspector({
|
|
|
1339
1339
|
testId: `${testId}-review-grid`
|
|
1340
1340
|
}
|
|
1341
1341
|
),
|
|
1342
|
-
|
|
1342
|
+
chunkHM23LXUP_cjs.canAssign(step) && /* @__PURE__ */ jsxRuntime.jsx(AssigneeSettings, { step, patch, ctx, l: al, testId }),
|
|
1343
1343
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1344
1344
|
SignalsEditor,
|
|
1345
1345
|
{
|
|
@@ -1605,7 +1605,7 @@ function triggerFields(trigger, clearOthers) {
|
|
|
1605
1605
|
return {
|
|
1606
1606
|
timezone: trigger.timezone,
|
|
1607
1607
|
rrule: trigger.start === "repeat" ? trigger.rrule.trim() : none,
|
|
1608
|
-
run_at: trigger.start === "once" ?
|
|
1608
|
+
run_at: trigger.start === "once" ? chunkW27VK32R_cjs.localInputToIso(trigger.runAt) : none,
|
|
1609
1609
|
event_kind: trigger.start === "event" ? trigger.eventKind.trim() : none,
|
|
1610
1610
|
// A step signal is `workflow_signal` narrowed to one signal name.
|
|
1611
1611
|
event_filter: filter ?? none,
|
|
@@ -1621,7 +1621,7 @@ function plan(value, options) {
|
|
|
1621
1621
|
criteria: [],
|
|
1622
1622
|
max_passes: 3,
|
|
1623
1623
|
documents: [],
|
|
1624
|
-
steps:
|
|
1624
|
+
steps: chunkLC2KJSUS_cjs.toPlanSteps(value.workflow, options)
|
|
1625
1625
|
};
|
|
1626
1626
|
}
|
|
1627
1627
|
function builderToWorkflowRequest(value, workspaceId, options = {}) {
|
|
@@ -1656,7 +1656,7 @@ function builderToWorkflowUpdate(value, options = {}) {
|
|
|
1656
1656
|
}
|
|
1657
1657
|
function workflowRecordToBuilder(record) {
|
|
1658
1658
|
const planned = record.plan?.steps ?? [];
|
|
1659
|
-
const steps = planned.length ?
|
|
1659
|
+
const steps = planned.length ? chunkLC2KJSUS_cjs.fromPlanSteps(planned) : record.prompt || record.skill_ref ? [
|
|
1660
1660
|
{
|
|
1661
1661
|
id: "work",
|
|
1662
1662
|
kind: "agent",
|
|
@@ -1664,7 +1664,7 @@ function workflowRecordToBuilder(record) {
|
|
|
1664
1664
|
...record.skill_ref ? { workflow: record.skill_ref } : { run: { kind: "prompt", promptTemplate: record.prompt } }
|
|
1665
1665
|
}
|
|
1666
1666
|
] : [];
|
|
1667
|
-
const when =
|
|
1667
|
+
const when = chunkW27VK32R_cjs.workflowWhen(record);
|
|
1668
1668
|
return {
|
|
1669
1669
|
workflow: {
|
|
1670
1670
|
id: record.external_id,
|
|
@@ -1673,12 +1673,12 @@ function workflowRecordToBuilder(record) {
|
|
|
1673
1673
|
inputs: [],
|
|
1674
1674
|
landing: "chat",
|
|
1675
1675
|
schedulable: false,
|
|
1676
|
-
run: { kind: "steps", steps, layout:
|
|
1676
|
+
run: { kind: "steps", steps, layout: chunkLC2KJSUS_cjs.layoutFromPlanSteps(planned ?? []) }
|
|
1677
1677
|
},
|
|
1678
1678
|
trigger: {
|
|
1679
1679
|
...DEFAULT_WORKFLOW_TRIGGER,
|
|
1680
1680
|
start: when === "now" ? "manual" : when,
|
|
1681
|
-
runAt:
|
|
1681
|
+
runAt: chunkW27VK32R_cjs.isoToLocalInput(record.run_at),
|
|
1682
1682
|
rrule: record.rrule ?? "",
|
|
1683
1683
|
timezone: record.timezone || DEFAULT_WORKFLOW_TRIGGER.timezone,
|
|
1684
1684
|
eventKind: record.event_kind ?? "",
|
|
@@ -1734,7 +1734,7 @@ function triggerSummary(trigger, options = {}) {
|
|
|
1734
1734
|
case "once":
|
|
1735
1735
|
return trigger.runAt ? new Date(trigger.runAt).toLocaleString() : l.starts.once;
|
|
1736
1736
|
case "repeat":
|
|
1737
|
-
return trigger.rrule ?
|
|
1737
|
+
return trigger.rrule ? chunkW27VK32R_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
|
|
1738
1738
|
case "event":
|
|
1739
1739
|
if (isSignalTrigger(trigger))
|
|
1740
1740
|
return trigger.signal ? l.signalSummary.replace("{signal}", trigger.signal) : l.stepSignals;
|
|
@@ -1793,7 +1793,7 @@ function TriggerInspector({
|
|
|
1793
1793
|
}
|
|
1794
1794
|
)
|
|
1795
1795
|
] }),
|
|
1796
|
-
trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1796
|
+
trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkW27VK32R_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
|
|
1797
1797
|
trigger.start === "event" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1798
1798
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.event }),
|
|
1799
1799
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1845,7 +1845,7 @@ function TriggerInspector({
|
|
|
1845
1845
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1846
1846
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.agent }),
|
|
1847
1847
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1848
|
-
|
|
1848
|
+
chunkW27VK32R_cjs.AgentSelect,
|
|
1849
1849
|
{
|
|
1850
1850
|
agents,
|
|
1851
1851
|
value: trigger.agentId,
|
|
@@ -1913,7 +1913,7 @@ function revealCenter(node, view, frame, reserveRight = 0) {
|
|
|
1913
1913
|
};
|
|
1914
1914
|
}
|
|
1915
1915
|
var DEFAULT_WORKFLOW_CANVAS_LABELS = {
|
|
1916
|
-
...
|
|
1916
|
+
...chunkHM23LXUP_cjs.DEFAULT_STEP_KIND_LABELS,
|
|
1917
1917
|
redline: "Tracked changes",
|
|
1918
1918
|
branch: "Branch",
|
|
1919
1919
|
kindHints: {
|
|
@@ -1944,7 +1944,7 @@ var DEFAULT_WORKFLOW_CANVAS_LABELS = {
|
|
|
1944
1944
|
fitView: "Fit view"
|
|
1945
1945
|
};
|
|
1946
1946
|
var TRIGGER_NODE = "__trigger";
|
|
1947
|
-
var KINDS =
|
|
1947
|
+
var KINDS = chunkHM23LXUP_cjs.WORKFLOW_STEP_KINDS;
|
|
1948
1948
|
function AddNext({
|
|
1949
1949
|
from,
|
|
1950
1950
|
onAdd,
|
|
@@ -1966,7 +1966,7 @@ function AddNext({
|
|
|
1966
1966
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.PopoverContent, { side: "right", align: "start", className: "w-60 p-1.5", children: [
|
|
1967
1967
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 pb-1 pt-0.5 text-xs font-medium text-muted-foreground", children: l.addNext }),
|
|
1968
1968
|
KINDS.map((kind) => {
|
|
1969
|
-
const Icon =
|
|
1969
|
+
const Icon = chunkHM23LXUP_cjs.STEP_KIND_ICONS[kind];
|
|
1970
1970
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1971
1971
|
"button",
|
|
1972
1972
|
{
|
|
@@ -2005,8 +2005,8 @@ function PhaseMark({ phase }) {
|
|
|
2005
2005
|
}
|
|
2006
2006
|
function StepNode({ data }) {
|
|
2007
2007
|
const { step, phase, summary, assignee, icon, l, onAdd, testId } = data;
|
|
2008
|
-
const kind =
|
|
2009
|
-
const KindIcon =
|
|
2008
|
+
const kind = chunkHM23LXUP_cjs.stepKindOf(step);
|
|
2009
|
+
const KindIcon = chunkHM23LXUP_cjs.STEP_KIND_ICONS[kind];
|
|
2010
2010
|
const redline = step.kind === "agent" && !!step.editDocument;
|
|
2011
2011
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2012
2012
|
"div",
|
|
@@ -2140,12 +2140,12 @@ function WorkflowCanvas({
|
|
|
2140
2140
|
testId = "workflow-canvas"
|
|
2141
2141
|
}) {
|
|
2142
2142
|
const l = react.useMemo(() => ({ ...DEFAULT_WORKFLOW_CANVAS_LABELS, ...labels }), [labels]);
|
|
2143
|
-
const steps =
|
|
2143
|
+
const steps = chunkHM23LXUP_cjs.workflowSteps(workflow);
|
|
2144
2144
|
const editable = !!onChange;
|
|
2145
2145
|
const built = react.useMemo(() => {
|
|
2146
2146
|
const layout = layoutWithDefaults(workflow);
|
|
2147
|
-
const all =
|
|
2148
|
-
const roots = all.filter((s) =>
|
|
2147
|
+
const all = chunkHM23LXUP_cjs.workflowSteps(workflow);
|
|
2148
|
+
const roots = all.filter((s) => chunkHM23LXUP_cjs.stepDependencies(all, s.id).length === 0);
|
|
2149
2149
|
const triggerNode = trigger ? [
|
|
2150
2150
|
{
|
|
2151
2151
|
id: TRIGGER_NODE,
|
|
@@ -2194,7 +2194,7 @@ function WorkflowCanvas({
|
|
|
2194
2194
|
react.useEffect(() => setNodes(built), [built]);
|
|
2195
2195
|
const edges = react.useMemo(
|
|
2196
2196
|
() => steps.flatMap((s) => {
|
|
2197
|
-
const deps =
|
|
2197
|
+
const deps = chunkHM23LXUP_cjs.stepDependencies(steps, s.id);
|
|
2198
2198
|
const from = deps.length ? deps : trigger ? [TRIGGER_NODE] : [];
|
|
2199
2199
|
return from.map((d) => ({
|
|
2200
2200
|
id: `${d}->${s.id}`,
|
|
@@ -2364,7 +2364,7 @@ function WorkflowCanvas({
|
|
|
2364
2364
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold", children: l.emptyTitle }),
|
|
2365
2365
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: l.emptyHint }),
|
|
2366
2366
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 grid grid-cols-2 gap-2", children: KINDS.map((kind) => {
|
|
2367
|
-
const Icon =
|
|
2367
|
+
const Icon = chunkHM23LXUP_cjs.STEP_KIND_ICONS[kind];
|
|
2368
2368
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2369
2369
|
"button",
|
|
2370
2370
|
{
|
|
@@ -2414,7 +2414,7 @@ var DEFAULT_WORKFLOW_BUILDER_LABELS = {
|
|
|
2414
2414
|
}
|
|
2415
2415
|
};
|
|
2416
2416
|
var PANEL_WIDTH = 344;
|
|
2417
|
-
var KINDS2 =
|
|
2417
|
+
var KINDS2 = chunkHM23LXUP_cjs.WORKFLOW_STEP_KINDS;
|
|
2418
2418
|
function WorkflowBuilder({
|
|
2419
2419
|
value,
|
|
2420
2420
|
onChange,
|
|
@@ -2446,12 +2446,12 @@ function WorkflowBuilder({
|
|
|
2446
2446
|
const [mode, setMode] = react.useState("design");
|
|
2447
2447
|
const [adding, setAdding] = react.useState(false);
|
|
2448
2448
|
const { workflow, trigger } = value;
|
|
2449
|
-
const steps =
|
|
2450
|
-
const problems =
|
|
2451
|
-
const missing =
|
|
2449
|
+
const steps = chunkHM23LXUP_cjs.workflowSteps(workflow);
|
|
2450
|
+
const problems = chunkHM23LXUP_cjs.validateWorkflowGraph(steps);
|
|
2451
|
+
const missing = chunkHM23LXUP_cjs.stepConfigProblems(steps);
|
|
2452
2452
|
const nameOf = (id) => people.find((p) => p.value === id)?.label;
|
|
2453
|
-
const fields =
|
|
2454
|
-
const assigneeOf = (step) =>
|
|
2453
|
+
const fields = chunkHM23LXUP_cjs.runFields(workflow);
|
|
2454
|
+
const assigneeOf = (step) => chunkHM23LXUP_cjs.canAssign(step) ? chunkHM23LXUP_cjs.assigneeName(step.assignee, { nameOf, fields }) : void 0;
|
|
2455
2455
|
const titles = react.useMemo(() => new Map(workflows.map((w) => [w.id, w.title])), [workflows]);
|
|
2456
2456
|
const setWorkflow = (next) => onChange({ ...value, workflow: next });
|
|
2457
2457
|
const addAfter = (from, kind) => {
|
|
@@ -2520,7 +2520,7 @@ function WorkflowBuilder({
|
|
|
2520
2520
|
l.addStep
|
|
2521
2521
|
] }) }),
|
|
2522
2522
|
/* @__PURE__ */ jsxRuntime.jsx(ui.PopoverContent, { align: "start", className: "w-64 p-1.5", children: KINDS2.map((kind) => {
|
|
2523
|
-
const Icon =
|
|
2523
|
+
const Icon = chunkHM23LXUP_cjs.STEP_KIND_ICONS[kind];
|
|
2524
2524
|
const cls = { ...DEFAULT_WORKFLOW_CANVAS_LABELS, ...canvasLabels };
|
|
2525
2525
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2526
2526
|
"button",
|
|
@@ -2682,13 +2682,13 @@ function WorkflowPreview({
|
|
|
2682
2682
|
renderIcon,
|
|
2683
2683
|
testId
|
|
2684
2684
|
}) {
|
|
2685
|
-
const run =
|
|
2685
|
+
const run = chunkW27VK32R_cjs.useWorkflowPreview(workflow, {
|
|
2686
2686
|
resolveWorkflow: (id) => workflows.find((w) => w.id === id),
|
|
2687
2687
|
compose,
|
|
2688
2688
|
answer
|
|
2689
2689
|
});
|
|
2690
2690
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2691
|
-
|
|
2691
|
+
chunkLC2KJSUS_cjs.WorkflowRunner,
|
|
2692
2692
|
{
|
|
2693
2693
|
workflow,
|
|
2694
2694
|
run,
|
|
@@ -2737,7 +2737,7 @@ function ConnectedWorkflowBuilder({
|
|
|
2737
2737
|
...builderProps
|
|
2738
2738
|
}) {
|
|
2739
2739
|
const l = { ...DEFAULT_CONNECTED_WORKFLOW_BUILDER_LABELS, ...connectedLabels };
|
|
2740
|
-
const { workspaceId, status, ensureWorkspaceOpen } =
|
|
2740
|
+
const { workspaceId, status, ensureWorkspaceOpen } = chunkLRD7BHAT_cjs.useConnection();
|
|
2741
2741
|
const members = react$2.useWorkspaceUsers(workspaceId ?? void 0, {
|
|
2742
2742
|
enabled: status === "authenticated" && !!workspaceId,
|
|
2743
2743
|
beforeFetch: ensureWorkspaceOpen
|
|
@@ -2777,7 +2777,7 @@ function ConnectedWorkflowBuilder({
|
|
|
2777
2777
|
() => [
|
|
2778
2778
|
...hostWorkflows,
|
|
2779
2779
|
...(skills.data ?? []).map(
|
|
2780
|
-
(s) =>
|
|
2780
|
+
(s) => chunkHM23LXUP_cjs.skillToWorkflow({
|
|
2781
2781
|
name: s.name,
|
|
2782
2782
|
slug: s.slug,
|
|
2783
2783
|
description: s.description,
|
|
@@ -2793,7 +2793,7 @@ function ConnectedWorkflowBuilder({
|
|
|
2793
2793
|
}));
|
|
2794
2794
|
const tasks = (conversations.data ?? []).filter((c) => c.status && c.status !== "done").map((c) => ({ value: c.external_id, label: c.title || c.external_id }));
|
|
2795
2795
|
const options = { resolveWorkflow: (wid) => workflows.find((w) => w.id === wid), compose };
|
|
2796
|
-
const problem = triggerProblem(value.trigger) ?? (
|
|
2796
|
+
const problem = triggerProblem(value.trigger) ?? (chunkHM23LXUP_cjs.validateWorkflowGraph(chunkHM23LXUP_cjs.workflowSteps(value.workflow)).length || chunkHM23LXUP_cjs.stepConfigProblems(chunkHM23LXUP_cjs.workflowSteps(value.workflow)).length ? "graph" : null);
|
|
2797
2797
|
const busy = !!pending || create.isPending || update.isPending || run.isPending;
|
|
2798
2798
|
const save = async () => {
|
|
2799
2799
|
if (!workspaceId) return void 0;
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useConnection } from '../chunk-
|
|
3
|
-
import { workflowWhen, isoToLocalInput, describeRRule, RecurrenceBuilder, AgentSelect, useWorkflowPreview, localInputToIso } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
2
|
+
import { useConnection } from '../chunk-7D4W3SAH.js';
|
|
3
|
+
import { workflowWhen, isoToLocalInput, describeRRule, RecurrenceBuilder, AgentSelect, useWorkflowPreview, localInputToIso } from '../chunk-KLOSOT26.js';
|
|
4
|
+
import '../chunk-P5ST47VY.js';
|
|
5
5
|
import '../chunk-4XJZ6AAY.js';
|
|
6
|
-
import '../chunk-5LXQPP2K.js';
|
|
7
6
|
import '../chunk-P6GHJSLR.js';
|
|
8
|
-
import { isIncompleteSignal, fromPlanSteps, layoutFromPlanSteps, WorkflowRunner, toPlanSteps } from '../chunk-
|
|
9
|
-
import '../chunk-
|
|
7
|
+
import { isIncompleteSignal, fromPlanSteps, layoutFromPlanSteps, WorkflowRunner, toPlanSteps } from '../chunk-54ANPPMV.js';
|
|
8
|
+
import '../chunk-XD2M6LIG.js';
|
|
10
9
|
import '../chunk-6S5FLMWG.js';
|
|
10
|
+
import '../chunk-RFXJYIDV.js';
|
|
11
|
+
import '../chunk-5LXQPP2K.js';
|
|
12
|
+
import '../chunk-S7PSMMRG.js';
|
|
13
|
+
import '../chunk-EVUEIBNU.js';
|
|
11
14
|
import '../chunk-NUNKSZKU.js';
|
|
12
15
|
import '../chunk-YU2KUMGE.js';
|
|
13
16
|
import '../chunk-N5YEF3LC.js';
|
|
14
|
-
import '../chunk-GDBDHOI4.js';
|
|
15
|
-
import '../chunk-444XKG46.js';
|
|
16
|
-
import '../chunk-XD2M6LIG.js';
|
|
17
17
|
import '../chunk-4WWM3GQ5.js';
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
18
|
+
import '../chunk-TX2ZICS7.js';
|
|
19
|
+
import { DEFAULT_STEP_KIND_LABELS, workflowSteps, dependsOn, stepLevels, runFields, upstreamSteps, stepDependencies, canAssign, WORKFLOW_STEP_KINDS, STEP_KIND_ICONS, validateWorkflowGraph, stepConfigProblems, skillToWorkflow, assigneeName, orderSteps, stepKindOf } from '../chunk-7HAM7Y5U.js';
|
|
20
20
|
import '../chunk-AA3PT6KR.js';
|
|
21
|
+
import { TONE_DOT, TONES, isTone } from '../chunk-AUS3KBHJ.js';
|
|
21
22
|
import '../chunk-SLSBJRWW.js';
|
|
22
23
|
import '../chunk-NPLYHR2E.js';
|
|
23
24
|
import '../chunk-7F6CBP3Z.js';
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-TX2ZICS7.js';
|
|
25
|
+
import '../chunk-76JDDMSP.js';
|
|
26
26
|
import '../chunk-OXF2IFXG.js';
|
|
27
27
|
import '../chunk-VUNV25KB.js';
|
|
28
28
|
import { useState, useMemo, useEffect, useCallback, useRef } from 'react';
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
var chunkXZIYRKLW_cjs = require('../chunk-XZIYRKLW.cjs');
|
|
5
5
|
var chunkXAJIKT6Y_cjs = require('../chunk-XAJIKT6Y.cjs');
|
|
6
6
|
var chunk7G2LJMUG_cjs = require('../chunk-7G2LJMUG.cjs');
|
|
7
|
-
var
|
|
8
|
-
require('../chunk-C4WSHRR6.cjs');
|
|
7
|
+
var chunkOB5F4577_cjs = require('../chunk-OB5F4577.cjs');
|
|
9
8
|
var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
|
|
9
|
+
require('../chunk-C54XEN5T.cjs');
|
|
10
10
|
var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
|
|
11
11
|
require('../chunk-DES3K4SD.cjs');
|
|
12
12
|
var react = require('react');
|
|
@@ -52,7 +52,7 @@ function WorkspaceCardRoot({
|
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
54
|
return /* @__PURE__ */ jsxRuntime.jsx(CardContext.Provider, { value: { current, testId, labels: mergedLabels }, children: href ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
-
|
|
55
|
+
chunkOB5F4577_cjs.ActionLink,
|
|
56
56
|
{
|
|
57
57
|
...rest,
|
|
58
58
|
href,
|
package/dist/workspaces/index.js
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import { CollapsibleSection, KeyValueRow } from '../chunk-LGBAZD37.js';
|
|
3
3
|
import { MemberAvatarStack } from '../chunk-XNOASBGW.js';
|
|
4
4
|
export { RoleBadge, WorkspaceTypeBadgeView } from '../chunk-NBV56SGU.js';
|
|
5
|
-
import { ActionLink } from '../chunk-
|
|
6
|
-
import '../chunk-YNIBUKV5.js';
|
|
5
|
+
import { ActionLink } from '../chunk-S7PSMMRG.js';
|
|
7
6
|
import { ModalHeader } from '../chunk-TX2ZICS7.js';
|
|
7
|
+
import '../chunk-76JDDMSP.js';
|
|
8
8
|
import { fromNow, fmtDate } from '../chunk-OXF2IFXG.js';
|
|
9
9
|
import '../chunk-VUNV25KB.js';
|
|
10
10
|
import { createContext, useContext, useMemo, useState, useCallback, useId } from 'react';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbidocs/coedit",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.131",
|
|
4
4
|
"description": "Real-time collaboration for the ARBI native DOCX editor: a Yjs mirror of the canonical OOXML package, session, and server runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbidocs/blocks",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.131",
|
|
4
4
|
"description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -280,8 +280,8 @@
|
|
|
280
280
|
"example:test:e2e": "playwright test -c examples/custom-ui/playwright.config.ts"
|
|
281
281
|
},
|
|
282
282
|
"dependencies": {
|
|
283
|
-
"@arbidocs/client": "0.4.
|
|
284
|
-
"@arbidocs/coedit": "0.4.
|
|
283
|
+
"@arbidocs/client": "0.4.131",
|
|
284
|
+
"@arbidocs/coedit": "0.4.131",
|
|
285
285
|
"@dnd-kit/core": "^6.3.1",
|
|
286
286
|
"@dnd-kit/sortable": "^10.0.0",
|
|
287
287
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -324,7 +324,7 @@
|
|
|
324
324
|
"y-protocols": "^1.0.6"
|
|
325
325
|
},
|
|
326
326
|
"peerDependencies": {
|
|
327
|
-
"@arbidocs/react": "0.4.
|
|
327
|
+
"@arbidocs/react": "0.4.131",
|
|
328
328
|
"@lexical/html": "0.35.0",
|
|
329
329
|
"@lexical/link": "0.35.0",
|
|
330
330
|
"@lexical/list": "0.35.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ConnectionProvider.tsx"],"names":[],"mappings":"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","file":"chunk-4RLCRFZS.js","sourcesContent":["/**\n * The demo/live connection layer for a host app. Holds auth + workspace\n * selection state and exposes it via {@link useConnection}, so every surface\n * works identically whether it's talking to a live ARBI backend or the seeded\n * demo workspace. Host-specific values (backend URL, demo identity, default\n * workspace/assistant ids) arrive once through {@link ArbiConnectionConfig}.\n */\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport {\n AccountClientProvider,\n ArbiSessionStateProvider,\n arbiAccountClient,\n toProfileView,\n useArbi,\n useArbiSessionState,\n useArbiSessionStore,\n type AccountClient,\n type LoginProfile,\n type ProfileView,\n} from '@arbidocs/react'\nimport type { ArbiMode, ArbiUser, ConnectionStatus, ArbiConnectionConfig } from './types'\n\ninterface ConnectionValue {\n mode: ArbiMode\n status: ConnectionStatus\n user: ArbiUser | null\n /** The selected workspace: the session state's (`useArbiSessionState`), set by `setWorkspace`. */\n workspaceId: string | null\n apiConfigured: boolean\n apiUrl: string\n /**\n * The deployment domain the user's keys are derived for (`arbi.getDeploymentDomain()`), for the\n * document tools' e-signing. `undefined` in demo mode.\n */\n deploymentDomain: string | undefined\n error: string | null\n /** Default assistant config ext_id (for the AI hooks). */\n assistantConfig?: string\n /** Fallback workspace ext_id when none is actively selected. */\n fallbackWorkspaceId?: string\n /** Authenticate. Live login when a backend is configured, otherwise the demo workspace. */\n login: (email: string, password: string) => Promise<void>\n /** One-click demo entry (no backend required). */\n enterDemo: () => void\n logout: () => void\n /**\n * Affirmatively select a workspace: opens it on the server (via the SDK),\n * updates the app-wide state, and persists the choice so it survives future\n * logins. This is the single entry point for \"the user is now in workspace X\".\n */\n setWorkspace: (id: string) => Promise<void>\n /**\n * Re-assert the selected workspace on the server session (idempotent `/open`).\n * Call before a workspace-scoped write when the session may have lost its open\n * workspace (token re-login, backend restart, session expiry) — the server\n * resolves the workspace from the session, so a dropped `/open` yields\n * \"No active workspace\" until it's re-opened.\n */\n ensureWorkspaceOpen: () => Promise<void>\n}\n\nconst ConnectionContext = createContext<ConnectionValue | null>(null)\n\n/**\n * Persist the affirmatively-selected workspace per backend AND per signed-in user, so a returning\n * user lands back in the workspace they last chose, while the next person on a shared browser\n * never starts from someone else's workspace id. Namespaced by apiUrl so distinct deployments\n * (and the demo workspace) don't clobber each other. Cleared on logout.\n */\nconst WORKSPACE_STORAGE_PREFIX = 'arbi:selectedWorkspace'\nconst sessionUserKey = (apiUrl: string) => `arbi:sessionUser:${apiUrl}`\nfunction rememberSessionUser(apiUrl: string, email: string | null) {\n try {\n if (email) window.localStorage.setItem(sessionUserKey(apiUrl), normalizeUserKey(email))\n else window.localStorage.removeItem(sessionUserKey(apiUrl))\n } catch {\n /* Storage may be unavailable. */\n }\n}\nconst normalizeUserKey = (email: string) => email.trim().toLowerCase()\n\n/** Exported for tests. */\nexport const workspaceStorageKey = (apiUrl: string, userKey: string) =>\n `${WORKSPACE_STORAGE_PREFIX}:${apiUrl || 'demo'}:${normalizeUserKey(userKey)}`\n\n/** The pre-isolation key (apiUrl only). Never read: removed so it cannot leak across users. */\nconst legacyWorkspaceStorageKey = (apiUrl: string) =>\n `${WORKSPACE_STORAGE_PREFIX}:${apiUrl || 'demo'}`\n\nfunction readPersistedWorkspace(apiUrl: string, userKey: string | null): string | null {\n if (!userKey) return null\n try {\n return window.localStorage.getItem(workspaceStorageKey(apiUrl, userKey))\n } catch {\n return null\n }\n}\n\nfunction persistWorkspace(apiUrl: string, userKey: string | null, id: string | null): void {\n if (!userKey) return\n try {\n if (id) window.localStorage.setItem(workspaceStorageKey(apiUrl, userKey), id)\n else window.localStorage.removeItem(workspaceStorageKey(apiUrl, userKey))\n window.localStorage.removeItem(legacyWorkspaceStorageKey(apiUrl))\n } catch {\n // Storage unavailable (private mode, SSR) — selection stays in-memory only.\n }\n}\n\n/** Shown on the sign-in screen after the session could not be recovered. */\nexport const SESSION_EXPIRED_MESSAGE = 'Your session expired. Sign in again.'\n\n/** The connection user for a profile: its full name, falling back to the email local part. */\nfunction userFromProfile(profile: LoginProfile, externalId?: string): ArbiUser {\n const fullName = [profile.givenName, profile.familyName]\n .map((part) => part?.trim())\n .filter(Boolean)\n .join(' ')\n return {\n name: fullName || profile.email.split('@')[0],\n email: profile.email,\n externalId,\n picture: profile.picture,\n }\n}\n\n/**\n * The connection, over the session state of the host (an `ArbiSessionStateProvider` above), else\n * its own: the selected workspace lives there, so every block reads one value.\n */\nexport function ConnectionProvider({\n config,\n children,\n}: {\n config: ArbiConnectionConfig\n children: ReactNode\n}) {\n return (\n <ArbiSessionStateProvider>\n <SessionConnectionProvider config={config}>{children}</SessionConnectionProvider>\n </ArbiSessionStateProvider>\n )\n}\n\nfunction SessionConnectionProvider({\n config,\n children,\n}: {\n config: ArbiConnectionConfig\n children: ReactNode\n}) {\n const arbi = useArbi()\n const session = useArbiSessionStore()\n const isLiveConfigured = config.apiUrl.length > 0\n const demoWorkspaceId = config.demoWorkspaceId ?? 'demo-workspace'\n\n const [status, setStatus] = useState<ConnectionStatus>(\n isLiveConfigured ? 'connecting' : 'disconnected'\n )\n const [user, setUser] = useState<ArbiUser | null>(null)\n const workspaceId = useArbiSessionState((s) => s.workspaceId)\n const selectWorkspaceId = session.setWorkspaceId\n const [mode, setMode] = useState<ArbiMode>('demo')\n const [error, setError] = useState<string | null>(null)\n // Who the persisted workspace belongs to; set at sign-in, cleared at logout.\n const storageUserRef = useRef<string | null>(null)\n\n // The SDK could not recover the session (token refused, workspace not re-openable): drop to\n // 'disconnected' with a plain message, so the host's gate sends the user to sign in instead of\n // every call failing with a raw backend error. The remembered workspace is kept for next login.\n useEffect(\n () =>\n arbi.onSessionExpired?.(() => {\n rememberSessionUser(config.apiUrl, null)\n storageUserRef.current = null\n setUser(null)\n selectWorkspaceId(null)\n setStatus('disconnected')\n setError(SESSION_EXPIRED_MESSAGE)\n }),\n [arbi, config.apiUrl, selectWorkspaceId]\n )\n\n // A saved name, picture or email reaches every surface reading `useConnection().user`.\n useEffect(\n () =>\n arbi.user.onProfileChange?.((profile) =>\n setUser((current) => (current ? userFromProfile(profile, current.externalId) : current))\n ),\n [arbi]\n )\n\n const enterDemo = useCallback(() => {\n setMode('demo')\n setStatus('demo')\n setError(null)\n setUser({ name: config.demoUser.name, email: config.demoUser.email })\n selectWorkspaceId(demoWorkspaceId)\n }, [config.demoUser.name, config.demoUser.email, demoWorkspaceId, selectWorkspaceId])\n\n const login = useCallback(\n async (email: string, password: string, restoring = false) => {\n setError(null)\n // No backend configured → run the seeded demo workspace.\n if (!isLiveConfigured) {\n enterDemo()\n return\n }\n setStatus('connecting')\n setMode('live')\n try {\n if (restoring) {\n if (!(await arbi.restoreSession(email))) {\n rememberSessionUser(config.apiUrl, null)\n setStatus('disconnected')\n return\n }\n } else await arbi.login(email, password)\n storageUserRef.current = normalizeUserKey(email)\n const workspaces = await arbi.workspaces.list()\n if (workspaces?.length) {\n // Prefer the workspace the user last affirmatively selected (persisted),\n // then the configured workspace (there may be several — e.g. a\n // marketing/KM workspace), then whichever happens to be first. Ternary\n // (not `&&`) so an empty value can't leak `\"\"` into `target`.\n const persisted = readPersistedWorkspace(config.apiUrl, storageUserRef.current)\n const preferred = persisted ?? config.workspaceId\n const target =\n (preferred ? workspaces.find((w) => w.external_id === preferred) : undefined) ??\n workspaces[0]\n await arbi.selectWorkspace(target.external_id)\n selectWorkspaceId(target.external_id)\n persistWorkspace(config.apiUrl, storageUserRef.current, target.external_id)\n }\n // The profile (name + avatar) comes with the login response. A session restored without\n // a login has none, so fall back to finding ourselves in the workspace roster; the email\n // local part is only the last resort, never the answer when a profile name exists.\n let resolved: ArbiUser = { name: email.split('@')[0], email }\n const me = arbi.user.identity()\n const profile = arbi.user.profile?.()\n if (profile) {\n resolved = userFromProfile(profile, me?.externalId)\n } else {\n try {\n const members = await arbi.workspaces.listUsers()\n const self = members.find((m) => m.user.external_id === me?.externalId)?.user\n if (self) {\n const fullName = [self.given_name, self.family_name].filter(Boolean).join(' ').trim()\n resolved = {\n name: fullName || email.split('@')[0],\n email: self.email || email,\n externalId: self.external_id,\n picture: self.picture ?? null,\n }\n } else if (me?.externalId) {\n resolved.externalId = me.externalId\n }\n } catch {\n // Roster not available (e.g. no workspace) — keep the fallback identity.\n }\n }\n setUser(resolved)\n rememberSessionUser(config.apiUrl, email)\n setStatus('authenticated')\n } catch (e) {\n // Surface the real error — no silent fallback to a fake session.\n setError(e instanceof Error ? e.message : 'Sign-in failed. Check your credentials.')\n setStatus('error')\n }\n },\n [arbi, enterDemo, isLiveConfigured, config.workspaceId, config.apiUrl, selectWorkspaceId]\n )\n\n // Run once even under StrictMode; passwords and signing keys are never stored here.\n const recoveryStarted = useRef(false)\n useEffect(() => {\n if (recoveryStarted.current || !isLiveConfigured) return\n recoveryStarted.current = true\n let email: string | null = null\n try {\n email = window.localStorage.getItem(sessionUserKey(config.apiUrl))\n } catch {\n /* unavailable */\n }\n if (email) void login(email, '', true)\n else setStatus('disconnected')\n }, [isLiveConfigured, config.apiUrl, login])\n\n const logout = useCallback(() => {\n rememberSessionUser(config.apiUrl, null)\n if (mode === 'live') {\n void arbi.logout?.()\n }\n setUser(null)\n selectWorkspaceId(null)\n persistWorkspace(config.apiUrl, storageUserRef.current, null)\n storageUserRef.current = null\n setStatus('disconnected')\n setError(null)\n }, [arbi, mode, config.apiUrl, selectWorkspaceId])\n\n // Affirmative selection: open the workspace on the server (live), then remember\n // it in state + storage so every surface — and the next login — is in sync.\n const setWorkspace = useCallback(\n async (id: string) => {\n if (mode === 'live' && arbi.isLoggedIn) {\n await arbi.selectWorkspace(id)\n }\n selectWorkspaceId(id)\n persistWorkspace(config.apiUrl, storageUserRef.current, id)\n },\n [arbi, mode, config.apiUrl, selectWorkspaceId]\n )\n\n // Re-open the selected workspace on the session if the server may have dropped\n // it. Idempotent: re-running `/open` for the already-selected workspace is safe.\n const ensureWorkspaceOpen = useCallback(async () => {\n if (mode !== 'live' || !arbi.isLoggedIn) return\n // The selected workspace as of now, not as of the last render: a flow that switches workspace\n // and then re-opens it in the same async chain (a step that creates a matter, then starts its\n // thread) must not re-open the one it just left.\n const id =\n session.getState().workspaceId ??\n readPersistedWorkspace(config.apiUrl, storageUserRef.current) ??\n config.workspaceId\n if (id) await arbi.selectWorkspace(id)\n }, [arbi, session, mode, config.apiUrl, config.workspaceId])\n\n const value = useMemo<ConnectionValue>(\n () => ({\n mode,\n status,\n user,\n workspaceId,\n apiConfigured: isLiveConfigured,\n apiUrl: config.apiUrl,\n deploymentDomain: isLiveConfigured ? arbi.getDeploymentDomain() : undefined,\n error,\n assistantConfig: config.assistantConfig,\n fallbackWorkspaceId: config.workspaceId,\n login,\n enterDemo,\n logout,\n setWorkspace,\n ensureWorkspaceOpen,\n }),\n [\n mode,\n status,\n user,\n workspaceId,\n isLiveConfigured,\n config.apiUrl,\n arbi,\n config.assistantConfig,\n config.workspaceId,\n error,\n login,\n enterDemo,\n logout,\n setWorkspace,\n ensureWorkspaceOpen,\n ]\n )\n\n const account = useConnectionAccount(arbi, user, logout)\n\n return (\n <ConnectionContext.Provider value={value}>\n <AccountClientProvider client={account} enabled={status === 'authenticated'}>\n {children}\n </AccountClientProvider>\n </ConnectionContext.Provider>\n )\n}\n\n/**\n * The account client of the settings blocks below: the SDK's, with sign-out going through this\n * connection (so its state is cleared too) and, for a session restored without a login (no SDK\n * profile), the connection user as the profile.\n */\nfunction useConnectionAccount(\n arbi: ReturnType<typeof useArbi>,\n user: ArbiUser | null,\n logout: () => void\n): AccountClient {\n const userRef = useRef(user)\n const logoutRef = useRef(logout)\n logoutRef.current = logout\n const listeners = useRef(new Set<() => void>())\n useEffect(() => {\n userRef.current = user\n listeners.current.forEach((listener) => listener())\n }, [user])\n return useMemo(() => {\n const base = arbiAccountClient(arbi)\n return {\n ...base,\n profile: (): ProfileView | null => {\n const own = base.profile()\n const fallback = userRef.current\n if (own || !fallback) return own\n return {\n ...toProfileView({\n givenName: '',\n familyName: null,\n picture: fallback.picture ?? null,\n email: fallback.email,\n isSso: false,\n }),\n fullName: fallback.name,\n }\n },\n onProfileChange: (listener) => {\n listeners.current.add(listener)\n const off = base.onProfileChange(listener)\n return () => {\n listeners.current.delete(listener)\n off()\n }\n },\n signOut: async ({ everywhere } = {}) => {\n try {\n if (everywhere) await arbi.sessions.logoutAll()\n } finally {\n logoutRef.current()\n }\n },\n }\n }, [arbi])\n}\n\nexport function useConnection(): ConnectionValue {\n const ctx = useContext(ConnectionContext)\n if (!ctx) throw new Error('useConnection must be used within ConnectionProvider')\n return ctx\n}\n\nexport const isAuthenticated = (s: ConnectionStatus) => s === 'demo' || s === 'authenticated'\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/ConnectedNativeDocxEditor.tsx"],"names":[],"mappings":"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","file":"chunk-4UMXQPNA.js","sourcesContent":["import { useMemo } from 'react'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useArbi, arbiQueryKeys } from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport {\n NativeDocxEditor,\n type NativeDocxAdapter,\n type NativeDocxEditorProps,\n} from '../docx/NativeDocxEditor'\nimport { loadDocxFonts } from '../docx/fonts'\nimport { useRegisterOpenDocument } from '../chat/open-document'\nimport { useBlocksEnvironment } from '../provider/BlocksProvider'\n\n/** Native Word widget bound to the standard blocks connection and SDK session. */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: Omit<NativeDocxEditorProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { workspaceId } = useConnection()\n // Drafting mode: the saved Word document being edited is what the chat is about. A history\n // snapshot, a streamed preview, an unsaved draft and an embedded body field are not.\n const live = !props.snapshot && !props.stream && !props.draftContent && !props.compact\n useRegisterOpenDocument({ documentId: live ? props.documentId : null, workspaceId })\n return <NativeDocxEditor {...props} adapter={adapter} />\n}\n\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, apiUrl, user, ensureWorkspaceOpen } = useConnection()\n const queries = useQueryClient()\n const { notify } = useBlocksEnvironment()\n const { data: members } = useQuery({\n queryKey: ['native-docx-members', apiUrl, user?.externalId, workspaceId],\n enabled: arbi.isLoggedIn && !!workspaceId,\n queryFn: async () => {\n await ensureWorkspaceOpen()\n return arbi.workspaces.listUsers()\n },\n })\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => loadDocxFonts(fontBaseUrl),\n baseUrl: apiUrl,\n author: user?.name || 'You',\n onVersionSaved: async (id) => {\n if (!workspaceId) return\n const key = arbiQueryKeys.documents(workspaceId)\n try {\n const documents = await arbi.documents.get([id])\n if (!documents.length) throw new Error('The saved version is not available yet.')\n queries.setQueryData<Awaited<ReturnType<typeof arbi.documents.list>>>(key, (previous) => [\n ...documents,\n ...(previous || []).filter(\n (doc) => !documents.some((saved) => saved.external_id === doc.external_id)\n ),\n ])\n } catch {\n await queries.invalidateQueries({ queryKey: key })\n }\n },\n notify,\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify('Mention delivered.', 'success')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n }),\n [\n arbi,\n apiUrl,\n user?.name,\n members,\n ensureWorkspaceOpen,\n fontBaseUrl,\n queries,\n workspaceId,\n notify,\n ]\n )\n return adapter\n}\n"]}
|