@arbidocs/blocks 0.4.136 → 0.4.138
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/index.cjs +384 -353
- package/dist/agents/index.js +8 -9
- package/dist/agents/skills/SkillLibraryDetail.d.ts +26 -0
- package/dist/agents/skills/index.d.ts +2 -0
- package/dist/agents/skills/skillLibrary.d.ts +46 -0
- package/dist/agents/workflows/WorkflowDocumentsField.d.ts +42 -5
- package/dist/agents/workflows/index.d.ts +2 -2
- package/dist/agents/workflows/workspaceScope.d.ts +12 -0
- package/dist/calls/index.cjs +3 -3
- package/dist/calls/index.js +2 -2
- package/dist/chunk-2KUCVSFF.js +51 -0
- package/dist/chunk-2KUCVSFF.js.map +1 -0
- package/dist/{chunk-LIHRGG4M.cjs → chunk-3BI6EWKP.cjs} +2022 -89
- package/dist/chunk-3BI6EWKP.cjs.map +1 -0
- package/dist/{chunk-3FFRYZKV.js → chunk-3RJN2VTL.js} +36 -6
- package/dist/chunk-3RJN2VTL.js.map +1 -0
- package/dist/{chunk-OR4CO743.cjs → chunk-AAFX64WD.cjs} +3 -3
- package/dist/{chunk-OR4CO743.cjs.map → chunk-AAFX64WD.cjs.map} +1 -1
- package/dist/chunk-CQCC7LE7.js +210 -0
- package/dist/chunk-CQCC7LE7.js.map +1 -0
- package/dist/{chunk-ZAVEMQ37.cjs → chunk-DWZXSPMB.cjs} +3 -3
- package/dist/{chunk-ZAVEMQ37.cjs.map → chunk-DWZXSPMB.cjs.map} +1 -1
- package/dist/{chunk-VIU7AMHF.js → chunk-E5OYHJMU.js} +3 -3
- package/dist/{chunk-VIU7AMHF.js.map → chunk-E5OYHJMU.js.map} +1 -1
- package/dist/{chunk-RUB62J2X.js → chunk-ED4HHTIA.js} +3 -3
- package/dist/{chunk-RUB62J2X.js.map → chunk-ED4HHTIA.js.map} +1 -1
- package/dist/{chunk-5HFPRI3W.js → chunk-FUTMU4FR.js} +3 -3
- package/dist/{chunk-5HFPRI3W.js.map → chunk-FUTMU4FR.js.map} +1 -1
- package/dist/{chunk-C44D4WFG.cjs → chunk-HLB4DIYV.cjs} +3 -3
- package/dist/{chunk-C44D4WFG.cjs.map → chunk-HLB4DIYV.cjs.map} +1 -1
- package/dist/{chunk-N55UIXVT.cjs → chunk-JVL7HUIQ.cjs} +5 -5
- package/dist/{chunk-N55UIXVT.cjs.map → chunk-JVL7HUIQ.cjs.map} +1 -1
- package/dist/{chunk-6S5FLMWG.js → chunk-KSHKTOY2.js} +203 -7
- package/dist/chunk-KSHKTOY2.js.map +1 -0
- package/dist/{chunk-OZLWSNUC.cjs → chunk-MJKBVIV3.cjs} +83 -1650
- package/dist/chunk-MJKBVIV3.cjs.map +1 -0
- package/dist/{chunk-DJM7DLCT.cjs → chunk-OPTBQSCV.cjs} +3 -3
- package/dist/{chunk-DJM7DLCT.cjs.map → chunk-OPTBQSCV.cjs.map} +1 -1
- package/dist/{chunk-GFYGYME3.js → chunk-OQ7RUNOC.js} +3 -3
- package/dist/{chunk-GFYGYME3.js.map → chunk-OQ7RUNOC.js.map} +1 -1
- package/dist/chunk-RFIBUWLF.cjs +232 -0
- package/dist/chunk-RFIBUWLF.cjs.map +1 -0
- package/dist/{chunk-N26CXGXC.cjs → chunk-RQ2Y7USX.cjs} +201 -3
- package/dist/chunk-RQ2Y7USX.cjs.map +1 -0
- package/dist/{chunk-LT2X5N37.js → chunk-UBEI6WFJ.js} +58 -1592
- package/dist/chunk-UBEI6WFJ.js.map +1 -0
- package/dist/chunk-UUHUQHXR.cjs +56 -0
- package/dist/chunk-UUHUQHXR.cjs.map +1 -0
- package/dist/{chunk-ECERC6TI.js → chunk-VHJHY7TT.js} +3 -3
- package/dist/{chunk-ECERC6TI.js.map → chunk-VHJHY7TT.js.map} +1 -1
- package/dist/{chunk-44R3CCZT.cjs → chunk-WS5EX7DN.cjs} +37 -6
- package/dist/chunk-WS5EX7DN.cjs.map +1 -0
- package/dist/{chunk-IQU2GI6V.js → chunk-XVME4XYD.js} +1982 -93
- package/dist/chunk-XVME4XYD.js.map +1 -0
- package/dist/collaboration/index.cjs +42 -42
- package/dist/collaboration/index.js +2 -2
- package/dist/connect/docx.cjs +5 -5
- package/dist/connect/docx.js +4 -4
- package/dist/connect/index.cjs +710 -51
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +4 -0
- package/dist/connect/index.js +655 -20
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSkillsLibrary.d.ts +26 -0
- package/dist/connection/ConnectedWorkflowBuilder.d.ts +1 -1
- package/dist/connection/ConnectedWorkflowLauncher.d.ts +35 -0
- package/dist/connection/ConnectedWorkflowsTable.d.ts +62 -0
- package/dist/connection/workspaceData.d.ts +45 -0
- package/dist/facts/index.cjs +2 -2
- package/dist/facts/index.js +2 -2
- package/dist/files/index.cjs +3 -3
- package/dist/files/index.js +3 -3
- package/dist/home/index.cjs +22 -23
- 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 +503 -472
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +12 -13
- package/dist/index.js.map +1 -1
- package/dist/retrieval/index.cjs +1 -1
- package/dist/retrieval/index.js +1 -1
- package/dist/settings/index.cjs +49 -49
- package/dist/settings/index.js +6 -6
- package/dist/shell/index.cjs +2 -2
- package/dist/shell/index.js +2 -2
- package/dist/studio/index.cjs +2 -2
- package/dist/studio/index.js +2 -2
- package/dist/workflow-canvas/index.cjs +32 -30
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +20 -18
- package/dist/workflow-canvas/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/dist/chunk-3FFRYZKV.js.map +0 -1
- package/dist/chunk-44R3CCZT.cjs.map +0 -1
- package/dist/chunk-4XJZ6AAY.js +0 -407
- package/dist/chunk-4XJZ6AAY.js.map +0 -1
- package/dist/chunk-6S5FLMWG.js.map +0 -1
- package/dist/chunk-7D737FLE.cjs +0 -43
- package/dist/chunk-7D737FLE.cjs.map +0 -1
- package/dist/chunk-IQU2GI6V.js.map +0 -1
- package/dist/chunk-LIHRGG4M.cjs.map +0 -1
- package/dist/chunk-LT2X5N37.js.map +0 -1
- package/dist/chunk-N26CXGXC.cjs.map +0 -1
- package/dist/chunk-OZLWSNUC.cjs.map +0 -1
- package/dist/chunk-S5HZBXZA.cjs +0 -430
- package/dist/chunk-S5HZBXZA.cjs.map +0 -1
- package/dist/chunk-XD2M6LIG.js +0 -41
- package/dist/chunk-XD2M6LIG.js.map +0 -1
package/dist/connect/index.cjs
CHANGED
|
@@ -1,31 +1,33 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkAAFX64WD_cjs = require('../chunk-AAFX64WD.cjs');
|
|
5
5
|
var chunkIE5CUCZK_cjs = require('../chunk-IE5CUCZK.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkUUHUQHXR_cjs = require('../chunk-UUHUQHXR.cjs');
|
|
7
|
+
var chunkHLB4DIYV_cjs = require('../chunk-HLB4DIYV.cjs');
|
|
7
8
|
var chunkKDUGTKVI_cjs = require('../chunk-KDUGTKVI.cjs');
|
|
8
9
|
var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
|
|
9
10
|
require('../chunk-S24XEVPS.cjs');
|
|
10
11
|
require('../chunk-V5OAXIBN.cjs');
|
|
11
12
|
require('../chunk-5FYU7ZIU.cjs');
|
|
12
13
|
var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
|
|
13
|
-
var
|
|
14
|
+
var chunkJVL7HUIQ_cjs = require('../chunk-JVL7HUIQ.cjs');
|
|
14
15
|
var chunkO6IEZDRC_cjs = require('../chunk-O6IEZDRC.cjs');
|
|
15
16
|
var chunkI2QSDQQV_cjs = require('../chunk-I2QSDQQV.cjs');
|
|
16
17
|
require('../chunk-RC25WMVB.cjs');
|
|
17
|
-
var
|
|
18
|
-
require('../chunk-
|
|
19
|
-
var
|
|
18
|
+
var chunk3BI6EWKP_cjs = require('../chunk-3BI6EWKP.cjs');
|
|
19
|
+
require('../chunk-WS5EX7DN.cjs');
|
|
20
|
+
var chunkRQ2Y7USX_cjs = require('../chunk-RQ2Y7USX.cjs');
|
|
21
|
+
require('../chunk-ZW6FPIFC.cjs');
|
|
20
22
|
require('../chunk-DETZZBG2.cjs');
|
|
23
|
+
require('../chunk-R26BK7YL.cjs');
|
|
24
|
+
require('../chunk-V4ISCZJ7.cjs');
|
|
21
25
|
var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
|
|
22
26
|
require('../chunk-C2CWWEHO.cjs');
|
|
23
27
|
var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
|
|
24
28
|
require('../chunk-ADOKTJHV.cjs');
|
|
25
|
-
var
|
|
29
|
+
var chunkDWZXSPMB_cjs = require('../chunk-DWZXSPMB.cjs');
|
|
26
30
|
var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
|
|
27
|
-
var chunkC4WSHRR6_cjs = require('../chunk-C4WSHRR6.cjs');
|
|
28
|
-
var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
|
|
29
31
|
var chunk7YLJHTDC_cjs = require('../chunk-7YLJHTDC.cjs');
|
|
30
32
|
require('../chunk-B6MVQCXW.cjs');
|
|
31
33
|
var chunkJKB7WT7L_cjs = require('../chunk-JKB7WT7L.cjs');
|
|
@@ -35,6 +37,8 @@ require('../chunk-32HW2Q33.cjs');
|
|
|
35
37
|
require('../chunk-FX3K6LNZ.cjs');
|
|
36
38
|
require('../chunk-PPCATBOY.cjs');
|
|
37
39
|
require('../chunk-MHVNT4J3.cjs');
|
|
40
|
+
var chunkC4WSHRR6_cjs = require('../chunk-C4WSHRR6.cjs');
|
|
41
|
+
var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
|
|
38
42
|
var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
|
|
39
43
|
require('../chunk-DES3K4SD.cjs');
|
|
40
44
|
var react = require('react');
|
|
@@ -42,9 +46,9 @@ var reactQuery = require('@tanstack/react-query');
|
|
|
42
46
|
var react$1 = require('@arbidocs/react');
|
|
43
47
|
var jsxRuntime = require('react/jsx-runtime');
|
|
44
48
|
var ui = require('@arbidocs/react/ui');
|
|
49
|
+
var documentTools = require('@arbidocs/react/document-tools');
|
|
45
50
|
var lucideReact = require('lucide-react');
|
|
46
51
|
var artifacts = require('@arbidocs/react/artifacts');
|
|
47
|
-
var documentTools = require('@arbidocs/react/document-tools');
|
|
48
52
|
var shell = require('@arbidocs/react/shell');
|
|
49
53
|
var client = require('@arbidocs/client');
|
|
50
54
|
var reactDom = require('react-dom');
|
|
@@ -125,7 +129,7 @@ function ConnectedWorkspaceActivity({
|
|
|
125
129
|
[feed.data]
|
|
126
130
|
);
|
|
127
131
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
128
|
-
|
|
132
|
+
chunkJVL7HUIQ_cjs.WorkspaceActivityList,
|
|
129
133
|
{
|
|
130
134
|
...listProps,
|
|
131
135
|
items,
|
|
@@ -151,7 +155,7 @@ function ConnectedWorkspaceNotificationMenu({
|
|
|
151
155
|
});
|
|
152
156
|
if (!workspaceId) return null;
|
|
153
157
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
154
|
-
|
|
158
|
+
chunkJVL7HUIQ_cjs.WorkspaceNotificationMenu,
|
|
155
159
|
{
|
|
156
160
|
...menuProps,
|
|
157
161
|
level,
|
|
@@ -170,7 +174,7 @@ function ConnectedThreadFollow({
|
|
|
170
174
|
enabled: status === "authenticated"
|
|
171
175
|
});
|
|
172
176
|
if (!conversationId) return null;
|
|
173
|
-
const Control = as === "menu-item" ?
|
|
177
|
+
const Control = as === "menu-item" ? chunkJVL7HUIQ_cjs.ThreadFollowMenuItem : chunkJVL7HUIQ_cjs.ThreadFollowButton;
|
|
174
178
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
175
179
|
Control,
|
|
176
180
|
{
|
|
@@ -181,6 +185,255 @@ function ConnectedThreadFollow({
|
|
|
181
185
|
}
|
|
182
186
|
);
|
|
183
187
|
}
|
|
188
|
+
function useConnectedWorkspaceRole() {
|
|
189
|
+
const { workspaceId, live, userId, ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnectedWorkspace();
|
|
190
|
+
const { data: members = [] } = react$1.useWorkspaceUsers(workspaceId ?? void 0, {
|
|
191
|
+
enabled: live && !!workspaceId,
|
|
192
|
+
beforeFetch: ensureWorkspaceOpen
|
|
193
|
+
});
|
|
194
|
+
const role = members.find((m) => m.user.external_id === userId)?.role;
|
|
195
|
+
return {
|
|
196
|
+
members,
|
|
197
|
+
role,
|
|
198
|
+
/** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */
|
|
199
|
+
canEditShared: role === "owner" || role === "collaborator",
|
|
200
|
+
/** With an item's creator, the only one who deletes it. */
|
|
201
|
+
isWorkspaceOwner: role === "owner"
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
var DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS = {
|
|
205
|
+
updateFailed: "Could not update the workflow",
|
|
206
|
+
deleteTitle: "Delete workflow",
|
|
207
|
+
deleteOne: (name) => `Delete \u201C${name}\u201D? Threads it already created stay.`,
|
|
208
|
+
deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,
|
|
209
|
+
runFailed: "The workflow failed. You can send an error report from its history.",
|
|
210
|
+
noThread: "The workflow did not create a thread.",
|
|
211
|
+
documentAction: (workflow) => workflow.action?.type === "email_documents" ? "Preparing your document email" : "Reviewing documents",
|
|
212
|
+
untitledTask: "Untitled thread"
|
|
213
|
+
};
|
|
214
|
+
var messageOf = (error) => error instanceof Error ? error.message : "";
|
|
215
|
+
function ConnectedWorkflowsTable({
|
|
216
|
+
filter,
|
|
217
|
+
describeTrigger = (w) => chunk3BI6EWKP_cjs.workflowTriggerType(w).replaceAll("_", " "),
|
|
218
|
+
formatDate = chunkKDG6FER6_cjs.fmtDate,
|
|
219
|
+
onViewRuns,
|
|
220
|
+
connectedLabels,
|
|
221
|
+
...tableProps
|
|
222
|
+
}) {
|
|
223
|
+
const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels };
|
|
224
|
+
const { notify, confirm, openConversation } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
|
|
225
|
+
const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole();
|
|
226
|
+
const { data: saved = [], isLoading } = react$1.useWorkflows({ live: true });
|
|
227
|
+
const { data: conversations, refetch } = chunkUUHUQHXR_cjs.useConnectedConversations({ live: true });
|
|
228
|
+
const { data: agents = [] } = react$1.useAgents();
|
|
229
|
+
const update = react$1.useUpdateWorkflow();
|
|
230
|
+
const remove = react$1.useDeleteWorkflow();
|
|
231
|
+
const run = react$1.useRunWorkflow();
|
|
232
|
+
const [busyId, setBusyId] = react.useState(null);
|
|
233
|
+
const workflows = react.useMemo(() => filter ? saved.filter(filter) : saved, [saved, filter]);
|
|
234
|
+
const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ""}`).join("|");
|
|
235
|
+
react.useEffect(() => {
|
|
236
|
+
void refetch?.();
|
|
237
|
+
}, [firingStamp, refetch]);
|
|
238
|
+
const lastRuns = react.useMemo(() => {
|
|
239
|
+
const out = {};
|
|
240
|
+
for (const c of conversations) {
|
|
241
|
+
const id = c.workflow_ext_id;
|
|
242
|
+
if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))
|
|
243
|
+
out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status };
|
|
244
|
+
}
|
|
245
|
+
return out;
|
|
246
|
+
}, [conversations]);
|
|
247
|
+
const agentNames = react.useMemo(
|
|
248
|
+
() => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),
|
|
249
|
+
[agents]
|
|
250
|
+
);
|
|
251
|
+
const taskNames = react.useMemo(
|
|
252
|
+
() => Object.fromEntries(
|
|
253
|
+
conversations.filter((c) => c.status != null).map((c) => [c.external_id, c.title || l.untitledTask])
|
|
254
|
+
),
|
|
255
|
+
[conversations, l.untitledTask]
|
|
256
|
+
);
|
|
257
|
+
const act = async (workflow, action) => {
|
|
258
|
+
setBusyId(workflow.external_id);
|
|
259
|
+
try {
|
|
260
|
+
await action();
|
|
261
|
+
} catch (error) {
|
|
262
|
+
notify(messageOf(error) || l.updateFailed, "error");
|
|
263
|
+
} finally {
|
|
264
|
+
setBusyId(null);
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
const setActive = (workflow, active) => act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }));
|
|
268
|
+
const deleteAll = async (items) => {
|
|
269
|
+
if (!items.length) return;
|
|
270
|
+
const ok = await confirm({
|
|
271
|
+
title: l.deleteTitle,
|
|
272
|
+
message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length)
|
|
273
|
+
});
|
|
274
|
+
if (!ok) return;
|
|
275
|
+
for (const workflow of items)
|
|
276
|
+
await act(workflow, () => remove.mutateAsync(workflow.external_id));
|
|
277
|
+
};
|
|
278
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
279
|
+
chunk3BI6EWKP_cjs.WorkflowsTable,
|
|
280
|
+
{
|
|
281
|
+
...tableProps,
|
|
282
|
+
workflows,
|
|
283
|
+
isLoading,
|
|
284
|
+
busyId,
|
|
285
|
+
describeTrigger,
|
|
286
|
+
formatDate,
|
|
287
|
+
agentNames,
|
|
288
|
+
taskNames,
|
|
289
|
+
lastRuns,
|
|
290
|
+
canEditShared,
|
|
291
|
+
isWorkspaceOwner,
|
|
292
|
+
onOpenThread: (conversationId) => openConversation(conversationId),
|
|
293
|
+
onViewRuns,
|
|
294
|
+
onToggleActive: (workflow, active) => void setActive(workflow, active),
|
|
295
|
+
onToggleActiveMany: (items, active) => {
|
|
296
|
+
void (async () => {
|
|
297
|
+
for (const workflow of items) await setActive(workflow, active);
|
|
298
|
+
})();
|
|
299
|
+
},
|
|
300
|
+
onToggleShared: (workflow, shared) => void act(
|
|
301
|
+
workflow,
|
|
302
|
+
() => update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })
|
|
303
|
+
),
|
|
304
|
+
onDelete: (workflow) => void deleteAll([workflow]),
|
|
305
|
+
onDeleteMany: (items) => void deleteAll(items),
|
|
306
|
+
onRun: (workflow) => void act(workflow, async () => {
|
|
307
|
+
const result = await run.mutateAsync(workflow.external_id);
|
|
308
|
+
if (result.conversation_ext_id) openConversation(result.conversation_ext_id);
|
|
309
|
+
if (result.error) {
|
|
310
|
+
onViewRuns?.(workflow);
|
|
311
|
+
notify(l.runFailed, "error");
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (result.execution_id && !result.conversation_ext_id) {
|
|
315
|
+
onViewRuns?.(workflow);
|
|
316
|
+
notify(l.documentAction(workflow), "success");
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (!result.conversation_ext_id) throw new Error(l.noThread);
|
|
320
|
+
})
|
|
321
|
+
}
|
|
322
|
+
);
|
|
323
|
+
}
|
|
324
|
+
var IMAGE_FILE_TYPES = /* @__PURE__ */ new Set(["png", "jpg", "jpeg", "gif", "bmp", "tiff", "webp"]);
|
|
325
|
+
function toWorkflowFieldDocument(doc) {
|
|
326
|
+
const isImage = IMAGE_FILE_TYPES.has((doc.file_type ?? "").toLowerCase());
|
|
327
|
+
return {
|
|
328
|
+
id: doc.external_id,
|
|
329
|
+
title: doc.doc_metadata?.title || doc.file_name || doc.external_id,
|
|
330
|
+
fileName: doc.file_name,
|
|
331
|
+
pages: isImage ? null : doc.n_pages ?? null,
|
|
332
|
+
tokens: isImage ? null : doc.tokens ?? null,
|
|
333
|
+
status: doc.status,
|
|
334
|
+
isImage
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
function useConnectedWorkflowScopeSource() {
|
|
338
|
+
const { data: docs } = chunkUUHUQHXR_cjs.useConnectedDocuments();
|
|
339
|
+
const { data: tags } = chunkUUHUQHXR_cjs.useConnectedTags();
|
|
340
|
+
return react.useMemo(() => chunk3BI6EWKP_cjs.buildWorkflowScopeSource(docs, chunk3BI6EWKP_cjs.documentScopeLabels(tags)), [docs, tags]);
|
|
341
|
+
}
|
|
342
|
+
function useConnectedAgentOptions() {
|
|
343
|
+
const { data: agents } = react$1.useAgents();
|
|
344
|
+
return react.useMemo(
|
|
345
|
+
() => (agents ?? []).map((a) => ({ id: a.external_id, label: a.given_name || a.email })),
|
|
346
|
+
[agents]
|
|
347
|
+
);
|
|
348
|
+
}
|
|
349
|
+
function ConnectedWorkflowDocumentsField({
|
|
350
|
+
field,
|
|
351
|
+
value,
|
|
352
|
+
onChange,
|
|
353
|
+
onAddFiles,
|
|
354
|
+
labels
|
|
355
|
+
}) {
|
|
356
|
+
const arbi = react$1.useArbi();
|
|
357
|
+
const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
|
|
358
|
+
const { ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnectedWorkspace();
|
|
359
|
+
const { data: docs, loaded, refetch } = chunkUUHUQHXR_cjs.useConnectedDocuments();
|
|
360
|
+
const documents = react.useMemo(() => docs.map(toWorkflowFieldDocument), [docs]);
|
|
361
|
+
const chosen = value.documents ?? [];
|
|
362
|
+
const { data: thumbnails } = react$1.useThumbnails(chosen, { enabled: (field.max ?? 1) > 1 });
|
|
363
|
+
const input = react.useRef(null);
|
|
364
|
+
const [adding, setAdding] = react.useState(false);
|
|
365
|
+
const upload = react.useCallback(
|
|
366
|
+
async (files) => {
|
|
367
|
+
setAdding(true);
|
|
368
|
+
try {
|
|
369
|
+
await ensureWorkspaceOpen();
|
|
370
|
+
for (const file of files) await arbi.documents.uploadFile(file, file.name);
|
|
371
|
+
} catch (error) {
|
|
372
|
+
notify(error instanceof Error && error.message ? error.message : String(error), "error");
|
|
373
|
+
} finally {
|
|
374
|
+
setAdding(false);
|
|
375
|
+
await refetch?.();
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
[arbi, ensureWorkspaceOpen, notify, refetch]
|
|
379
|
+
);
|
|
380
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
381
|
+
!onAddFiles && /* @__PURE__ */ jsxRuntime.jsx(
|
|
382
|
+
"input",
|
|
383
|
+
{
|
|
384
|
+
ref: input,
|
|
385
|
+
type: "file",
|
|
386
|
+
multiple: true,
|
|
387
|
+
className: "hidden",
|
|
388
|
+
"aria-label": "Add files",
|
|
389
|
+
"data-testid": "workflow-add-files-input",
|
|
390
|
+
onChange: (e) => {
|
|
391
|
+
const files = Array.from(e.target.files ?? []);
|
|
392
|
+
e.target.value = "";
|
|
393
|
+
if (files.length) void upload(files);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
),
|
|
397
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
398
|
+
chunk3BI6EWKP_cjs.WorkflowDocumentsField,
|
|
399
|
+
{
|
|
400
|
+
field,
|
|
401
|
+
value,
|
|
402
|
+
onChange,
|
|
403
|
+
documents,
|
|
404
|
+
loaded,
|
|
405
|
+
thumbnailOf: (id) => thumbnails?.[id],
|
|
406
|
+
onAddFiles: onAddFiles ?? ((files) => files?.length ? void upload(files) : input.current?.click()),
|
|
407
|
+
adding,
|
|
408
|
+
labels
|
|
409
|
+
}
|
|
410
|
+
)
|
|
411
|
+
] });
|
|
412
|
+
}
|
|
413
|
+
function ConnectedWorkflowLauncher({
|
|
414
|
+
onAddFiles,
|
|
415
|
+
...props
|
|
416
|
+
}) {
|
|
417
|
+
const scopeSource = useConnectedWorkflowScopeSource();
|
|
418
|
+
const agents = useConnectedAgentOptions();
|
|
419
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
420
|
+
chunk3BI6EWKP_cjs.WorkflowLauncher,
|
|
421
|
+
{
|
|
422
|
+
...props,
|
|
423
|
+
scopeSource,
|
|
424
|
+
agents,
|
|
425
|
+
renderDocuments: (field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
426
|
+
ConnectedWorkflowDocumentsField,
|
|
427
|
+
{
|
|
428
|
+
field,
|
|
429
|
+
value,
|
|
430
|
+
onChange,
|
|
431
|
+
onAddFiles
|
|
432
|
+
}
|
|
433
|
+
)
|
|
434
|
+
}
|
|
435
|
+
);
|
|
436
|
+
}
|
|
184
437
|
var DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = {
|
|
185
438
|
title: "Add a skill",
|
|
186
439
|
description: "Bring in a skill someone sent you, from a file or a link.",
|
|
@@ -243,7 +496,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
243
496
|
onChange: (e) => {
|
|
244
497
|
const file = e.target.files?.[0];
|
|
245
498
|
e.target.value = "";
|
|
246
|
-
if (file) void add(() =>
|
|
499
|
+
if (file) void add(() => chunk3BI6EWKP_cjs.importSkillFile(file));
|
|
247
500
|
}
|
|
248
501
|
}
|
|
249
502
|
),
|
|
@@ -268,7 +521,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
268
521
|
className: "space-y-2",
|
|
269
522
|
onSubmit: (e) => {
|
|
270
523
|
e.preventDefault();
|
|
271
|
-
if (url.trim()) void add(() =>
|
|
524
|
+
if (url.trim()) void add(() => chunk3BI6EWKP_cjs.importSkillFromUrl(url));
|
|
272
525
|
},
|
|
273
526
|
children: [
|
|
274
527
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
|
|
@@ -307,6 +560,387 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
307
560
|
}
|
|
308
561
|
);
|
|
309
562
|
}
|
|
563
|
+
var SKILL_FOLDER = "skills/";
|
|
564
|
+
var NAME_PATTERN = /^[a-z0-9-]{1,64}$/;
|
|
565
|
+
var icon = /* @__PURE__ */ jsxRuntime.jsx(ui.EntityIcon, { entityType: "SKILL" });
|
|
566
|
+
var errorText = (error, fallback) => error instanceof Error && error.message ? error.message : fallback;
|
|
567
|
+
var statusOf = (error) => error && typeof error === "object" && "status" in error ? error.status : void 0;
|
|
568
|
+
function ConnectedSkillsLibrary({
|
|
569
|
+
builtins = [],
|
|
570
|
+
initialSlug,
|
|
571
|
+
onRun,
|
|
572
|
+
onDraft,
|
|
573
|
+
renderEditor
|
|
574
|
+
}) {
|
|
575
|
+
const arbi = react$1.useArbi();
|
|
576
|
+
const { confirm, notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
|
|
577
|
+
const { data: listings } = react$1.useSkills();
|
|
578
|
+
const upload = react$1.useUploadSkillFiles();
|
|
579
|
+
const setVisibility = react$1.useSetSkillVisibility();
|
|
580
|
+
const deleteSkill = react$1.useDeleteSkill();
|
|
581
|
+
const [mode, setMode] = react.useState("detail");
|
|
582
|
+
const [selected, setSelected] = react.useState(initialSlug ?? null);
|
|
583
|
+
const [query, setQuery] = react.useState("");
|
|
584
|
+
const [source, setSource] = react.useState("all");
|
|
585
|
+
const [type, setType] = react.useState("all");
|
|
586
|
+
const [view, setView] = react.useState("gallery");
|
|
587
|
+
const [isBusy, setIsBusy] = react.useState(false);
|
|
588
|
+
const all = react.useMemo(() => chunk3BI6EWKP_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
|
|
589
|
+
const shown = react.useMemo(
|
|
590
|
+
() => chunk3BI6EWKP_cjs.filterLibrarySkills(all, { query, source, type }),
|
|
591
|
+
[all, query, source, type]
|
|
592
|
+
);
|
|
593
|
+
const current = all.find((s) => s.slug === selected) ?? null;
|
|
594
|
+
const { data: currentText, isLoading: textLoading } = react$1.useSkillSource(current?.docExtId);
|
|
595
|
+
react.useEffect(() => {
|
|
596
|
+
if (selected && !current && all.length > 0) setSelected(null);
|
|
597
|
+
}, [selected, current, all.length]);
|
|
598
|
+
const count = (s) => all.filter((x) => x.source === s).length;
|
|
599
|
+
const sourceOptions = [
|
|
600
|
+
{ id: "all", label: "All", count: all.length },
|
|
601
|
+
{ id: "builtin", label: chunk3BI6EWKP_cjs.SKILL_SOURCE_LABELS.builtin, count: count("builtin") },
|
|
602
|
+
{ id: "mine", label: chunk3BI6EWKP_cjs.SKILL_SOURCE_LABELS.mine, count: count("mine") },
|
|
603
|
+
{ id: "shared", label: chunk3BI6EWKP_cjs.SKILL_SOURCE_LABELS.shared, count: count("shared") }
|
|
604
|
+
];
|
|
605
|
+
const types = [...new Set(all.map((s) => s.type))];
|
|
606
|
+
const typeOptions = [
|
|
607
|
+
{ id: "all", label: "Any kind" },
|
|
608
|
+
...types.map((t) => ({ id: t, label: chunk3BI6EWKP_cjs.SKILL_TYPE_LABELS[t] ?? t }))
|
|
609
|
+
];
|
|
610
|
+
const pick = (slug) => {
|
|
611
|
+
setSelected(slug);
|
|
612
|
+
setMode("detail");
|
|
613
|
+
};
|
|
614
|
+
const markdownOf = async (skill) => {
|
|
615
|
+
if (!skill.docExtId) return chunk3BI6EWKP_cjs.workflowToSkillMarkdown(skill.workflow);
|
|
616
|
+
const response = await arbi.documents.download(skill.docExtId);
|
|
617
|
+
if (!response.ok) throw new Error(`Could not read the skill (${response.status})`);
|
|
618
|
+
return response.text();
|
|
619
|
+
};
|
|
620
|
+
const saveAs = (slug, markdown, shared = false) => upload.mutateAsync([
|
|
621
|
+
{
|
|
622
|
+
folder: `${SKILL_FOLDER}${slug}`,
|
|
623
|
+
fileName: chunk3BI6EWKP_cjs.SKILL_MAIN_FILENAME,
|
|
624
|
+
content: new Blob([markdown], { type: "text/markdown" }),
|
|
625
|
+
shared
|
|
626
|
+
}
|
|
627
|
+
]);
|
|
628
|
+
const busy = async (work) => {
|
|
629
|
+
setIsBusy(true);
|
|
630
|
+
try {
|
|
631
|
+
await work();
|
|
632
|
+
} finally {
|
|
633
|
+
setIsBusy(false);
|
|
634
|
+
}
|
|
635
|
+
};
|
|
636
|
+
const makeCopy = (skill) => busy(async () => {
|
|
637
|
+
try {
|
|
638
|
+
await saveAs(skill.slug, await markdownOf(skill));
|
|
639
|
+
notify(
|
|
640
|
+
"Your copy is ready. It is used instead of the original; delete it to go back.",
|
|
641
|
+
"success"
|
|
642
|
+
);
|
|
643
|
+
setSelected(skill.slug);
|
|
644
|
+
} catch (error) {
|
|
645
|
+
notify(errorText(error, "Could not make a copy"), "error");
|
|
646
|
+
}
|
|
647
|
+
});
|
|
648
|
+
const toggleShare = (skill) => {
|
|
649
|
+
if (!skill.docExtId) return;
|
|
650
|
+
const docExtId = skill.docExtId;
|
|
651
|
+
const next = skill.isShared ? "mine" : "global";
|
|
652
|
+
return busy(async () => {
|
|
653
|
+
try {
|
|
654
|
+
await setVisibility.mutateAsync({ docExtId, visibility: next });
|
|
655
|
+
notify(next === "global" ? "Shared with everyone" : "Made private", "success");
|
|
656
|
+
} catch (error) {
|
|
657
|
+
notify(
|
|
658
|
+
statusOf(error) === 409 || errorText(error, "").includes("409") ? "Someone has already shared a skill with this name. Rename yours first." : "Could not change who can see this skill",
|
|
659
|
+
"error"
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
});
|
|
663
|
+
};
|
|
664
|
+
const remove = async (skill) => {
|
|
665
|
+
if (!skill.docExtId) return;
|
|
666
|
+
const docExtId = skill.docExtId;
|
|
667
|
+
const ok = await confirm({
|
|
668
|
+
message: skill.replacesBuiltin ? `Delete your copy of "${skill.title}"? The original will be used again.` : `Delete "${skill.title}"? This cannot be undone.`,
|
|
669
|
+
title: "Delete skill"
|
|
670
|
+
});
|
|
671
|
+
if (!ok) return;
|
|
672
|
+
await busy(async () => {
|
|
673
|
+
try {
|
|
674
|
+
await deleteSkill.mutateAsync(docExtId);
|
|
675
|
+
notify(`${skill.title} deleted`, "success");
|
|
676
|
+
setSelected(null);
|
|
677
|
+
} catch {
|
|
678
|
+
notify("Could not delete the skill", "error");
|
|
679
|
+
}
|
|
680
|
+
});
|
|
681
|
+
};
|
|
682
|
+
const exportFile = async (skill) => {
|
|
683
|
+
try {
|
|
684
|
+
documentTools.downloadBlob(
|
|
685
|
+
new Blob([await markdownOf(skill)], { type: "text/markdown" }),
|
|
686
|
+
chunk3BI6EWKP_cjs.SKILL_MAIN_FILENAME
|
|
687
|
+
);
|
|
688
|
+
} catch (error) {
|
|
689
|
+
notify(errorText(error, "Could not export the skill"), "error");
|
|
690
|
+
}
|
|
691
|
+
};
|
|
692
|
+
const rightVisible = mode !== "detail" || current !== null;
|
|
693
|
+
const backToList = () => {
|
|
694
|
+
setMode("detail");
|
|
695
|
+
setSelected(null);
|
|
696
|
+
};
|
|
697
|
+
const done = (slug) => {
|
|
698
|
+
if (slug) setSelected(slug);
|
|
699
|
+
setMode("detail");
|
|
700
|
+
};
|
|
701
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 border-t border-border", children: [
|
|
702
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
703
|
+
"div",
|
|
704
|
+
{
|
|
705
|
+
className: ui.cn(
|
|
706
|
+
"flex min-h-0 w-full flex-col md:w-[26rem] md:shrink-0 md:border-r md:border-border",
|
|
707
|
+
rightVisible && "max-md:hidden"
|
|
708
|
+
),
|
|
709
|
+
"data-testid": "skills-list-pane",
|
|
710
|
+
children: [
|
|
711
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 p-3", children: [
|
|
712
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
713
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative min-w-0 flex-1", children: [
|
|
714
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
|
|
715
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
716
|
+
ui.Input,
|
|
717
|
+
{
|
|
718
|
+
value: query,
|
|
719
|
+
onChange: (e) => setQuery(e.target.value),
|
|
720
|
+
placeholder: "Search skills",
|
|
721
|
+
"aria-label": "Search skills",
|
|
722
|
+
className: "pl-9 pointer-coarse:min-h-11",
|
|
723
|
+
"data-testid": "skills-browser-search"
|
|
724
|
+
}
|
|
725
|
+
)
|
|
726
|
+
] }),
|
|
727
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk3BI6EWKP_cjs.SkillViewToggle, { value: view, onChange: setView })
|
|
728
|
+
] }),
|
|
729
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
730
|
+
chunk3BI6EWKP_cjs.SkillFilterChips,
|
|
731
|
+
{
|
|
732
|
+
label: "Show",
|
|
733
|
+
value: source,
|
|
734
|
+
onChange: (id) => setSource(id),
|
|
735
|
+
options: sourceOptions
|
|
736
|
+
}
|
|
737
|
+
),
|
|
738
|
+
types.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
739
|
+
chunk3BI6EWKP_cjs.SkillFilterChips,
|
|
740
|
+
{
|
|
741
|
+
label: "Kind",
|
|
742
|
+
value: type,
|
|
743
|
+
onChange: setType,
|
|
744
|
+
options: typeOptions,
|
|
745
|
+
testIdPrefix: "skills-type"
|
|
746
|
+
}
|
|
747
|
+
),
|
|
748
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
749
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
750
|
+
ui.Button,
|
|
751
|
+
{
|
|
752
|
+
size: "sm",
|
|
753
|
+
onClick: () => setMode("new"),
|
|
754
|
+
className: "pointer-coarse:min-h-11",
|
|
755
|
+
"data-testid": "skills-new",
|
|
756
|
+
children: [
|
|
757
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "mr-1 size-4" }),
|
|
758
|
+
"New skill"
|
|
759
|
+
]
|
|
760
|
+
}
|
|
761
|
+
),
|
|
762
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
763
|
+
ui.Button,
|
|
764
|
+
{
|
|
765
|
+
size: "sm",
|
|
766
|
+
variant: "outline",
|
|
767
|
+
onClick: () => setMode("add"),
|
|
768
|
+
className: "pointer-coarse:min-h-11",
|
|
769
|
+
"data-testid": "skills-add",
|
|
770
|
+
children: [
|
|
771
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "mr-1 size-4" }),
|
|
772
|
+
"Add a skill"
|
|
773
|
+
]
|
|
774
|
+
}
|
|
775
|
+
)
|
|
776
|
+
] })
|
|
777
|
+
] }),
|
|
778
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-3 pb-3", "data-testid": "skills-list", children: shown.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "py-10 text-center text-sm text-muted-foreground", children: "No skills match. Try another word or filter." }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
779
|
+
"div",
|
|
780
|
+
{
|
|
781
|
+
className: ui.cn(
|
|
782
|
+
"gap-2",
|
|
783
|
+
view === "gallery" ? "grid grid-cols-[repeat(auto-fill,minmax(9.5rem,1fr))]" : "flex flex-col"
|
|
784
|
+
),
|
|
785
|
+
children: shown.map((skill) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
786
|
+
chunk3BI6EWKP_cjs.SkillTile,
|
|
787
|
+
{
|
|
788
|
+
name: skill.title,
|
|
789
|
+
testId: `skill-tile-${skill.slug}`,
|
|
790
|
+
description: skill.description,
|
|
791
|
+
sourceLabel: skill.isShared ? `${chunk3BI6EWKP_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunk3BI6EWKP_cjs.SKILL_SOURCE_LABELS[skill.source],
|
|
792
|
+
type: skill.type,
|
|
793
|
+
icon,
|
|
794
|
+
layout: view,
|
|
795
|
+
selected: skill.slug === selected,
|
|
796
|
+
onSelect: () => pick(skill.slug)
|
|
797
|
+
},
|
|
798
|
+
skill.slug
|
|
799
|
+
))
|
|
800
|
+
}
|
|
801
|
+
) })
|
|
802
|
+
]
|
|
803
|
+
}
|
|
804
|
+
),
|
|
805
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
806
|
+
"div",
|
|
807
|
+
{
|
|
808
|
+
className: ui.cn("flex min-h-0 min-w-0 flex-1 flex-col", !rightVisible && "max-md:hidden"),
|
|
809
|
+
"data-testid": "skills-detail-pane",
|
|
810
|
+
children: [
|
|
811
|
+
rightVisible && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
812
|
+
ui.Button,
|
|
813
|
+
{
|
|
814
|
+
variant: "ghost",
|
|
815
|
+
size: "sm",
|
|
816
|
+
onClick: backToList,
|
|
817
|
+
className: "m-2 self-start pointer-coarse:min-h-11 md:hidden",
|
|
818
|
+
"data-testid": "skills-back",
|
|
819
|
+
children: [
|
|
820
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "mr-1 size-4" }),
|
|
821
|
+
"All skills"
|
|
822
|
+
]
|
|
823
|
+
}
|
|
824
|
+
),
|
|
825
|
+
mode === "new" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
826
|
+
chunk3BI6EWKP_cjs.SkillGenerateForm,
|
|
827
|
+
{
|
|
828
|
+
icon,
|
|
829
|
+
onGenerate: (desc) => {
|
|
830
|
+
onDraft(`/create-skill ${desc}`.trim() + " ");
|
|
831
|
+
notify("Sent to the chat: the assistant will draft your skill.", "info");
|
|
832
|
+
},
|
|
833
|
+
onManual: () => setMode("edit")
|
|
834
|
+
}
|
|
835
|
+
),
|
|
836
|
+
mode === "edit" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
837
|
+
SkillEditor,
|
|
838
|
+
{
|
|
839
|
+
skill: current?.source === "mine" ? current : null,
|
|
840
|
+
text: current?.source === "mine" ? currentText : void 0,
|
|
841
|
+
renderEditor,
|
|
842
|
+
onSave: async (slug, markdown, isEditing) => {
|
|
843
|
+
await saveAs(slug, markdown, isEditing && !!current?.isShared);
|
|
844
|
+
notify(isEditing ? `${slug} saved` : `${slug} added`, "success");
|
|
845
|
+
done(slug);
|
|
846
|
+
},
|
|
847
|
+
onCancel: () => done(),
|
|
848
|
+
isSaving: upload.isPending
|
|
849
|
+
}
|
|
850
|
+
),
|
|
851
|
+
mode === "add" && /* @__PURE__ */ jsxRuntime.jsx(ConnectedSkillUpload, { onDone: done }),
|
|
852
|
+
mode === "detail" && current && /* @__PURE__ */ jsxRuntime.jsx(
|
|
853
|
+
chunk3BI6EWKP_cjs.SkillLibraryDetail,
|
|
854
|
+
{
|
|
855
|
+
skill: current,
|
|
856
|
+
icon,
|
|
857
|
+
instructions: current.docExtId ? currentText ? chunk3BI6EWKP_cjs.parseSkillFrontmatter(currentText, chunk3BI6EWKP_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
|
|
858
|
+
isLoading: !!current.docExtId && textLoading,
|
|
859
|
+
actions: {
|
|
860
|
+
onRun: () => onRun(current.slug),
|
|
861
|
+
onCopy: () => void makeCopy(current),
|
|
862
|
+
onEdit: () => setMode("edit"),
|
|
863
|
+
onToggleShare: () => void toggleShare(current),
|
|
864
|
+
onExport: () => void exportFile(current),
|
|
865
|
+
onDelete: () => void remove(current),
|
|
866
|
+
isBusy
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
),
|
|
870
|
+
mode === "detail" && !current && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-1 items-center justify-center p-8 text-center text-sm text-muted-foreground max-md:hidden", children: "Pick a skill to read it, run it or make a copy." })
|
|
871
|
+
]
|
|
872
|
+
}
|
|
873
|
+
)
|
|
874
|
+
] });
|
|
875
|
+
}
|
|
876
|
+
function SkillEditor({
|
|
877
|
+
skill,
|
|
878
|
+
text,
|
|
879
|
+
renderEditor,
|
|
880
|
+
onSave,
|
|
881
|
+
onCancel,
|
|
882
|
+
isSaving
|
|
883
|
+
}) {
|
|
884
|
+
const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
|
|
885
|
+
const isEditing = !!skill;
|
|
886
|
+
const [name, setName] = react.useState(skill?.slug ?? "");
|
|
887
|
+
const [description, setDescription] = react.useState("");
|
|
888
|
+
const [body, setBody] = react.useState("");
|
|
889
|
+
const [seeded, setSeeded] = react.useState(!isEditing);
|
|
890
|
+
const [nameError, setNameError] = react.useState(null);
|
|
891
|
+
if (isEditing && !seeded && text !== void 0) {
|
|
892
|
+
const parsed = chunk3BI6EWKP_cjs.parseSkillFrontmatter(text, chunk3BI6EWKP_cjs.SKILL_MAIN_FILENAME);
|
|
893
|
+
setDescription(parsed.description ?? "");
|
|
894
|
+
setBody(parsed.content ?? "");
|
|
895
|
+
setSeeded(true);
|
|
896
|
+
}
|
|
897
|
+
const save = async () => {
|
|
898
|
+
if (!NAME_PATTERN.test(name)) {
|
|
899
|
+
setNameError("Use 1\u201364 lowercase letters, numbers or hyphens.");
|
|
900
|
+
return;
|
|
901
|
+
}
|
|
902
|
+
if (description.trim().length < 1) {
|
|
903
|
+
notify("Add a short description.", "error");
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
906
|
+
const slug = chunk3BI6EWKP_cjs.skillSlug(name);
|
|
907
|
+
try {
|
|
908
|
+
await onSave(slug, chunk3BI6EWKP_cjs.serializeSkill({ name: slug, description, body }), isEditing);
|
|
909
|
+
} catch (err) {
|
|
910
|
+
notify(errorText(err, "Could not save the skill"), "error");
|
|
911
|
+
}
|
|
912
|
+
};
|
|
913
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
914
|
+
chunk3BI6EWKP_cjs.SkillEditForm,
|
|
915
|
+
{
|
|
916
|
+
name,
|
|
917
|
+
onNameChange: setName,
|
|
918
|
+
isNameLocked: isEditing,
|
|
919
|
+
nameError,
|
|
920
|
+
description,
|
|
921
|
+
onDescriptionChange: setDescription,
|
|
922
|
+
editor: renderEditor ? renderEditor(body, setBody) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
923
|
+
ui.Textarea,
|
|
924
|
+
{
|
|
925
|
+
value: body,
|
|
926
|
+
onChange: (e) => setBody(e.target.value),
|
|
927
|
+
className: "min-h-64 flex-1 font-mono text-sm",
|
|
928
|
+
"aria-label": "Instructions"
|
|
929
|
+
}
|
|
930
|
+
),
|
|
931
|
+
isSaving,
|
|
932
|
+
isEditing,
|
|
933
|
+
onSave: save,
|
|
934
|
+
onCancel,
|
|
935
|
+
labels: { create: "Add skill" },
|
|
936
|
+
testIds: {
|
|
937
|
+
name: "skill-edit-name",
|
|
938
|
+
description: "skill-edit-description",
|
|
939
|
+
save: "skill-edit-save"
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
);
|
|
943
|
+
}
|
|
310
944
|
var StreamedArtifactEditor = react.lazy(() => import('../StreamedArtifactEditor-TQAND4H5.cjs'));
|
|
311
945
|
function StreamedArtifact({
|
|
312
946
|
artifacts: artifacts$1,
|
|
@@ -438,7 +1072,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
438
1072
|
);
|
|
439
1073
|
const conversation = conversations.data?.find((c) => c.external_id === threadId);
|
|
440
1074
|
const steps = react.useMemo(
|
|
441
|
-
() => chunkOWCEQKAR_cjs.workflowSteps(workflow).length > 0 ? chunkOWCEQKAR_cjs.workflowSteps(workflow) :
|
|
1075
|
+
() => chunkOWCEQKAR_cjs.workflowSteps(workflow).length > 0 ? chunkOWCEQKAR_cjs.workflowSteps(workflow) : chunk3BI6EWKP_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
|
|
442
1076
|
[workflow, conversation?.plan?.steps]
|
|
443
1077
|
);
|
|
444
1078
|
const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
|
|
@@ -498,7 +1132,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
498
1132
|
criteria: [],
|
|
499
1133
|
max_passes: 3,
|
|
500
1134
|
documents: [],
|
|
501
|
-
steps:
|
|
1135
|
+
steps: chunk3BI6EWKP_cjs.toPlanSteps(workflow, {
|
|
502
1136
|
inputs: values,
|
|
503
1137
|
resolveWorkflow: options.resolveWorkflow,
|
|
504
1138
|
compose: options.compose
|
|
@@ -585,7 +1219,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
585
1219
|
const anyRunning = Object.values(states).some((s) => s.status === "running");
|
|
586
1220
|
const needsStart = !threadId || idle && !anyRunning;
|
|
587
1221
|
const runError = idle ? conversation?.last_error ?? null : null;
|
|
588
|
-
const view =
|
|
1222
|
+
const view = chunk3BI6EWKP_cjs.useWorkflowView({
|
|
589
1223
|
steps,
|
|
590
1224
|
states,
|
|
591
1225
|
inputs,
|
|
@@ -753,7 +1387,7 @@ function WorkflowWordDialog({
|
|
|
753
1387
|
title: title ?? labels.wordTitle,
|
|
754
1388
|
size: "xl",
|
|
755
1389
|
testId: "workflow-word-dialog",
|
|
756
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1390
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkHLB4DIYV_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
|
|
757
1391
|
}
|
|
758
1392
|
);
|
|
759
1393
|
}
|
|
@@ -1062,7 +1696,7 @@ function ConnectedWorkflowRunner({
|
|
|
1062
1696
|
);
|
|
1063
1697
|
};
|
|
1064
1698
|
const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1065
|
-
|
|
1699
|
+
chunk3BI6EWKP_cjs.WorkflowRunner,
|
|
1066
1700
|
{
|
|
1067
1701
|
people,
|
|
1068
1702
|
...runnerProps,
|
|
@@ -1108,7 +1742,7 @@ function ConnectedWorkflowRunner({
|
|
|
1108
1742
|
) }),
|
|
1109
1743
|
inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1110
1744
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
|
-
|
|
1745
|
+
chunk3BI6EWKP_cjs.WorkflowStepBar,
|
|
1112
1746
|
{
|
|
1113
1747
|
run: view,
|
|
1114
1748
|
levels: chunkOWCEQKAR_cjs.stepLevels(view.steps),
|
|
@@ -1309,7 +1943,7 @@ function ConnectedTagTable({
|
|
|
1309
1943
|
const fail = (e) => setError(e instanceof Error ? e.message : String(e));
|
|
1310
1944
|
const snapshot = (data) => {
|
|
1311
1945
|
const title = exportTitle ?? KIND_TITLES[kind];
|
|
1312
|
-
const bytes =
|
|
1946
|
+
const bytes = chunkJVL7HUIQ_cjs.tagTableDocx(data, {
|
|
1313
1947
|
title,
|
|
1314
1948
|
nameOf: (id) => people.find((p) => p.value === id)?.label
|
|
1315
1949
|
});
|
|
@@ -1319,7 +1953,7 @@ function ConnectedTagTable({
|
|
|
1319
1953
|
};
|
|
1320
1954
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
1321
1955
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1322
|
-
|
|
1956
|
+
chunkJVL7HUIQ_cjs.TagTable,
|
|
1323
1957
|
{
|
|
1324
1958
|
...props,
|
|
1325
1959
|
table,
|
|
@@ -1396,7 +2030,7 @@ function useConnectedShellWorkspaces(options = {}) {
|
|
|
1396
2030
|
select: (workspace) => setWorkspace(workspace.id)
|
|
1397
2031
|
});
|
|
1398
2032
|
}
|
|
1399
|
-
function
|
|
2033
|
+
function errorText2(error, fallback) {
|
|
1400
2034
|
const body = error?.apiError;
|
|
1401
2035
|
return typeof body?.detail === "string" ? body.detail : fallback;
|
|
1402
2036
|
}
|
|
@@ -1446,7 +2080,7 @@ function ConnectedProfileCard({
|
|
|
1446
2080
|
await requestEmailChange.mutateAsync(address);
|
|
1447
2081
|
notify("Verification code sent to your new email", "success");
|
|
1448
2082
|
} catch (e) {
|
|
1449
|
-
notify(
|
|
2083
|
+
notify(errorText2(e, "Failed to send verification code"), "error");
|
|
1450
2084
|
throw e;
|
|
1451
2085
|
}
|
|
1452
2086
|
},
|
|
@@ -1455,19 +2089,19 @@ function ConnectedProfileCard({
|
|
|
1455
2089
|
await confirmEmailChange.mutateAsync(args);
|
|
1456
2090
|
notify("Email address updated", "success");
|
|
1457
2091
|
} catch (e) {
|
|
1458
|
-
notify(
|
|
2092
|
+
notify(errorText2(e, "Invalid or expired verification code"), "error");
|
|
1459
2093
|
throw e;
|
|
1460
2094
|
}
|
|
1461
2095
|
}
|
|
1462
2096
|
});
|
|
1463
2097
|
const display = profile?.fullName || "Unnamed";
|
|
1464
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2098
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkAAFX64WD_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
|
|
1465
2099
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1466
|
-
|
|
2100
|
+
chunkAAFX64WD_cjs.ProfileCard,
|
|
1467
2101
|
{
|
|
1468
2102
|
avatar: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1469
2103
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1470
|
-
|
|
2104
|
+
chunkAAFX64WD_cjs.AvatarPicker,
|
|
1471
2105
|
{
|
|
1472
2106
|
pictureUrl: profile?.picture,
|
|
1473
2107
|
initials: chunkKDG6FER6_cjs.initials(display),
|
|
@@ -1514,9 +2148,9 @@ function ConnectedIdentityVerification({
|
|
|
1514
2148
|
onNameAccepted: () => notify("Name updated to match your ID", "success")
|
|
1515
2149
|
});
|
|
1516
2150
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1517
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2151
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
|
|
1518
2152
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1519
|
-
|
|
2153
|
+
chunkAAFX64WD_cjs.IdentityVerificationDialog,
|
|
1520
2154
|
{
|
|
1521
2155
|
flow,
|
|
1522
2156
|
accountName: profile?.fullName ?? "",
|
|
@@ -1529,7 +2163,7 @@ function ConnectedIdentityVerification({
|
|
|
1529
2163
|
function ConnectedRequireVerified({ children, labels }) {
|
|
1530
2164
|
const { data: profile } = react$1.useProfile();
|
|
1531
2165
|
const flow = react$1.useIdentityVerification();
|
|
1532
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2166
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
|
|
1533
2167
|
}
|
|
1534
2168
|
function defaultUnmetPasswordRequirement(password) {
|
|
1535
2169
|
if (password.length < 8) return "Minimum 8 characters";
|
|
@@ -1562,7 +2196,7 @@ function ConnectedPasswordChangeDialog({
|
|
|
1562
2196
|
onRecoveryComplete
|
|
1563
2197
|
});
|
|
1564
2198
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1565
|
-
|
|
2199
|
+
chunkAAFX64WD_cjs.PasswordChangeDialog,
|
|
1566
2200
|
{
|
|
1567
2201
|
open,
|
|
1568
2202
|
onClose: form.onCancel,
|
|
@@ -1588,10 +2222,10 @@ function ConnectedSecuritySection({
|
|
|
1588
2222
|
children
|
|
1589
2223
|
}) {
|
|
1590
2224
|
const [open, setOpen] = react.useState(false);
|
|
1591
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1592
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2225
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkAAFX64WD_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
|
|
2226
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkAAFX64WD_cjs.SettingsCard, { padding: "sm", children: [
|
|
1593
2227
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1594
|
-
|
|
2228
|
+
chunkAAFX64WD_cjs.SettingsActionRow,
|
|
1595
2229
|
{
|
|
1596
2230
|
title: "Change password",
|
|
1597
2231
|
description: "Used to sign in and to unlock your account key. Changing it keeps everything readable and re-encrypts nothing.",
|
|
@@ -1612,23 +2246,23 @@ function ConnectedSecuritySection({
|
|
|
1612
2246
|
] });
|
|
1613
2247
|
}
|
|
1614
2248
|
function ConnectedNotificationPreferences({
|
|
1615
|
-
categories =
|
|
2249
|
+
categories = chunkAAFX64WD_cjs.EMAIL_NOTIFICATION_CATEGORIES,
|
|
1616
2250
|
title = "Notifications"
|
|
1617
2251
|
}) {
|
|
1618
2252
|
const keys = react.useMemo(
|
|
1619
|
-
() => categories ===
|
|
2253
|
+
() => categories === chunkAAFX64WD_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkAAFX64WD_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
|
|
1620
2254
|
[categories]
|
|
1621
2255
|
);
|
|
1622
2256
|
const prefs = react$1.useNotificationPreferences(keys);
|
|
1623
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1624
|
-
|
|
2257
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2258
|
+
chunkAAFX64WD_cjs.NotificationCategoryList,
|
|
1625
2259
|
{
|
|
1626
2260
|
masterId: "emailNotifications",
|
|
1627
2261
|
masterTitle: "Email Notifications",
|
|
1628
2262
|
masterDescription: "Email me about activity when I\u2019m away",
|
|
1629
2263
|
masterChecked: prefs.masterChecked,
|
|
1630
2264
|
onMasterChange: prefs.setAll,
|
|
1631
|
-
categories:
|
|
2265
|
+
categories: chunkAAFX64WD_cjs.toNotificationCategories(prefs.checked, categories),
|
|
1632
2266
|
onCategoryChange: prefs.setCategory
|
|
1633
2267
|
}
|
|
1634
2268
|
) }) });
|
|
@@ -1639,14 +2273,14 @@ function ConnectedSessionsRow({ renderSessionIcon }) {
|
|
|
1639
2273
|
const sessions = react$1.useSessions({ enabled: open });
|
|
1640
2274
|
const currentSessionId = react$1.useCurrentSessionId();
|
|
1641
2275
|
const terminate = react$1.useTerminateSession();
|
|
1642
|
-
const views =
|
|
2276
|
+
const views = chunkAAFX64WD_cjs.toActiveSessionViews(sessions.data ?? [], {
|
|
1643
2277
|
currentSessionId,
|
|
1644
2278
|
terminatingId: terminate.isPending ? terminate.variables : null,
|
|
1645
2279
|
renderIcon: renderSessionIcon
|
|
1646
2280
|
});
|
|
1647
2281
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1648
2282
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1649
|
-
|
|
2283
|
+
chunkAAFX64WD_cjs.SettingsRow,
|
|
1650
2284
|
{
|
|
1651
2285
|
label: "Active sessions",
|
|
1652
2286
|
description: "Devices and agents currently signed in to your account.",
|
|
@@ -1668,7 +2302,7 @@ function ConnectedSessionsRow({ renderSessionIcon }) {
|
|
|
1668
2302
|
}
|
|
1669
2303
|
),
|
|
1670
2304
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1671
|
-
|
|
2305
|
+
chunkAAFX64WD_cjs.ActiveSessionsDialog,
|
|
1672
2306
|
{
|
|
1673
2307
|
open,
|
|
1674
2308
|
onOpenChange: setOpen,
|
|
@@ -1710,7 +2344,7 @@ function ConnectedLogoutDialog({
|
|
|
1710
2344
|
signOut.mutate({ everywhere, reason: "manual" });
|
|
1711
2345
|
};
|
|
1712
2346
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1713
|
-
|
|
2347
|
+
chunkAAFX64WD_cjs.LogoutDialog,
|
|
1714
2348
|
{
|
|
1715
2349
|
open,
|
|
1716
2350
|
onClose,
|
|
@@ -1718,7 +2352,7 @@ function ConnectedLogoutDialog({
|
|
|
1718
2352
|
onLogoutAll: () => void run(true),
|
|
1719
2353
|
canLogoutAll,
|
|
1720
2354
|
isOnline,
|
|
1721
|
-
sessions:
|
|
2355
|
+
sessions: chunkAAFX64WD_cjs.toLogoutSessionViews(sessions.data ?? []),
|
|
1722
2356
|
renderSessionIcon
|
|
1723
2357
|
}
|
|
1724
2358
|
);
|
|
@@ -1740,7 +2374,7 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
|
|
|
1740
2374
|
});
|
|
1741
2375
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1742
2376
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1743
|
-
|
|
2377
|
+
chunkAAFX64WD_cjs.SettingsDangerZone,
|
|
1744
2378
|
{
|
|
1745
2379
|
isOpen: zoneOpen,
|
|
1746
2380
|
onToggle: () => setZoneOpen((o) => !o),
|
|
@@ -1760,12 +2394,12 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
|
|
|
1760
2394
|
}
|
|
1761
2395
|
),
|
|
1762
2396
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1763
|
-
|
|
2397
|
+
chunkAAFX64WD_cjs.DeleteAccountDialog,
|
|
1764
2398
|
{
|
|
1765
2399
|
open: dialogOpen,
|
|
1766
2400
|
onClose: flow.onClose,
|
|
1767
2401
|
step: flow.step,
|
|
1768
|
-
blockers:
|
|
2402
|
+
blockers: chunkAAFX64WD_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
|
|
1769
2403
|
onContinue: flow.onContinue,
|
|
1770
2404
|
onBack: flow.onBack,
|
|
1771
2405
|
userEmail,
|
|
@@ -3460,7 +4094,7 @@ function ConnectedMailbox({
|
|
|
3460
4094
|
testIds: { root: "mail-search", input: "mail-filter-input" },
|
|
3461
4095
|
className: "min-w-28 flex-1 sm:max-w-72",
|
|
3462
4096
|
filter: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3463
|
-
|
|
4097
|
+
chunkRQ2Y7USX_cjs.TriStateFilterMenu,
|
|
3464
4098
|
{
|
|
3465
4099
|
testId: "mail-bar-filter-button",
|
|
3466
4100
|
open: filterMenuOpen,
|
|
@@ -3749,7 +4383,7 @@ function ConnectedMailbox({
|
|
|
3749
4383
|
}
|
|
3750
4384
|
),
|
|
3751
4385
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3752
|
-
|
|
4386
|
+
chunkDWZXSPMB_cjs.ConfirmDialog,
|
|
3753
4387
|
{
|
|
3754
4388
|
isOpen: confirmDelete !== null,
|
|
3755
4389
|
onClose: () => setConfirmDelete(null),
|
|
@@ -3941,6 +4575,22 @@ Object.defineProperty(exports, "useWorkspaceDocs", {
|
|
|
3941
4575
|
enumerable: true,
|
|
3942
4576
|
get: function () { return chunkIE5CUCZK_cjs.useWorkspaceDocs; }
|
|
3943
4577
|
});
|
|
4578
|
+
Object.defineProperty(exports, "ConnectedWorkspaceDataProvider", {
|
|
4579
|
+
enumerable: true,
|
|
4580
|
+
get: function () { return chunkUUHUQHXR_cjs.ConnectedWorkspaceDataProvider; }
|
|
4581
|
+
});
|
|
4582
|
+
Object.defineProperty(exports, "useConnectedConversations", {
|
|
4583
|
+
enumerable: true,
|
|
4584
|
+
get: function () { return chunkUUHUQHXR_cjs.useConnectedConversations; }
|
|
4585
|
+
});
|
|
4586
|
+
Object.defineProperty(exports, "useConnectedDocuments", {
|
|
4587
|
+
enumerable: true,
|
|
4588
|
+
get: function () { return chunkUUHUQHXR_cjs.useConnectedDocuments; }
|
|
4589
|
+
});
|
|
4590
|
+
Object.defineProperty(exports, "useConnectedTags", {
|
|
4591
|
+
enumerable: true,
|
|
4592
|
+
get: function () { return chunkUUHUQHXR_cjs.useConnectedTags; }
|
|
4593
|
+
});
|
|
3944
4594
|
Object.defineProperty(exports, "ConnectionProvider", {
|
|
3945
4595
|
enumerable: true,
|
|
3946
4596
|
get: function () { return chunkKDUGTKVI_cjs.ConnectionProvider; }
|
|
@@ -3978,20 +4628,29 @@ exports.ConnectedRequireVerified = ConnectedRequireVerified;
|
|
|
3978
4628
|
exports.ConnectedSecuritySection = ConnectedSecuritySection;
|
|
3979
4629
|
exports.ConnectedSessionsRow = ConnectedSessionsRow;
|
|
3980
4630
|
exports.ConnectedSkillUpload = ConnectedSkillUpload;
|
|
4631
|
+
exports.ConnectedSkillsLibrary = ConnectedSkillsLibrary;
|
|
3981
4632
|
exports.ConnectedTagTable = ConnectedTagTable;
|
|
3982
4633
|
exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
|
|
3983
4634
|
exports.ConnectedThreadFollow = ConnectedThreadFollow;
|
|
4635
|
+
exports.ConnectedWorkflowDocumentsField = ConnectedWorkflowDocumentsField;
|
|
4636
|
+
exports.ConnectedWorkflowLauncher = ConnectedWorkflowLauncher;
|
|
3984
4637
|
exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
|
|
4638
|
+
exports.ConnectedWorkflowsTable = ConnectedWorkflowsTable;
|
|
3985
4639
|
exports.ConnectedWorkspaceActivity = ConnectedWorkspaceActivity;
|
|
3986
4640
|
exports.ConnectedWorkspaceNotificationMenu = ConnectedWorkspaceNotificationMenu;
|
|
3987
4641
|
exports.DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS;
|
|
4642
|
+
exports.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS = DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS;
|
|
3988
4643
|
exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
|
|
3989
4644
|
exports.StreamedArtifact = StreamedArtifact;
|
|
3990
4645
|
exports.WorkflowRunThread = WorkflowRunThread;
|
|
3991
4646
|
exports.defaultUnmetPasswordRequirement = defaultUnmetPasswordRequirement;
|
|
3992
4647
|
exports.resolveMailbox = resolveMailbox;
|
|
4648
|
+
exports.toWorkflowFieldDocument = toWorkflowFieldDocument;
|
|
4649
|
+
exports.useConnectedAgentOptions = useConnectedAgentOptions;
|
|
3993
4650
|
exports.useConnectedDocxNotifications = useConnectedDocxNotifications;
|
|
3994
4651
|
exports.useConnectedShellWorkspaces = useConnectedShellWorkspaces;
|
|
3995
4652
|
exports.useConnectedWorkNotifications = useConnectedWorkNotifications;
|
|
4653
|
+
exports.useConnectedWorkflowScopeSource = useConnectedWorkflowScopeSource;
|
|
4654
|
+
exports.useConnectedWorkspaceRole = useConnectedWorkspaceRole;
|
|
3996
4655
|
//# sourceMappingURL=index.cjs.map
|
|
3997
4656
|
//# sourceMappingURL=index.cjs.map
|