@arbidocs/blocks 0.4.134 → 0.4.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/agents/index.cjs +354 -306
  2. package/dist/agents/index.js +5 -5
  3. package/dist/agents/skills/index.d.ts +2 -0
  4. package/dist/agents/skills/skillFiles.d.ts +65 -0
  5. package/dist/agents/skills/skillImport.d.ts +36 -0
  6. package/dist/agents/workflows/index.d.ts +1 -1
  7. package/dist/agents/workflows/workflow.d.ts +19 -0
  8. package/dist/calls/index.cjs +3 -3
  9. package/dist/calls/index.js +2 -2
  10. package/dist/chat/index.cjs +138 -138
  11. package/dist/chat/index.js +3 -3
  12. package/dist/{chunk-26E6PHD2.js → chunk-5BXEYYH6.js} +3 -3
  13. package/dist/{chunk-26E6PHD2.js.map → chunk-5BXEYYH6.js.map} +1 -1
  14. package/dist/{chunk-FUTMU4FR.js → chunk-5HFPRI3W.js} +3 -3
  15. package/dist/{chunk-FUTMU4FR.js.map → chunk-5HFPRI3W.js.map} +1 -1
  16. package/dist/{chunk-WV4IDVDQ.cjs → chunk-7YLJHTDC.cjs} +11 -11
  17. package/dist/{chunk-WV4IDVDQ.cjs.map → chunk-7YLJHTDC.cjs.map} +1 -1
  18. package/dist/{chunk-GZPTWHP5.cjs → chunk-C44D4WFG.cjs} +6 -6
  19. package/dist/{chunk-GZPTWHP5.cjs.map → chunk-C44D4WFG.cjs.map} +1 -1
  20. package/dist/{chunk-OPTBQSCV.cjs → chunk-DJM7DLCT.cjs} +3 -3
  21. package/dist/{chunk-OPTBQSCV.cjs.map → chunk-DJM7DLCT.cjs.map} +1 -1
  22. package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
  23. package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
  24. package/dist/{chunk-OQ7RUNOC.js → chunk-GFYGYME3.js} +3 -3
  25. package/dist/{chunk-OQ7RUNOC.js.map → chunk-GFYGYME3.js.map} +1 -1
  26. package/dist/{chunk-HW2J4JMV.cjs → chunk-IE5CUCZK.cjs} +8 -8
  27. package/dist/{chunk-HW2J4JMV.cjs.map → chunk-IE5CUCZK.cjs.map} +1 -1
  28. package/dist/{chunk-54ANPPMV.js → chunk-IQU2GI6V.js} +248 -4
  29. package/dist/chunk-IQU2GI6V.js.map +1 -0
  30. package/dist/{chunk-CXLVI3SB.js → chunk-JO3EMZ4X.js} +3 -3
  31. package/dist/{chunk-CXLVI3SB.js.map → chunk-JO3EMZ4X.js.map} +1 -1
  32. package/dist/{chunk-ARDHLU73.cjs → chunk-KDUGTKVI.cjs} +21 -2
  33. package/dist/chunk-KDUGTKVI.cjs.map +1 -0
  34. package/dist/{chunk-4RLCRFZS.js → chunk-L2PAPOZ5.js} +21 -3
  35. package/dist/chunk-L2PAPOZ5.js.map +1 -0
  36. package/dist/{chunk-LC2KJSUS.cjs → chunk-LIHRGG4M.cjs} +302 -45
  37. package/dist/chunk-LIHRGG4M.cjs.map +1 -0
  38. package/dist/{chunk-BMNNT27D.js → chunk-LT2X5N37.js} +7 -48
  39. package/dist/chunk-LT2X5N37.js.map +1 -0
  40. package/dist/{chunk-D4YR56FV.cjs → chunk-N55UIXVT.cjs} +5 -5
  41. package/dist/{chunk-D4YR56FV.cjs.map → chunk-N55UIXVT.cjs.map} +1 -1
  42. package/dist/{chunk-BZF55UCE.cjs → chunk-OAL3B2ZU.cjs} +5 -5
  43. package/dist/{chunk-BZF55UCE.cjs.map → chunk-OAL3B2ZU.cjs.map} +1 -1
  44. package/dist/{chunk-AAFX64WD.cjs → chunk-OR4CO743.cjs} +3 -3
  45. package/dist/{chunk-AAFX64WD.cjs.map → chunk-OR4CO743.cjs.map} +1 -1
  46. package/dist/{chunk-HM23LXUP.cjs → chunk-OWCEQKAR.cjs} +23 -2
  47. package/dist/chunk-OWCEQKAR.cjs.map +1 -0
  48. package/dist/{chunk-QUDCNT63.cjs → chunk-OZLWSNUC.cjs} +66 -110
  49. package/dist/chunk-OZLWSNUC.cjs.map +1 -0
  50. package/dist/{chunk-VW2C2AZL.js → chunk-RUB62J2X.js} +3 -3
  51. package/dist/{chunk-VW2C2AZL.js.map → chunk-RUB62J2X.js.map} +1 -1
  52. package/dist/{chunk-4UMXQPNA.js → chunk-VIU7AMHF.js} +4 -4
  53. package/dist/{chunk-4UMXQPNA.js.map → chunk-VIU7AMHF.js.map} +1 -1
  54. package/dist/{chunk-7HAM7Y5U.js → chunk-Y5KTM3V5.js} +22 -3
  55. package/dist/chunk-Y5KTM3V5.js.map +1 -0
  56. package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
  57. package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
  58. package/dist/{chunk-YIF6SVSO.js → chunk-ZNI4SW2G.js} +4 -4
  59. package/dist/{chunk-YIF6SVSO.js.map → chunk-ZNI4SW2G.js.map} +1 -1
  60. package/dist/collaboration/index.cjs +42 -42
  61. package/dist/collaboration/index.js +2 -2
  62. package/dist/connect/docx.cjs +6 -6
  63. package/dist/connect/docx.js +5 -5
  64. package/dist/connect/index.cjs +220 -131
  65. package/dist/connect/index.cjs.map +1 -1
  66. package/dist/connect/index.d.ts +2 -2
  67. package/dist/connect/index.js +142 -58
  68. package/dist/connect/index.js.map +1 -1
  69. package/dist/connection/ConnectedSkillUpload.d.ts +26 -2
  70. package/dist/connection/ConnectedWorkflowBuilder.d.ts +23 -11
  71. package/dist/connection/ConnectionProvider.d.ts +17 -0
  72. package/dist/facts/index.cjs +3 -3
  73. package/dist/facts/index.js +3 -3
  74. package/dist/files/index.cjs +2 -2
  75. package/dist/files/index.js +2 -2
  76. package/dist/home/index.cjs +2 -2
  77. package/dist/home/index.js +2 -2
  78. package/dist/index.cjs +616 -568
  79. package/dist/index.js +12 -12
  80. package/dist/retrieval/index.cjs +1 -1
  81. package/dist/retrieval/index.js +1 -1
  82. package/dist/settings/index.cjs +38 -38
  83. package/dist/settings/index.js +4 -4
  84. package/dist/shell/index.cjs +2 -2
  85. package/dist/shell/index.js +2 -2
  86. package/dist/studio/index.cjs +8 -8
  87. package/dist/studio/index.js +6 -6
  88. package/dist/workflow-canvas/index.cjs +109 -85
  89. package/dist/workflow-canvas/index.cjs.map +1 -1
  90. package/dist/workflow-canvas/index.d.ts +1 -1
  91. package/dist/workflow-canvas/index.js +60 -37
  92. package/dist/workflow-canvas/index.js.map +1 -1
  93. package/node_modules/@arbidocs/coedit/package.json +1 -1
  94. package/package.json +4 -4
  95. package/dist/chunk-4RLCRFZS.js.map +0 -1
  96. package/dist/chunk-54ANPPMV.js.map +0 -1
  97. package/dist/chunk-7HAM7Y5U.js.map +0 -1
  98. package/dist/chunk-ARDHLU73.cjs.map +0 -1
  99. package/dist/chunk-BMNNT27D.js.map +0 -1
  100. package/dist/chunk-HM23LXUP.cjs.map +0 -1
  101. package/dist/chunk-LC2KJSUS.cjs.map +0 -1
  102. package/dist/chunk-QUDCNT63.cjs.map +0 -1
@@ -1,40 +1,40 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkAAFX64WD_cjs = require('../chunk-AAFX64WD.cjs');
5
- var chunkHW2J4JMV_cjs = require('../chunk-HW2J4JMV.cjs');
6
- var chunkGZPTWHP5_cjs = require('../chunk-GZPTWHP5.cjs');
7
- var chunkARDHLU73_cjs = require('../chunk-ARDHLU73.cjs');
4
+ var chunkOR4CO743_cjs = require('../chunk-OR4CO743.cjs');
5
+ var chunkIE5CUCZK_cjs = require('../chunk-IE5CUCZK.cjs');
6
+ var chunkC44D4WFG_cjs = require('../chunk-C44D4WFG.cjs');
7
+ var chunkKDUGTKVI_cjs = require('../chunk-KDUGTKVI.cjs');
8
8
  var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
9
9
  require('../chunk-S24XEVPS.cjs');
10
10
  require('../chunk-V5OAXIBN.cjs');
11
11
  require('../chunk-5FYU7ZIU.cjs');
12
12
  var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
13
- var chunkD4YR56FV_cjs = require('../chunk-D4YR56FV.cjs');
13
+ var chunkN55UIXVT_cjs = require('../chunk-N55UIXVT.cjs');
14
14
  var chunkO6IEZDRC_cjs = require('../chunk-O6IEZDRC.cjs');
15
15
  var chunkI2QSDQQV_cjs = require('../chunk-I2QSDQQV.cjs');
16
16
  require('../chunk-RC25WMVB.cjs');
17
- var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
18
- var chunkLC2KJSUS_cjs = require('../chunk-LC2KJSUS.cjs');
17
+ var chunkLIHRGG4M_cjs = require('../chunk-LIHRGG4M.cjs');
19
18
  require('../chunk-7D737FLE.cjs');
20
19
  var chunkN26CXGXC_cjs = require('../chunk-N26CXGXC.cjs');
21
20
  require('../chunk-DETZZBG2.cjs');
22
21
  var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
23
22
  require('../chunk-C2CWWEHO.cjs');
23
+ var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
24
24
  require('../chunk-ADOKTJHV.cjs');
25
- var chunkDWZXSPMB_cjs = require('../chunk-DWZXSPMB.cjs');
25
+ var chunkZAVEMQ37_cjs = require('../chunk-ZAVEMQ37.cjs');
26
26
  var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
27
- var chunkWV4IDVDQ_cjs = require('../chunk-WV4IDVDQ.cjs');
27
+ var chunkC4WSHRR6_cjs = require('../chunk-C4WSHRR6.cjs');
28
+ var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
29
+ var chunk7YLJHTDC_cjs = require('../chunk-7YLJHTDC.cjs');
28
30
  require('../chunk-B6MVQCXW.cjs');
29
31
  var chunkJKB7WT7L_cjs = require('../chunk-JKB7WT7L.cjs');
30
- var chunkHM23LXUP_cjs = require('../chunk-HM23LXUP.cjs');
32
+ var chunkOWCEQKAR_cjs = require('../chunk-OWCEQKAR.cjs');
31
33
  require('../chunk-7UTB4PHM.cjs');
32
34
  require('../chunk-32HW2Q33.cjs');
33
35
  require('../chunk-FX3K6LNZ.cjs');
34
36
  require('../chunk-PPCATBOY.cjs');
35
37
  require('../chunk-MHVNT4J3.cjs');
36
- var chunkC4WSHRR6_cjs = require('../chunk-C4WSHRR6.cjs');
37
- var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
38
38
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
39
39
  require('../chunk-DES3K4SD.cjs');
40
40
  var react = require('react');
@@ -42,15 +42,15 @@ var reactQuery = require('@tanstack/react-query');
42
42
  var react$1 = require('@arbidocs/react');
43
43
  var jsxRuntime = require('react/jsx-runtime');
44
44
  var ui = require('@arbidocs/react/ui');
45
- var artifacts = require('@arbidocs/react/artifacts');
46
45
  var lucideReact = require('lucide-react');
46
+ var artifacts = require('@arbidocs/react/artifacts');
47
47
  var documentTools = require('@arbidocs/react/document-tools');
48
48
  var shell = require('@arbidocs/react/shell');
49
49
  var client = require('@arbidocs/client');
50
50
  var reactDom = require('react-dom');
51
51
 
52
52
  function ConnectionBoundWebSocket({ children }) {
53
- const { status } = chunkARDHLU73_cjs.useConnection();
53
+ const { status } = chunkKDUGTKVI_cjs.useConnection();
54
54
  return /* @__PURE__ */ jsxRuntime.jsx(react$1.ArbiWebSocketProvider, { enabled: status === "authenticated", children });
55
55
  }
56
56
  function ArbiAppProvider({
@@ -63,10 +63,10 @@ function ArbiAppProvider({
63
63
  })
64
64
  );
65
65
  const providerUrl = config.apiUrl || config.demoApiUrl || "https://demo.arbi.local";
66
- return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.ArbiProvider, { url: providerUrl, deploymentDomain: config.deploymentDomain, children: /* @__PURE__ */ jsxRuntime.jsx(chunkARDHLU73_cjs.ConnectionProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(ConnectionBoundWebSocket, { children }) }) }) });
66
+ return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(react$1.ArbiProvider, { url: providerUrl, deploymentDomain: config.deploymentDomain, children: /* @__PURE__ */ jsxRuntime.jsx(chunkKDUGTKVI_cjs.ConnectionProvider, { config, children: /* @__PURE__ */ jsxRuntime.jsx(ConnectionBoundWebSocket, { children }) }) }) });
67
67
  }
68
68
  function ConnectedTaskAccessRequest({ conversationId }) {
69
- const { workspaceId } = chunkARDHLU73_cjs.useConnection();
69
+ const { workspaceId } = chunkKDUGTKVI_cjs.useConnection();
70
70
  const tasks = react$1.useConversations(workspaceId ?? void 0, { live: true });
71
71
  const run = react$1.useRunConversation();
72
72
  const task = tasks.data?.find((item) => item.external_id === conversationId);
@@ -98,7 +98,7 @@ function ConnectedWorkspaceActivity({
98
98
  pageSize,
99
99
  ...listProps
100
100
  }) {
101
- const { workspaceId: selected, status, ensureWorkspaceOpen } = chunkARDHLU73_cjs.useConnection();
101
+ const { workspaceId: selected, status, ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnection();
102
102
  const workspaceId = workspaceProp ?? selected ?? void 0;
103
103
  const live = status === "authenticated" && !!workspaceId;
104
104
  const feed = react$1.useWorkspaceActivity(workspaceId, {
@@ -125,7 +125,7 @@ function ConnectedWorkspaceActivity({
125
125
  [feed.data]
126
126
  );
127
127
  return /* @__PURE__ */ jsxRuntime.jsx(
128
- chunkD4YR56FV_cjs.WorkspaceActivityList,
128
+ chunkN55UIXVT_cjs.WorkspaceActivityList,
129
129
  {
130
130
  ...listProps,
131
131
  items,
@@ -144,14 +144,14 @@ function ConnectedWorkspaceNotificationMenu({
144
144
  workspaceId: workspaceProp,
145
145
  ...menuProps
146
146
  }) {
147
- const { workspaceId: selected, status } = chunkARDHLU73_cjs.useConnection();
147
+ const { workspaceId: selected, status } = chunkKDUGTKVI_cjs.useConnection();
148
148
  const workspaceId = workspaceProp ?? selected;
149
149
  const { level, setLevel, isLoading, isSaving } = react$1.useWorkspaceNotificationLevel(workspaceId, {
150
150
  enabled: status === "authenticated"
151
151
  });
152
152
  if (!workspaceId) return null;
153
153
  return /* @__PURE__ */ jsxRuntime.jsx(
154
- chunkD4YR56FV_cjs.WorkspaceNotificationMenu,
154
+ chunkN55UIXVT_cjs.WorkspaceNotificationMenu,
155
155
  {
156
156
  ...menuProps,
157
157
  level,
@@ -165,12 +165,12 @@ function ConnectedThreadFollow({
165
165
  as = "button",
166
166
  ...props
167
167
  }) {
168
- const { status } = chunkARDHLU73_cjs.useConnection();
168
+ const { status } = chunkKDUGTKVI_cjs.useConnection();
169
169
  const { following, setFollowing, isLoading, isSaving } = react$1.useFollowThread(conversationId, {
170
170
  enabled: status === "authenticated"
171
171
  });
172
172
  if (!conversationId) return null;
173
- const Control = as === "menu-item" ? chunkD4YR56FV_cjs.ThreadFollowMenuItem : chunkD4YR56FV_cjs.ThreadFollowButton;
173
+ const Control = as === "menu-item" ? chunkN55UIXVT_cjs.ThreadFollowMenuItem : chunkN55UIXVT_cjs.ThreadFollowButton;
174
174
  return /* @__PURE__ */ jsxRuntime.jsx(
175
175
  Control,
176
176
  {
@@ -181,47 +181,131 @@ function ConnectedThreadFollow({
181
181
  }
182
182
  );
183
183
  }
184
- function ConnectedSkillUpload() {
185
- const [name, setName] = react.useState("");
186
- const [file, setFile] = react.useState(null);
184
+ var DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = {
185
+ title: "Add a skill",
186
+ description: "Bring in a skill someone sent you, from a file or a link.",
187
+ fromFile: "From a file",
188
+ chooseFile: "Choose a file",
189
+ fromLink: "From a link",
190
+ linkPlaceholder: "https://\u2026/SKILL.md",
191
+ add: "Add",
192
+ cancel: "Cancel",
193
+ added: (slug) => `${slug} added`,
194
+ failed: "Could not add the skill"
195
+ };
196
+ function ConnectedSkillUpload({ onDone, labels, className }) {
197
+ const l = { ...DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, ...labels };
198
+ const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
187
199
  const upload = react$1.useUploadSkillFiles();
188
- const slug = name.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
189
- return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "space-y-3 rounded-lg border p-4", "data-testid": "skill-upload", children: [
190
- /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm font-semibold", children: "Add a skill" }),
191
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "Upload a SKILL.md file containing the instructions your assistant should follow." }),
192
- /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skill-upload-name", children: "Skill name" }),
193
- /* @__PURE__ */ jsxRuntime.jsx(
194
- ui.Input,
195
- {
196
- id: "skill-upload-name",
197
- value: name,
198
- onChange: (event) => setName(event.target.value),
199
- placeholder: "disclosure-review",
200
- "data-testid": "skill-upload-name"
201
- }
202
- ),
203
- /* @__PURE__ */ jsxRuntime.jsx(
204
- ui.Input,
205
- {
206
- type: "file",
207
- accept: ".md",
208
- "aria-label": "Skill instructions file",
209
- onChange: (event) => setFile(event.target.files?.[0] ?? null),
210
- "data-testid": "skill-upload-file"
211
- }
212
- ),
213
- /* @__PURE__ */ jsxRuntime.jsx(
214
- ui.Button,
215
- {
216
- disabled: !slug || !file || upload.isPending,
217
- onClick: () => file && upload.mutate([{ folder: `skills/${slug}`, fileName: "SKILL.md", content: file }]),
218
- "data-testid": "skill-upload-submit",
219
- children: upload.isPending ? "Uploading\u2026" : "Upload skill"
220
- }
221
- ),
222
- upload.isSuccess && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "status", className: "text-sm", children: "Uploaded. The skill will appear once processing finishes." }),
223
- upload.error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-sm text-destructive", children: upload.error.message })
224
- ] });
200
+ const fileRef = react.useRef(null);
201
+ const [url, setUrl] = react.useState("");
202
+ const [busy, setBusy] = react.useState(false);
203
+ const add = async (read) => {
204
+ setBusy(true);
205
+ try {
206
+ const { slug, entries } = await read();
207
+ await upload.mutateAsync(
208
+ entries.map((e) => ({
209
+ folder: e.folder,
210
+ fileName: e.fileName,
211
+ content: new Blob([e.content], { type: "text/markdown" })
212
+ }))
213
+ );
214
+ notify(l.added(slug), "success");
215
+ setUrl("");
216
+ onDone?.(slug);
217
+ } catch (error) {
218
+ notify(error instanceof Error && error.message ? error.message : l.failed, "error");
219
+ } finally {
220
+ setBusy(false);
221
+ }
222
+ };
223
+ return /* @__PURE__ */ jsxRuntime.jsxs(
224
+ "div",
225
+ {
226
+ className: ui.cn("flex flex-col gap-6 overflow-y-auto p-4", className),
227
+ "data-testid": "skills-add-view",
228
+ children: [
229
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
230
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold", children: l.title }),
231
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.description })
232
+ ] }),
233
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
234
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: l.fromFile }),
235
+ /* @__PURE__ */ jsxRuntime.jsx(
236
+ "input",
237
+ {
238
+ ref: fileRef,
239
+ type: "file",
240
+ accept: ".md,.markdown,.zip",
241
+ className: "hidden",
242
+ "data-testid": "skills-add-file-input",
243
+ onChange: (e) => {
244
+ const file = e.target.files?.[0];
245
+ e.target.value = "";
246
+ if (file) void add(() => chunkLIHRGG4M_cjs.importSkillFile(file));
247
+ }
248
+ }
249
+ ),
250
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(
251
+ ui.Button,
252
+ {
253
+ variant: "outline",
254
+ disabled: busy,
255
+ onClick: () => fileRef.current?.click(),
256
+ className: "pointer-coarse:min-h-11",
257
+ "data-testid": "skills-add-file",
258
+ children: [
259
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Upload, { className: "mr-1.5 size-4" }),
260
+ l.chooseFile
261
+ ]
262
+ }
263
+ ) })
264
+ ] }),
265
+ /* @__PURE__ */ jsxRuntime.jsxs(
266
+ "form",
267
+ {
268
+ className: "space-y-2",
269
+ onSubmit: (e) => {
270
+ e.preventDefault();
271
+ if (url.trim()) void add(() => chunkLIHRGG4M_cjs.importSkillFromUrl(url));
272
+ },
273
+ children: [
274
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
275
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 sm:flex-row", children: [
276
+ /* @__PURE__ */ jsxRuntime.jsx(
277
+ ui.Input,
278
+ {
279
+ id: "skills-add-url",
280
+ value: url,
281
+ onChange: (e) => setUrl(e.target.value),
282
+ placeholder: l.linkPlaceholder,
283
+ inputMode: "url",
284
+ className: "pointer-coarse:min-h-11",
285
+ "data-testid": "skills-add-url-input"
286
+ }
287
+ ),
288
+ /* @__PURE__ */ jsxRuntime.jsxs(
289
+ ui.Button,
290
+ {
291
+ type: "submit",
292
+ disabled: busy || !url.trim(),
293
+ className: "pointer-coarse:min-h-11",
294
+ "data-testid": "skills-add-url-submit",
295
+ children: [
296
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link2, { className: "mr-1.5 size-4" }),
297
+ l.add
298
+ ]
299
+ }
300
+ )
301
+ ] })
302
+ ]
303
+ }
304
+ ),
305
+ onDone && /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "ghost", onClick: () => onDone(), className: "pointer-coarse:min-h-11", children: l.cancel }) })
306
+ ]
307
+ }
308
+ );
225
309
  }
226
310
  var StreamedArtifactEditor = react.lazy(() => import('../StreamedArtifactEditor-TQAND4H5.cjs'));
227
311
  function StreamedArtifact({
@@ -296,7 +380,7 @@ function StreamedArtifact({
296
380
  }
297
381
  var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
298
382
  function formValues(step, inputs) {
299
- const fields = chunkHM23LXUP_cjs.stepFields(step);
383
+ const fields = chunkOWCEQKAR_cjs.stepFields(step);
300
384
  if (!fields.length) return void 0;
301
385
  if (step.kind === "form")
302
386
  return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
@@ -330,11 +414,11 @@ function useAnswerRetry(missing, refetch) {
330
414
  }
331
415
  function useWorkflowThread(workflow, options = {}) {
332
416
  const arbi = react$1.useArbi();
333
- const { ensureWorkspaceOpen, status } = chunkARDHLU73_cjs.useConnection();
334
- const { wsId } = chunkHW2J4JMV_cjs.useWorkspaceDocs();
417
+ const { ensureWorkspaceOpen, status } = chunkKDUGTKVI_cjs.useConnection();
418
+ const { wsId } = chunkIE5CUCZK_cjs.useWorkspaceDocs();
335
419
  const [threadId, setThreadId] = react.useState(options.conversationId);
336
420
  const [localInputs, setLocalInputs] = react.useState(
337
- () => chunkHM23LXUP_cjs.initialRunInputs(workflow, options.initialInputs)
421
+ () => chunkOWCEQKAR_cjs.initialRunInputs(workflow, options.initialInputs)
338
422
  );
339
423
  const [edits, setEdits] = react.useState({});
340
424
  const [localStates, setLocalStates] = react.useState({});
@@ -354,12 +438,12 @@ function useWorkflowThread(workflow, options = {}) {
354
438
  );
355
439
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
356
440
  const steps = react.useMemo(
357
- () => chunkHM23LXUP_cjs.workflowSteps(workflow).length > 0 ? chunkHM23LXUP_cjs.workflowSteps(workflow) : chunkLC2KJSUS_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
441
+ () => chunkOWCEQKAR_cjs.workflowSteps(workflow).length > 0 ? chunkOWCEQKAR_cjs.workflowSteps(workflow) : chunkLIHRGG4M_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
358
442
  [workflow, conversation?.plan?.steps]
359
443
  );
360
444
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
361
445
  const serverStates = react.useMemo(
362
- () => chunkHM23LXUP_cjs.stepStatesFromActivity(activity.data ?? []),
446
+ () => chunkOWCEQKAR_cjs.stepStatesFromActivity(activity.data ?? []),
363
447
  [activity.data]
364
448
  );
365
449
  const working = steps.some(
@@ -402,7 +486,7 @@ function useWorkflowThread(workflow, options = {}) {
402
486
  async (values, done) => {
403
487
  await ensureWorkspaceOpen();
404
488
  const created = await createWork.mutateAsync({
405
- title: chunkHM23LXUP_cjs.runThreadTitle(workflow, values).slice(0, 60),
489
+ title: chunkOWCEQKAR_cjs.runThreadTitle(workflow, values).slice(0, 60),
406
490
  description: workflow.description || null,
407
491
  prompt: null,
408
492
  skill_ref: null,
@@ -414,7 +498,7 @@ function useWorkflowThread(workflow, options = {}) {
414
498
  criteria: [],
415
499
  max_passes: 3,
416
500
  documents: [],
417
- steps: chunkLC2KJSUS_cjs.toPlanSteps(workflow, {
501
+ steps: chunkLIHRGG4M_cjs.toPlanSteps(workflow, {
418
502
  inputs: values,
419
503
  resolveWorkflow: options.resolveWorkflow,
420
504
  compose: options.compose
@@ -501,7 +585,7 @@ function useWorkflowThread(workflow, options = {}) {
501
585
  const anyRunning = Object.values(states).some((s) => s.status === "running");
502
586
  const needsStart = !threadId || idle && !anyRunning;
503
587
  const runError = idle ? conversation?.last_error ?? null : null;
504
- const view = chunkLC2KJSUS_cjs.useWorkflowView({
588
+ const view = chunkLIHRGG4M_cjs.useWorkflowView({
505
589
  steps,
506
590
  states,
507
591
  inputs,
@@ -544,7 +628,7 @@ function WorkflowRunThread({
544
628
  if (listed && activeThreadId !== conversationId) selectThread(conversationId);
545
629
  }, [listed, activeThreadId, conversationId, selectThread]);
546
630
  return /* @__PURE__ */ jsxRuntime.jsx(
547
- chunkWV4IDVDQ_cjs.ChatPage,
631
+ chunk7YLJHTDC_cjs.ChatPage,
548
632
  {
549
633
  chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
550
634
  singleThread: true,
@@ -580,9 +664,9 @@ function WorkflowSignDialog({
580
664
  labels
581
665
  }) {
582
666
  const arbi = react$1.useArbi();
583
- const { user, ensureWorkspaceOpen } = chunkARDHLU73_cjs.useConnection();
667
+ const { user, ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnection();
584
668
  const tools = documentTools.useOptionalDocumentTools();
585
- const { id, version: stepVersion } = chunkHM23LXUP_cjs.splitDocRef(docRef);
669
+ const { id, version: stepVersion } = chunkOWCEQKAR_cjs.splitDocRef(docRef);
586
670
  const [version, setVersion] = react.useState(stepVersion);
587
671
  const [pdf, setPdf] = react.useState(null);
588
672
  const [preparing, setPreparing] = react.useState(false);
@@ -660,7 +744,7 @@ function WorkflowWordDialog({
660
744
  onClose,
661
745
  labels
662
746
  }) {
663
- const { id } = chunkHM23LXUP_cjs.splitDocRef(docRef);
747
+ const { id } = chunkOWCEQKAR_cjs.splitDocRef(docRef);
664
748
  return /* @__PURE__ */ jsxRuntime.jsx(
665
749
  chunkULWRNGGE_cjs.ModalScaffold,
666
750
  {
@@ -669,7 +753,7 @@ function WorkflowWordDialog({
669
753
  title: title ?? labels.wordTitle,
670
754
  size: "xl",
671
755
  testId: "workflow-word-dialog",
672
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkGZPTWHP5_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
756
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkC44D4WFG_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
673
757
  }
674
758
  );
675
759
  }
@@ -680,7 +764,7 @@ function WorkflowReviewGridDialog({
680
764
  onOpenDocument,
681
765
  labels
682
766
  }) {
683
- const { workspaceId } = chunkARDHLU73_cjs.useConnection();
767
+ const { workspaceId } = chunkKDUGTKVI_cjs.useConnection();
684
768
  const allTags = react$1.useTags(workspaceId ?? void 0);
685
769
  const all = react$1.useDocuments(workspaceId ?? void 0);
686
770
  const isLoading = allTags.isLoading || all.isLoading || all.isFetching && !all.isFetchedAfterMount;
@@ -808,8 +892,8 @@ function ConnectedWorkflowRunner({
808
892
  const l = { ...DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, ...connectedLabels };
809
893
  const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
810
894
  const arbi = react$1.useArbi();
811
- const { ensureWorkspaceOpen, user } = chunkARDHLU73_cjs.useConnection();
812
- const { wsId } = chunkHW2J4JMV_cjs.useWorkspaceDocs();
895
+ const { ensureWorkspaceOpen, user } = chunkKDUGTKVI_cjs.useConnection();
896
+ const { wsId } = chunkIE5CUCZK_cjs.useWorkspaceDocs();
813
897
  const { data: docs = [], refetch } = react$1.useDocuments(wsId);
814
898
  const [sending, setSending] = react.useState([]);
815
899
  const [added, setAdded] = react.useState({});
@@ -832,7 +916,7 @@ function ConnectedWorkflowRunner({
832
916
  () => ({
833
917
  me: user?.externalId,
834
918
  openDocument: onOpenDocument && ((ref) => {
835
- const { id, version } = chunkHM23LXUP_cjs.splitDocRef(ref);
919
+ const { id, version } = chunkOWCEQKAR_cjs.splitDocRef(ref);
836
920
  onOpenDocument(id, version);
837
921
  }),
838
922
  openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
@@ -842,7 +926,7 @@ function ConnectedWorkflowRunner({
842
926
  const w = state.waiting;
843
927
  if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
844
928
  }),
845
- openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkHM23LXUP_cjs.splitDocRef(ref).id) ?? "" })),
929
+ openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkOWCEQKAR_cjs.splitDocRef(ref).id) ?? "" })),
846
930
  openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
847
931
  }),
848
932
  [user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
@@ -978,7 +1062,7 @@ function ConnectedWorkflowRunner({
978
1062
  );
979
1063
  };
980
1064
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
981
- chunkLC2KJSUS_cjs.WorkflowRunner,
1065
+ chunkLIHRGG4M_cjs.WorkflowRunner,
982
1066
  {
983
1067
  people,
984
1068
  ...runnerProps,
@@ -1024,10 +1108,10 @@ function ConnectedWorkflowRunner({
1024
1108
  ) }),
1025
1109
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1026
1110
  /* @__PURE__ */ jsxRuntime.jsx(
1027
- chunkLC2KJSUS_cjs.WorkflowStepBar,
1111
+ chunkLIHRGG4M_cjs.WorkflowStepBar,
1028
1112
  {
1029
1113
  run: view,
1030
- levels: chunkHM23LXUP_cjs.stepLevels(view.steps),
1114
+ levels: chunkOWCEQKAR_cjs.stepLevels(view.steps),
1031
1115
  doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
1032
1116
  icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
1033
1117
  tid: (suffix) => `${testIdPrefix}-${suffix}`
@@ -1047,13 +1131,13 @@ function ConnectedWorkflowRunner({
1047
1131
  return state ? [[s.id, state]] : [];
1048
1132
  })
1049
1133
  );
1050
- const ref = chunkHM23LXUP_cjs.stepDocuments(view.steps, states, id).at(-1);
1134
+ const ref = chunkOWCEQKAR_cjs.stepDocuments(view.steps, states, id).at(-1);
1051
1135
  const open = actions.openDocument ?? actions.openRedline;
1052
1136
  return {
1053
1137
  title: step.title,
1054
- kind: chunkHM23LXUP_cjs.stepKindOf(step),
1138
+ kind: chunkOWCEQKAR_cjs.stepKindOf(step),
1055
1139
  phase: view.phaseOf(id),
1056
- document: ref && open ? { name: nameOfDoc(chunkHM23LXUP_cjs.splitDocRef(ref).id) ?? ref, onOpen: () => open(ref) } : void 0
1140
+ document: ref && open ? { name: nameOfDoc(chunkOWCEQKAR_cjs.splitDocRef(ref).id) ?? ref, onOpen: () => open(ref) } : void 0
1057
1141
  };
1058
1142
  },
1059
1143
  targetMessageId: target,
@@ -1120,7 +1204,7 @@ function ReviewNotify({
1120
1204
  testId
1121
1205
  }) {
1122
1206
  const arbi = react$1.useArbi();
1123
- const { status, user, ensureWorkspaceOpen } = chunkARDHLU73_cjs.useConnection();
1207
+ const { status, user, ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnection();
1124
1208
  const { data: members = [] } = react$1.useWorkspaceUsers(workspaceId, {
1125
1209
  enabled: status === "authenticated" && !!workspaceId,
1126
1210
  beforeFetch: ensureWorkspaceOpen
@@ -1197,7 +1281,7 @@ function ConnectedTagTable({
1197
1281
  ...props
1198
1282
  }) {
1199
1283
  const arbi = react$1.useArbi();
1200
- const { workspaceId, status, ensureWorkspaceOpen } = chunkARDHLU73_cjs.useConnection();
1284
+ const { workspaceId, status, ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnection();
1201
1285
  const schema = react$1.useTagKindSchema(kind);
1202
1286
  const rows = react$1.useTags(workspaceId ?? void 0, {
1203
1287
  kind,
@@ -1225,7 +1309,7 @@ function ConnectedTagTable({
1225
1309
  const fail = (e) => setError(e instanceof Error ? e.message : String(e));
1226
1310
  const snapshot = (data) => {
1227
1311
  const title = exportTitle ?? KIND_TITLES[kind];
1228
- const bytes = chunkD4YR56FV_cjs.tagTableDocx(data, {
1312
+ const bytes = chunkN55UIXVT_cjs.tagTableDocx(data, {
1229
1313
  title,
1230
1314
  nameOf: (id) => people.find((p) => p.value === id)?.label
1231
1315
  });
@@ -1235,7 +1319,7 @@ function ConnectedTagTable({
1235
1319
  };
1236
1320
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1237
1321
  /* @__PURE__ */ jsxRuntime.jsx(
1238
- chunkD4YR56FV_cjs.TagTable,
1322
+ chunkN55UIXVT_cjs.TagTable,
1239
1323
  {
1240
1324
  ...props,
1241
1325
  table,
@@ -1301,7 +1385,7 @@ function ConnectedTagTable({
1301
1385
  ] });
1302
1386
  }
1303
1387
  function useConnectedShellWorkspaces(options = {}) {
1304
- const { workspaceId, setWorkspace } = chunkARDHLU73_cjs.useConnection();
1388
+ const { workspaceId, setWorkspace } = chunkKDUGTKVI_cjs.useConnection();
1305
1389
  const query = react$1.useWorkspaces();
1306
1390
  return react$1.useShellWorkspaces({
1307
1391
  ...options,
@@ -1377,13 +1461,13 @@ function ConnectedProfileCard({
1377
1461
  }
1378
1462
  });
1379
1463
  const display = profile?.fullName || "Unnamed";
1380
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkAAFX64WD_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
1464
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkOR4CO743_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
1381
1465
  /* @__PURE__ */ jsxRuntime.jsx(
1382
- chunkAAFX64WD_cjs.ProfileCard,
1466
+ chunkOR4CO743_cjs.ProfileCard,
1383
1467
  {
1384
1468
  avatar: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1385
1469
  /* @__PURE__ */ jsxRuntime.jsx(
1386
- chunkAAFX64WD_cjs.AvatarPicker,
1470
+ chunkOR4CO743_cjs.AvatarPicker,
1387
1471
  {
1388
1472
  pictureUrl: profile?.picture,
1389
1473
  initials: chunkKDG6FER6_cjs.initials(display),
@@ -1430,9 +1514,9 @@ function ConnectedIdentityVerification({
1430
1514
  onNameAccepted: () => notify("Name updated to match your ID", "success")
1431
1515
  });
1432
1516
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1433
- /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
1517
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
1434
1518
  /* @__PURE__ */ jsxRuntime.jsx(
1435
- chunkAAFX64WD_cjs.IdentityVerificationDialog,
1519
+ chunkOR4CO743_cjs.IdentityVerificationDialog,
1436
1520
  {
1437
1521
  flow,
1438
1522
  accountName: profile?.fullName ?? "",
@@ -1445,7 +1529,7 @@ function ConnectedIdentityVerification({
1445
1529
  function ConnectedRequireVerified({ children, labels }) {
1446
1530
  const { data: profile } = react$1.useProfile();
1447
1531
  const flow = react$1.useIdentityVerification();
1448
- return /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
1532
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
1449
1533
  }
1450
1534
  function defaultUnmetPasswordRequirement(password) {
1451
1535
  if (password.length < 8) return "Minimum 8 characters";
@@ -1478,7 +1562,7 @@ function ConnectedPasswordChangeDialog({
1478
1562
  onRecoveryComplete
1479
1563
  });
1480
1564
  return /* @__PURE__ */ jsxRuntime.jsx(
1481
- chunkAAFX64WD_cjs.PasswordChangeDialog,
1565
+ chunkOR4CO743_cjs.PasswordChangeDialog,
1482
1566
  {
1483
1567
  open,
1484
1568
  onClose: form.onCancel,
@@ -1504,10 +1588,10 @@ function ConnectedSecuritySection({
1504
1588
  children
1505
1589
  }) {
1506
1590
  const [open, setOpen] = react.useState(false);
1507
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkAAFX64WD_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
1508
- /* @__PURE__ */ jsxRuntime.jsxs(chunkAAFX64WD_cjs.SettingsCard, { padding: "sm", children: [
1591
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkOR4CO743_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.KeyRound, {}), title: "Security", children: [
1592
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkOR4CO743_cjs.SettingsCard, { padding: "sm", children: [
1509
1593
  /* @__PURE__ */ jsxRuntime.jsx(
1510
- chunkAAFX64WD_cjs.SettingsActionRow,
1594
+ chunkOR4CO743_cjs.SettingsActionRow,
1511
1595
  {
1512
1596
  title: "Change password",
1513
1597
  description: "Used to sign in and to unlock your account key. Changing it keeps everything readable and re-encrypts nothing.",
@@ -1528,23 +1612,23 @@ function ConnectedSecuritySection({
1528
1612
  ] });
1529
1613
  }
1530
1614
  function ConnectedNotificationPreferences({
1531
- categories = chunkAAFX64WD_cjs.EMAIL_NOTIFICATION_CATEGORIES,
1615
+ categories = chunkOR4CO743_cjs.EMAIL_NOTIFICATION_CATEGORIES,
1532
1616
  title = "Notifications"
1533
1617
  }) {
1534
1618
  const keys = react.useMemo(
1535
- () => categories === chunkAAFX64WD_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkAAFX64WD_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
1619
+ () => categories === chunkOR4CO743_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkOR4CO743_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
1536
1620
  [categories]
1537
1621
  );
1538
1622
  const prefs = react$1.useNotificationPreferences(keys);
1539
- return /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkAAFX64WD_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1540
- chunkAAFX64WD_cjs.NotificationCategoryList,
1623
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkOR4CO743_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
1624
+ chunkOR4CO743_cjs.NotificationCategoryList,
1541
1625
  {
1542
1626
  masterId: "emailNotifications",
1543
1627
  masterTitle: "Email Notifications",
1544
1628
  masterDescription: "Email me about activity when I\u2019m away",
1545
1629
  masterChecked: prefs.masterChecked,
1546
1630
  onMasterChange: prefs.setAll,
1547
- categories: chunkAAFX64WD_cjs.toNotificationCategories(prefs.checked, categories),
1631
+ categories: chunkOR4CO743_cjs.toNotificationCategories(prefs.checked, categories),
1548
1632
  onCategoryChange: prefs.setCategory
1549
1633
  }
1550
1634
  ) }) });
@@ -1555,14 +1639,14 @@ function ConnectedSessionsRow({ renderSessionIcon }) {
1555
1639
  const sessions = react$1.useSessions({ enabled: open });
1556
1640
  const currentSessionId = react$1.useCurrentSessionId();
1557
1641
  const terminate = react$1.useTerminateSession();
1558
- const views = chunkAAFX64WD_cjs.toActiveSessionViews(sessions.data ?? [], {
1642
+ const views = chunkOR4CO743_cjs.toActiveSessionViews(sessions.data ?? [], {
1559
1643
  currentSessionId,
1560
1644
  terminatingId: terminate.isPending ? terminate.variables : null,
1561
1645
  renderIcon: renderSessionIcon
1562
1646
  });
1563
1647
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1564
1648
  /* @__PURE__ */ jsxRuntime.jsx(
1565
- chunkAAFX64WD_cjs.SettingsRow,
1649
+ chunkOR4CO743_cjs.SettingsRow,
1566
1650
  {
1567
1651
  label: "Active sessions",
1568
1652
  description: "Devices and agents currently signed in to your account.",
@@ -1584,7 +1668,7 @@ function ConnectedSessionsRow({ renderSessionIcon }) {
1584
1668
  }
1585
1669
  ),
1586
1670
  /* @__PURE__ */ jsxRuntime.jsx(
1587
- chunkAAFX64WD_cjs.ActiveSessionsDialog,
1671
+ chunkOR4CO743_cjs.ActiveSessionsDialog,
1588
1672
  {
1589
1673
  open,
1590
1674
  onOpenChange: setOpen,
@@ -1626,7 +1710,7 @@ function ConnectedLogoutDialog({
1626
1710
  signOut.mutate({ everywhere, reason: "manual" });
1627
1711
  };
1628
1712
  return /* @__PURE__ */ jsxRuntime.jsx(
1629
- chunkAAFX64WD_cjs.LogoutDialog,
1713
+ chunkOR4CO743_cjs.LogoutDialog,
1630
1714
  {
1631
1715
  open,
1632
1716
  onClose,
@@ -1634,7 +1718,7 @@ function ConnectedLogoutDialog({
1634
1718
  onLogoutAll: () => void run(true),
1635
1719
  canLogoutAll,
1636
1720
  isOnline,
1637
- sessions: chunkAAFX64WD_cjs.toLogoutSessionViews(sessions.data ?? []),
1721
+ sessions: chunkOR4CO743_cjs.toLogoutSessionViews(sessions.data ?? []),
1638
1722
  renderSessionIcon
1639
1723
  }
1640
1724
  );
@@ -1656,7 +1740,7 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
1656
1740
  });
1657
1741
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1658
1742
  /* @__PURE__ */ jsxRuntime.jsx(
1659
- chunkAAFX64WD_cjs.SettingsDangerZone,
1743
+ chunkOR4CO743_cjs.SettingsDangerZone,
1660
1744
  {
1661
1745
  isOpen: zoneOpen,
1662
1746
  onToggle: () => setZoneOpen((o) => !o),
@@ -1676,12 +1760,12 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
1676
1760
  }
1677
1761
  ),
1678
1762
  /* @__PURE__ */ jsxRuntime.jsx(
1679
- chunkAAFX64WD_cjs.DeleteAccountDialog,
1763
+ chunkOR4CO743_cjs.DeleteAccountDialog,
1680
1764
  {
1681
1765
  open: dialogOpen,
1682
1766
  onClose: flow.onClose,
1683
1767
  step: flow.step,
1684
- blockers: chunkAAFX64WD_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
1768
+ blockers: chunkOR4CO743_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
1685
1769
  onContinue: flow.onContinue,
1686
1770
  onBack: flow.onBack,
1687
1771
  userEmail,
@@ -1695,7 +1779,7 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
1695
1779
  }
1696
1780
  function useConnectedDocxNotifications(onOpen) {
1697
1781
  const arbi = react$1.useArbi();
1698
- const { status, user, apiUrl } = chunkARDHLU73_cjs.useConnection();
1782
+ const { status, user, apiUrl } = chunkKDUGTKVI_cjs.useConnection();
1699
1783
  const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
1700
1784
  const queries = reactQuery.useQueryClient();
1701
1785
  const source = `docx-mentions:${apiUrl}:${user?.externalId || ""}`;
@@ -1761,7 +1845,7 @@ function useConnectedDocxNotifications(onOpen) {
1761
1845
  };
1762
1846
  }
1763
1847
  function useConnectedWorkNotifications(onOpen) {
1764
- const { status, user, apiUrl } = chunkARDHLU73_cjs.useConnection();
1848
+ const { status, user, apiUrl } = chunkKDUGTKVI_cjs.useConnection();
1765
1849
  const { notify } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
1766
1850
  const source = `work-notifications:${apiUrl}:${user?.externalId || ""}`;
1767
1851
  const { data = [], markRead: persistRead } = react$1.useWorkNotifications({
@@ -3665,7 +3749,7 @@ function ConnectedMailbox({
3665
3749
  }
3666
3750
  ),
3667
3751
  /* @__PURE__ */ jsxRuntime.jsx(
3668
- chunkDWZXSPMB_cjs.ConfirmDialog,
3752
+ chunkZAVEMQ37_cjs.ConfirmDialog,
3669
3753
  {
3670
3754
  isOpen: confirmDelete !== null,
3671
3755
  onClose: () => setConfirmDelete(null),
@@ -3765,7 +3849,7 @@ function ActiveChat({ agentId, workspaceId }) {
3765
3849
  activeArtifact: () => chunkJKB7WT7L_cjs.takeOpenDocumentForTurn({ workspaceId })
3766
3850
  });
3767
3851
  return /* @__PURE__ */ jsxRuntime.jsx(
3768
- chunkWV4IDVDQ_cjs.ChatPage,
3852
+ chunk7YLJHTDC_cjs.ChatPage,
3769
3853
  {
3770
3854
  chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
3771
3855
  documentsRequired: false,
@@ -3827,51 +3911,55 @@ function ConnectedAgentChatPanel({
3827
3911
 
3828
3912
  Object.defineProperty(exports, "ConnectedAssistantDock", {
3829
3913
  enumerable: true,
3830
- get: function () { return chunkHW2J4JMV_cjs.ConnectedAssistantDock; }
3914
+ get: function () { return chunkIE5CUCZK_cjs.ConnectedAssistantDock; }
3831
3915
  });
3832
3916
  Object.defineProperty(exports, "redlineStats", {
3833
3917
  enumerable: true,
3834
- get: function () { return chunkHW2J4JMV_cjs.redlineStats; }
3918
+ get: function () { return chunkIE5CUCZK_cjs.redlineStats; }
3835
3919
  });
3836
3920
  Object.defineProperty(exports, "textToArtifact", {
3837
3921
  enumerable: true,
3838
- get: function () { return chunkHW2J4JMV_cjs.textToArtifact; }
3922
+ get: function () { return chunkIE5CUCZK_cjs.textToArtifact; }
3839
3923
  });
3840
3924
  Object.defineProperty(exports, "toRedlineMarkdown", {
3841
3925
  enumerable: true,
3842
- get: function () { return chunkHW2J4JMV_cjs.toRedlineMarkdown; }
3926
+ get: function () { return chunkIE5CUCZK_cjs.toRedlineMarkdown; }
3843
3927
  });
3844
3928
  Object.defineProperty(exports, "useConnectedAiTask", {
3845
3929
  enumerable: true,
3846
- get: function () { return chunkHW2J4JMV_cjs.useConnectedAiTask; }
3930
+ get: function () { return chunkIE5CUCZK_cjs.useConnectedAiTask; }
3847
3931
  });
3848
3932
  Object.defineProperty(exports, "useConnectedChat", {
3849
3933
  enumerable: true,
3850
- get: function () { return chunkHW2J4JMV_cjs.useConnectedChat; }
3934
+ get: function () { return chunkIE5CUCZK_cjs.useConnectedChat; }
3851
3935
  });
3852
3936
  Object.defineProperty(exports, "useSemanticSearch", {
3853
3937
  enumerable: true,
3854
- get: function () { return chunkHW2J4JMV_cjs.useSemanticSearch; }
3938
+ get: function () { return chunkIE5CUCZK_cjs.useSemanticSearch; }
3855
3939
  });
3856
3940
  Object.defineProperty(exports, "useWorkspaceDocs", {
3857
3941
  enumerable: true,
3858
- get: function () { return chunkHW2J4JMV_cjs.useWorkspaceDocs; }
3942
+ get: function () { return chunkIE5CUCZK_cjs.useWorkspaceDocs; }
3859
3943
  });
3860
3944
  Object.defineProperty(exports, "ConnectionProvider", {
3861
3945
  enumerable: true,
3862
- get: function () { return chunkARDHLU73_cjs.ConnectionProvider; }
3946
+ get: function () { return chunkKDUGTKVI_cjs.ConnectionProvider; }
3863
3947
  });
3864
3948
  Object.defineProperty(exports, "SESSION_EXPIRED_MESSAGE", {
3865
3949
  enumerable: true,
3866
- get: function () { return chunkARDHLU73_cjs.SESSION_EXPIRED_MESSAGE; }
3950
+ get: function () { return chunkKDUGTKVI_cjs.SESSION_EXPIRED_MESSAGE; }
3867
3951
  });
3868
3952
  Object.defineProperty(exports, "isAuthenticated", {
3869
3953
  enumerable: true,
3870
- get: function () { return chunkARDHLU73_cjs.isAuthenticated; }
3954
+ get: function () { return chunkKDUGTKVI_cjs.isAuthenticated; }
3955
+ });
3956
+ Object.defineProperty(exports, "useConnectedWorkspace", {
3957
+ enumerable: true,
3958
+ get: function () { return chunkKDUGTKVI_cjs.useConnectedWorkspace; }
3871
3959
  });
3872
3960
  Object.defineProperty(exports, "useConnection", {
3873
3961
  enumerable: true,
3874
- get: function () { return chunkARDHLU73_cjs.useConnection; }
3962
+ get: function () { return chunkKDUGTKVI_cjs.useConnection; }
3875
3963
  });
3876
3964
  exports.ArbiAppProvider = ArbiAppProvider;
3877
3965
  exports.ConnectedAgentChatPanel = ConnectedAgentChatPanel;
@@ -3896,6 +3984,7 @@ exports.ConnectedThreadFollow = ConnectedThreadFollow;
3896
3984
  exports.ConnectedWorkflowRunner = ConnectedWorkflowRunner;
3897
3985
  exports.ConnectedWorkspaceActivity = ConnectedWorkspaceActivity;
3898
3986
  exports.ConnectedWorkspaceNotificationMenu = ConnectedWorkspaceNotificationMenu;
3987
+ exports.DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS = DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS;
3899
3988
  exports.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS = DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS;
3900
3989
  exports.StreamedArtifact = StreamedArtifact;
3901
3990
  exports.WorkflowRunThread = WorkflowRunThread;