@arbidocs/blocks 0.4.137 → 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 +380 -356
- package/dist/agents/index.js +8 -8
- 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/chat/index.cjs +139 -139
- package/dist/chat/index.js +4 -4
- package/dist/{chunk-CHVCTKF4.cjs → chunk-3BI6EWKP.cjs} +672 -55
- package/dist/chunk-3BI6EWKP.cjs.map +1 -0
- package/dist/{chunk-VMESMX7N.js → chunk-5BXEYYH6.js} +3 -3
- package/dist/{chunk-VMESMX7N.js.map → chunk-5BXEYYH6.js.map} +1 -1
- package/dist/{chunk-EHOPZBAX.cjs → chunk-7YLJHTDC.cjs} +11 -11
- package/dist/{chunk-EHOPZBAX.cjs.map → chunk-7YLJHTDC.cjs.map} +1 -1
- package/dist/{chunk-M33QUNFH.js → chunk-ED4HHTIA.js} +3 -3
- package/dist/{chunk-M33QUNFH.js.map → chunk-ED4HHTIA.js.map} +1 -1
- package/dist/{chunk-HDYWXEQU.cjs → chunk-IE5CUCZK.cjs} +4 -4
- package/dist/{chunk-HDYWXEQU.cjs.map → chunk-IE5CUCZK.cjs.map} +1 -1
- package/dist/{chunk-7M4C6CK7.js → chunk-JO3EMZ4X.js} +3 -3
- package/dist/{chunk-7M4C6CK7.js.map → chunk-JO3EMZ4X.js.map} +1 -1
- package/dist/{chunk-C3ZRLULA.cjs → chunk-JVL7HUIQ.cjs} +5 -5
- package/dist/{chunk-C3ZRLULA.cjs.map → chunk-JVL7HUIQ.cjs.map} +1 -1
- package/dist/{chunk-JY73DJOS.cjs → chunk-MJKBVIV3.cjs} +80 -495
- package/dist/{chunk-KMNZ2RVO.js.map → chunk-MJKBVIV3.cjs.map} +1 -1
- package/dist/{chunk-BUNZWOPX.cjs → chunk-OAL3B2ZU.cjs} +5 -5
- package/dist/{chunk-BUNZWOPX.cjs.map → chunk-OAL3B2ZU.cjs.map} +1 -1
- package/dist/{chunk-6F7SZCVL.cjs → chunk-OWCEQKAR.cjs} +3 -3
- package/dist/{chunk-6F7SZCVL.cjs.map → chunk-OWCEQKAR.cjs.map} +1 -1
- package/dist/{chunk-KMNZ2RVO.js → chunk-UBEI6WFJ.js} +10 -411
- package/dist/{chunk-JY73DJOS.cjs.map → chunk-UBEI6WFJ.js.map} +1 -1
- package/dist/{chunk-ATJUVHVB.js → chunk-XVME4XYD.js} +604 -8
- package/dist/chunk-XVME4XYD.js.map +1 -0
- package/dist/{chunk-YOMPLCP6.js → chunk-Y5KTM3V5.js} +3 -3
- package/dist/{chunk-YOMPLCP6.js.map → chunk-Y5KTM3V5.js.map} +1 -1
- package/dist/{chunk-L3T7OJRX.js → chunk-ZNI4SW2G.js} +3 -3
- package/dist/{chunk-L3T7OJRX.js.map → chunk-ZNI4SW2G.js.map} +1 -1
- package/dist/collaboration/index.cjs +9 -9
- package/dist/collaboration/index.js +1 -1
- package/dist/connect/index.cjs +436 -54
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -0
- package/dist/connect/index.js +399 -18
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedSkillsLibrary.d.ts +26 -0
- package/dist/document-tools/index.cjs +1 -1
- package/dist/document-tools/index.js +1 -1
- package/dist/facts/index.cjs +2 -2
- package/dist/facts/index.js +2 -2
- package/dist/index.cjs +650 -626
- package/dist/index.js +15 -15
- package/dist/settings/index.cjs +10 -10
- package/dist/settings/index.js +2 -2
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +6 -6
- package/dist/studio/index.js +5 -5
- package/dist/workflow-canvas/index.cjs +59 -59
- package/dist/workflow-canvas/index.js +8 -8
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/dist/chunk-ATJUVHVB.js.map +0 -1
- package/dist/chunk-CHVCTKF4.cjs.map +0 -1
package/dist/connect/index.cjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
|
|
5
4
|
var chunkAAFX64WD_cjs = require('../chunk-AAFX64WD.cjs');
|
|
6
|
-
var
|
|
5
|
+
var chunkIE5CUCZK_cjs = require('../chunk-IE5CUCZK.cjs');
|
|
7
6
|
var chunkUUHUQHXR_cjs = require('../chunk-UUHUQHXR.cjs');
|
|
8
7
|
var chunkHLB4DIYV_cjs = require('../chunk-HLB4DIYV.cjs');
|
|
9
8
|
var chunkKDUGTKVI_cjs = require('../chunk-KDUGTKVI.cjs');
|
|
@@ -11,15 +10,16 @@ var chunkJH6JTI76_cjs = require('../chunk-JH6JTI76.cjs');
|
|
|
11
10
|
require('../chunk-S24XEVPS.cjs');
|
|
12
11
|
require('../chunk-V5OAXIBN.cjs');
|
|
13
12
|
require('../chunk-5FYU7ZIU.cjs');
|
|
14
|
-
var
|
|
13
|
+
var chunkO4YPVYPO_cjs = require('../chunk-O4YPVYPO.cjs');
|
|
14
|
+
var chunkJVL7HUIQ_cjs = require('../chunk-JVL7HUIQ.cjs');
|
|
15
15
|
var chunkO6IEZDRC_cjs = require('../chunk-O6IEZDRC.cjs');
|
|
16
16
|
var chunkI2QSDQQV_cjs = require('../chunk-I2QSDQQV.cjs');
|
|
17
17
|
require('../chunk-RC25WMVB.cjs');
|
|
18
|
-
var
|
|
19
|
-
require('../chunk-
|
|
18
|
+
var chunk3BI6EWKP_cjs = require('../chunk-3BI6EWKP.cjs');
|
|
19
|
+
require('../chunk-WS5EX7DN.cjs');
|
|
20
20
|
var chunkRQ2Y7USX_cjs = require('../chunk-RQ2Y7USX.cjs');
|
|
21
21
|
require('../chunk-ZW6FPIFC.cjs');
|
|
22
|
-
require('../chunk-
|
|
22
|
+
require('../chunk-DETZZBG2.cjs');
|
|
23
23
|
require('../chunk-R26BK7YL.cjs');
|
|
24
24
|
require('../chunk-V4ISCZJ7.cjs');
|
|
25
25
|
var chunk2EI7NCUA_cjs = require('../chunk-2EI7NCUA.cjs');
|
|
@@ -28,12 +28,12 @@ var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
|
|
|
28
28
|
require('../chunk-ADOKTJHV.cjs');
|
|
29
29
|
var chunkDWZXSPMB_cjs = require('../chunk-DWZXSPMB.cjs');
|
|
30
30
|
var chunk7RGLTF76_cjs = require('../chunk-7RGLTF76.cjs');
|
|
31
|
-
var
|
|
31
|
+
var chunk7YLJHTDC_cjs = require('../chunk-7YLJHTDC.cjs');
|
|
32
32
|
require('../chunk-B6MVQCXW.cjs');
|
|
33
33
|
var chunkJKB7WT7L_cjs = require('../chunk-JKB7WT7L.cjs');
|
|
34
|
-
var
|
|
35
|
-
require('../chunk-32HW2Q33.cjs');
|
|
34
|
+
var chunkOWCEQKAR_cjs = require('../chunk-OWCEQKAR.cjs');
|
|
36
35
|
require('../chunk-7UTB4PHM.cjs');
|
|
36
|
+
require('../chunk-32HW2Q33.cjs');
|
|
37
37
|
require('../chunk-FX3K6LNZ.cjs');
|
|
38
38
|
require('../chunk-PPCATBOY.cjs');
|
|
39
39
|
require('../chunk-MHVNT4J3.cjs');
|
|
@@ -46,9 +46,9 @@ var reactQuery = require('@tanstack/react-query');
|
|
|
46
46
|
var react$1 = require('@arbidocs/react');
|
|
47
47
|
var jsxRuntime = require('react/jsx-runtime');
|
|
48
48
|
var ui = require('@arbidocs/react/ui');
|
|
49
|
+
var documentTools = require('@arbidocs/react/document-tools');
|
|
49
50
|
var lucideReact = require('lucide-react');
|
|
50
51
|
var artifacts = require('@arbidocs/react/artifacts');
|
|
51
|
-
var documentTools = require('@arbidocs/react/document-tools');
|
|
52
52
|
var shell = require('@arbidocs/react/shell');
|
|
53
53
|
var client = require('@arbidocs/client');
|
|
54
54
|
var reactDom = require('react-dom');
|
|
@@ -129,7 +129,7 @@ function ConnectedWorkspaceActivity({
|
|
|
129
129
|
[feed.data]
|
|
130
130
|
);
|
|
131
131
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
132
|
-
|
|
132
|
+
chunkJVL7HUIQ_cjs.WorkspaceActivityList,
|
|
133
133
|
{
|
|
134
134
|
...listProps,
|
|
135
135
|
items,
|
|
@@ -155,7 +155,7 @@ function ConnectedWorkspaceNotificationMenu({
|
|
|
155
155
|
});
|
|
156
156
|
if (!workspaceId) return null;
|
|
157
157
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
158
|
-
|
|
158
|
+
chunkJVL7HUIQ_cjs.WorkspaceNotificationMenu,
|
|
159
159
|
{
|
|
160
160
|
...menuProps,
|
|
161
161
|
level,
|
|
@@ -174,7 +174,7 @@ function ConnectedThreadFollow({
|
|
|
174
174
|
enabled: status === "authenticated"
|
|
175
175
|
});
|
|
176
176
|
if (!conversationId) return null;
|
|
177
|
-
const Control = as === "menu-item" ?
|
|
177
|
+
const Control = as === "menu-item" ? chunkJVL7HUIQ_cjs.ThreadFollowMenuItem : chunkJVL7HUIQ_cjs.ThreadFollowButton;
|
|
178
178
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
179
179
|
Control,
|
|
180
180
|
{
|
|
@@ -214,7 +214,7 @@ var DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS = {
|
|
|
214
214
|
var messageOf = (error) => error instanceof Error ? error.message : "";
|
|
215
215
|
function ConnectedWorkflowsTable({
|
|
216
216
|
filter,
|
|
217
|
-
describeTrigger = (w) =>
|
|
217
|
+
describeTrigger = (w) => chunk3BI6EWKP_cjs.workflowTriggerType(w).replaceAll("_", " "),
|
|
218
218
|
formatDate = chunkKDG6FER6_cjs.fmtDate,
|
|
219
219
|
onViewRuns,
|
|
220
220
|
connectedLabels,
|
|
@@ -276,7 +276,7 @@ function ConnectedWorkflowsTable({
|
|
|
276
276
|
await act(workflow, () => remove.mutateAsync(workflow.external_id));
|
|
277
277
|
};
|
|
278
278
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
279
|
-
|
|
279
|
+
chunk3BI6EWKP_cjs.WorkflowsTable,
|
|
280
280
|
{
|
|
281
281
|
...tableProps,
|
|
282
282
|
workflows,
|
|
@@ -337,7 +337,7 @@ function toWorkflowFieldDocument(doc) {
|
|
|
337
337
|
function useConnectedWorkflowScopeSource() {
|
|
338
338
|
const { data: docs } = chunkUUHUQHXR_cjs.useConnectedDocuments();
|
|
339
339
|
const { data: tags } = chunkUUHUQHXR_cjs.useConnectedTags();
|
|
340
|
-
return react.useMemo(() =>
|
|
340
|
+
return react.useMemo(() => chunk3BI6EWKP_cjs.buildWorkflowScopeSource(docs, chunk3BI6EWKP_cjs.documentScopeLabels(tags)), [docs, tags]);
|
|
341
341
|
}
|
|
342
342
|
function useConnectedAgentOptions() {
|
|
343
343
|
const { data: agents } = react$1.useAgents();
|
|
@@ -395,7 +395,7 @@ function ConnectedWorkflowDocumentsField({
|
|
|
395
395
|
}
|
|
396
396
|
),
|
|
397
397
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
398
|
-
|
|
398
|
+
chunk3BI6EWKP_cjs.WorkflowDocumentsField,
|
|
399
399
|
{
|
|
400
400
|
field,
|
|
401
401
|
value,
|
|
@@ -417,7 +417,7 @@ function ConnectedWorkflowLauncher({
|
|
|
417
417
|
const scopeSource = useConnectedWorkflowScopeSource();
|
|
418
418
|
const agents = useConnectedAgentOptions();
|
|
419
419
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
420
|
-
|
|
420
|
+
chunk3BI6EWKP_cjs.WorkflowLauncher,
|
|
421
421
|
{
|
|
422
422
|
...props,
|
|
423
423
|
scopeSource,
|
|
@@ -496,7 +496,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
496
496
|
onChange: (e) => {
|
|
497
497
|
const file = e.target.files?.[0];
|
|
498
498
|
e.target.value = "";
|
|
499
|
-
if (file) void add(() =>
|
|
499
|
+
if (file) void add(() => chunk3BI6EWKP_cjs.importSkillFile(file));
|
|
500
500
|
}
|
|
501
501
|
}
|
|
502
502
|
),
|
|
@@ -521,7 +521,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
521
521
|
className: "space-y-2",
|
|
522
522
|
onSubmit: (e) => {
|
|
523
523
|
e.preventDefault();
|
|
524
|
-
if (url.trim()) void add(() =>
|
|
524
|
+
if (url.trim()) void add(() => chunk3BI6EWKP_cjs.importSkillFromUrl(url));
|
|
525
525
|
},
|
|
526
526
|
children: [
|
|
527
527
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
|
|
@@ -560,6 +560,387 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
560
560
|
}
|
|
561
561
|
);
|
|
562
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
|
+
}
|
|
563
944
|
var StreamedArtifactEditor = react.lazy(() => import('../StreamedArtifactEditor-TQAND4H5.cjs'));
|
|
564
945
|
function StreamedArtifact({
|
|
565
946
|
artifacts: artifacts$1,
|
|
@@ -633,7 +1014,7 @@ function StreamedArtifact({
|
|
|
633
1014
|
}
|
|
634
1015
|
var STARTING = /* @__PURE__ */ new Set(["pending", "running"]);
|
|
635
1016
|
function formValues(step, inputs) {
|
|
636
|
-
const fields =
|
|
1017
|
+
const fields = chunkOWCEQKAR_cjs.stepFields(step);
|
|
637
1018
|
if (!fields.length) return void 0;
|
|
638
1019
|
if (step.kind === "form")
|
|
639
1020
|
return Object.fromEntries(fields.map((f) => [f.name, inputs[f.name] ?? ""]));
|
|
@@ -668,10 +1049,10 @@ function useAnswerRetry(missing, refetch) {
|
|
|
668
1049
|
function useWorkflowThread(workflow, options = {}) {
|
|
669
1050
|
const arbi = react$1.useArbi();
|
|
670
1051
|
const { ensureWorkspaceOpen, status } = chunkKDUGTKVI_cjs.useConnection();
|
|
671
|
-
const { wsId } =
|
|
1052
|
+
const { wsId } = chunkIE5CUCZK_cjs.useWorkspaceDocs();
|
|
672
1053
|
const [threadId, setThreadId] = react.useState(options.conversationId);
|
|
673
1054
|
const [localInputs, setLocalInputs] = react.useState(
|
|
674
|
-
() =>
|
|
1055
|
+
() => chunkOWCEQKAR_cjs.initialRunInputs(workflow, options.initialInputs)
|
|
675
1056
|
);
|
|
676
1057
|
const [edits, setEdits] = react.useState({});
|
|
677
1058
|
const [localStates, setLocalStates] = react.useState({});
|
|
@@ -691,12 +1072,12 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
691
1072
|
);
|
|
692
1073
|
const conversation = conversations.data?.find((c) => c.external_id === threadId);
|
|
693
1074
|
const steps = react.useMemo(
|
|
694
|
-
() =>
|
|
1075
|
+
() => chunkOWCEQKAR_cjs.workflowSteps(workflow).length > 0 ? chunkOWCEQKAR_cjs.workflowSteps(workflow) : chunk3BI6EWKP_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
|
|
695
1076
|
[workflow, conversation?.plan?.steps]
|
|
696
1077
|
);
|
|
697
1078
|
const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
|
|
698
1079
|
const serverStates = react.useMemo(
|
|
699
|
-
() =>
|
|
1080
|
+
() => chunkOWCEQKAR_cjs.stepStatesFromActivity(activity.data ?? []),
|
|
700
1081
|
[activity.data]
|
|
701
1082
|
);
|
|
702
1083
|
const working = steps.some(
|
|
@@ -739,7 +1120,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
739
1120
|
async (values, done) => {
|
|
740
1121
|
await ensureWorkspaceOpen();
|
|
741
1122
|
const created = await createWork.mutateAsync({
|
|
742
|
-
title:
|
|
1123
|
+
title: chunkOWCEQKAR_cjs.runThreadTitle(workflow, values).slice(0, 60),
|
|
743
1124
|
description: workflow.description || null,
|
|
744
1125
|
prompt: null,
|
|
745
1126
|
skill_ref: null,
|
|
@@ -751,7 +1132,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
751
1132
|
criteria: [],
|
|
752
1133
|
max_passes: 3,
|
|
753
1134
|
documents: [],
|
|
754
|
-
steps:
|
|
1135
|
+
steps: chunk3BI6EWKP_cjs.toPlanSteps(workflow, {
|
|
755
1136
|
inputs: values,
|
|
756
1137
|
resolveWorkflow: options.resolveWorkflow,
|
|
757
1138
|
compose: options.compose
|
|
@@ -838,7 +1219,7 @@ function useWorkflowThread(workflow, options = {}) {
|
|
|
838
1219
|
const anyRunning = Object.values(states).some((s) => s.status === "running");
|
|
839
1220
|
const needsStart = !threadId || idle && !anyRunning;
|
|
840
1221
|
const runError = idle ? conversation?.last_error ?? null : null;
|
|
841
|
-
const view =
|
|
1222
|
+
const view = chunk3BI6EWKP_cjs.useWorkflowView({
|
|
842
1223
|
steps,
|
|
843
1224
|
states,
|
|
844
1225
|
inputs,
|
|
@@ -881,7 +1262,7 @@ function WorkflowRunThread({
|
|
|
881
1262
|
if (listed && activeThreadId !== conversationId) selectThread(conversationId);
|
|
882
1263
|
}, [listed, activeThreadId, conversationId, selectThread]);
|
|
883
1264
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
884
|
-
|
|
1265
|
+
chunk7YLJHTDC_cjs.ChatPage,
|
|
885
1266
|
{
|
|
886
1267
|
chat: { ...chat, threads: chat.threads.filter((t) => t.id === conversationId) },
|
|
887
1268
|
singleThread: true,
|
|
@@ -919,7 +1300,7 @@ function WorkflowSignDialog({
|
|
|
919
1300
|
const arbi = react$1.useArbi();
|
|
920
1301
|
const { user, ensureWorkspaceOpen } = chunkKDUGTKVI_cjs.useConnection();
|
|
921
1302
|
const tools = documentTools.useOptionalDocumentTools();
|
|
922
|
-
const { id, version: stepVersion } =
|
|
1303
|
+
const { id, version: stepVersion } = chunkOWCEQKAR_cjs.splitDocRef(docRef);
|
|
923
1304
|
const [version, setVersion] = react.useState(stepVersion);
|
|
924
1305
|
const [pdf, setPdf] = react.useState(null);
|
|
925
1306
|
const [preparing, setPreparing] = react.useState(false);
|
|
@@ -997,7 +1378,7 @@ function WorkflowWordDialog({
|
|
|
997
1378
|
onClose,
|
|
998
1379
|
labels
|
|
999
1380
|
}) {
|
|
1000
|
-
const { id } =
|
|
1381
|
+
const { id } = chunkOWCEQKAR_cjs.splitDocRef(docRef);
|
|
1001
1382
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1002
1383
|
chunkULWRNGGE_cjs.ModalScaffold,
|
|
1003
1384
|
{
|
|
@@ -1146,7 +1527,7 @@ function ConnectedWorkflowRunner({
|
|
|
1146
1527
|
const dl = { ...DEFAULT_WORKFLOW_RUNNER_DIALOG_LABELS, ...dialogLabels };
|
|
1147
1528
|
const arbi = react$1.useArbi();
|
|
1148
1529
|
const { ensureWorkspaceOpen, user } = chunkKDUGTKVI_cjs.useConnection();
|
|
1149
|
-
const { wsId } =
|
|
1530
|
+
const { wsId } = chunkIE5CUCZK_cjs.useWorkspaceDocs();
|
|
1150
1531
|
const { data: docs = [], refetch } = react$1.useDocuments(wsId);
|
|
1151
1532
|
const [sending, setSending] = react.useState([]);
|
|
1152
1533
|
const [added, setAdded] = react.useState({});
|
|
@@ -1169,7 +1550,7 @@ function ConnectedWorkflowRunner({
|
|
|
1169
1550
|
() => ({
|
|
1170
1551
|
me: user?.externalId,
|
|
1171
1552
|
openDocument: onOpenDocument && ((ref) => {
|
|
1172
|
-
const { id, version } =
|
|
1553
|
+
const { id, version } = chunkOWCEQKAR_cjs.splitDocRef(ref);
|
|
1173
1554
|
onOpenDocument(id, version);
|
|
1174
1555
|
}),
|
|
1175
1556
|
openDraft: onOpenDraft && ((draftId) => onOpenDraft(draftId)),
|
|
@@ -1179,7 +1560,7 @@ function ConnectedWorkflowRunner({
|
|
|
1179
1560
|
const w = state.waiting;
|
|
1180
1561
|
if (w?.doc_ext_id) setDialog({ kind: "sign", docRef: w.doc_ext_id });
|
|
1181
1562
|
}),
|
|
1182
|
-
openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(
|
|
1563
|
+
openRedline: hostActions?.openRedline ?? ((ref) => setDialog({ kind: "word", docRef: ref, title: nameOfDoc(chunkOWCEQKAR_cjs.splitDocRef(ref).id) ?? "" })),
|
|
1183
1564
|
openReview: hostActions?.openReview ?? ((tags, documents) => setDialog({ kind: "review", tags, documents }))
|
|
1184
1565
|
}),
|
|
1185
1566
|
[user?.externalId, onOpenDocument, onOpenDraft, onOpenMessage, hostActions, nameOfDoc, inThread]
|
|
@@ -1315,7 +1696,7 @@ function ConnectedWorkflowRunner({
|
|
|
1315
1696
|
);
|
|
1316
1697
|
};
|
|
1317
1698
|
const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1318
|
-
|
|
1699
|
+
chunk3BI6EWKP_cjs.WorkflowRunner,
|
|
1319
1700
|
{
|
|
1320
1701
|
people,
|
|
1321
1702
|
...runnerProps,
|
|
@@ -1361,10 +1742,10 @@ function ConnectedWorkflowRunner({
|
|
|
1361
1742
|
) }),
|
|
1362
1743
|
inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1363
1744
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1364
|
-
|
|
1745
|
+
chunk3BI6EWKP_cjs.WorkflowStepBar,
|
|
1365
1746
|
{
|
|
1366
1747
|
run: view,
|
|
1367
|
-
levels:
|
|
1748
|
+
levels: chunkOWCEQKAR_cjs.stepLevels(view.steps),
|
|
1368
1749
|
doneTitle: (workflow.run.kind === "steps" ? workflow.run.completion?.title : void 0) ?? runnerProps.labels?.complete ?? "Done",
|
|
1369
1750
|
icon: (key) => key && runnerProps.renderIcon ? runnerProps.renderIcon(key) : void 0,
|
|
1370
1751
|
tid: (suffix) => `${testIdPrefix}-${suffix}`
|
|
@@ -1384,13 +1765,13 @@ function ConnectedWorkflowRunner({
|
|
|
1384
1765
|
return state ? [[s.id, state]] : [];
|
|
1385
1766
|
})
|
|
1386
1767
|
);
|
|
1387
|
-
const ref =
|
|
1768
|
+
const ref = chunkOWCEQKAR_cjs.stepDocuments(view.steps, states, id).at(-1);
|
|
1388
1769
|
const open = actions.openDocument ?? actions.openRedline;
|
|
1389
1770
|
return {
|
|
1390
1771
|
title: step.title,
|
|
1391
|
-
kind:
|
|
1772
|
+
kind: chunkOWCEQKAR_cjs.stepKindOf(step),
|
|
1392
1773
|
phase: view.phaseOf(id),
|
|
1393
|
-
document: ref && open ? { name: nameOfDoc(
|
|
1774
|
+
document: ref && open ? { name: nameOfDoc(chunkOWCEQKAR_cjs.splitDocRef(ref).id) ?? ref, onOpen: () => open(ref) } : void 0
|
|
1394
1775
|
};
|
|
1395
1776
|
},
|
|
1396
1777
|
targetMessageId: target,
|
|
@@ -1562,7 +1943,7 @@ function ConnectedTagTable({
|
|
|
1562
1943
|
const fail = (e) => setError(e instanceof Error ? e.message : String(e));
|
|
1563
1944
|
const snapshot = (data) => {
|
|
1564
1945
|
const title = exportTitle ?? KIND_TITLES[kind];
|
|
1565
|
-
const bytes =
|
|
1946
|
+
const bytes = chunkJVL7HUIQ_cjs.tagTableDocx(data, {
|
|
1566
1947
|
title,
|
|
1567
1948
|
nameOf: (id) => people.find((p) => p.value === id)?.label
|
|
1568
1949
|
});
|
|
@@ -1572,7 +1953,7 @@ function ConnectedTagTable({
|
|
|
1572
1953
|
};
|
|
1573
1954
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
1574
1955
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1575
|
-
|
|
1956
|
+
chunkJVL7HUIQ_cjs.TagTable,
|
|
1576
1957
|
{
|
|
1577
1958
|
...props,
|
|
1578
1959
|
table,
|
|
@@ -1649,7 +2030,7 @@ function useConnectedShellWorkspaces(options = {}) {
|
|
|
1649
2030
|
select: (workspace) => setWorkspace(workspace.id)
|
|
1650
2031
|
});
|
|
1651
2032
|
}
|
|
1652
|
-
function
|
|
2033
|
+
function errorText2(error, fallback) {
|
|
1653
2034
|
const body = error?.apiError;
|
|
1654
2035
|
return typeof body?.detail === "string" ? body.detail : fallback;
|
|
1655
2036
|
}
|
|
@@ -1699,7 +2080,7 @@ function ConnectedProfileCard({
|
|
|
1699
2080
|
await requestEmailChange.mutateAsync(address);
|
|
1700
2081
|
notify("Verification code sent to your new email", "success");
|
|
1701
2082
|
} catch (e) {
|
|
1702
|
-
notify(
|
|
2083
|
+
notify(errorText2(e, "Failed to send verification code"), "error");
|
|
1703
2084
|
throw e;
|
|
1704
2085
|
}
|
|
1705
2086
|
},
|
|
@@ -1708,7 +2089,7 @@ function ConnectedProfileCard({
|
|
|
1708
2089
|
await confirmEmailChange.mutateAsync(args);
|
|
1709
2090
|
notify("Email address updated", "success");
|
|
1710
2091
|
} catch (e) {
|
|
1711
|
-
notify(
|
|
2092
|
+
notify(errorText2(e, "Invalid or expired verification code"), "error");
|
|
1712
2093
|
throw e;
|
|
1713
2094
|
}
|
|
1714
2095
|
}
|
|
@@ -4102,7 +4483,7 @@ function ActiveChat({ agentId, workspaceId }) {
|
|
|
4102
4483
|
activeArtifact: () => chunkJKB7WT7L_cjs.takeOpenDocumentForTurn({ workspaceId })
|
|
4103
4484
|
});
|
|
4104
4485
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4105
|
-
|
|
4486
|
+
chunk7YLJHTDC_cjs.ChatPage,
|
|
4106
4487
|
{
|
|
4107
4488
|
chat: { ...chat, assistantMode: void 0, setAssistantMode: void 0 },
|
|
4108
4489
|
documentsRequired: false,
|
|
@@ -4164,35 +4545,35 @@ function ConnectedAgentChatPanel({
|
|
|
4164
4545
|
|
|
4165
4546
|
Object.defineProperty(exports, "ConnectedAssistantDock", {
|
|
4166
4547
|
enumerable: true,
|
|
4167
|
-
get: function () { return
|
|
4548
|
+
get: function () { return chunkIE5CUCZK_cjs.ConnectedAssistantDock; }
|
|
4168
4549
|
});
|
|
4169
4550
|
Object.defineProperty(exports, "redlineStats", {
|
|
4170
4551
|
enumerable: true,
|
|
4171
|
-
get: function () { return
|
|
4552
|
+
get: function () { return chunkIE5CUCZK_cjs.redlineStats; }
|
|
4172
4553
|
});
|
|
4173
4554
|
Object.defineProperty(exports, "textToArtifact", {
|
|
4174
4555
|
enumerable: true,
|
|
4175
|
-
get: function () { return
|
|
4556
|
+
get: function () { return chunkIE5CUCZK_cjs.textToArtifact; }
|
|
4176
4557
|
});
|
|
4177
4558
|
Object.defineProperty(exports, "toRedlineMarkdown", {
|
|
4178
4559
|
enumerable: true,
|
|
4179
|
-
get: function () { return
|
|
4560
|
+
get: function () { return chunkIE5CUCZK_cjs.toRedlineMarkdown; }
|
|
4180
4561
|
});
|
|
4181
4562
|
Object.defineProperty(exports, "useConnectedAiTask", {
|
|
4182
4563
|
enumerable: true,
|
|
4183
|
-
get: function () { return
|
|
4564
|
+
get: function () { return chunkIE5CUCZK_cjs.useConnectedAiTask; }
|
|
4184
4565
|
});
|
|
4185
4566
|
Object.defineProperty(exports, "useConnectedChat", {
|
|
4186
4567
|
enumerable: true,
|
|
4187
|
-
get: function () { return
|
|
4568
|
+
get: function () { return chunkIE5CUCZK_cjs.useConnectedChat; }
|
|
4188
4569
|
});
|
|
4189
4570
|
Object.defineProperty(exports, "useSemanticSearch", {
|
|
4190
4571
|
enumerable: true,
|
|
4191
|
-
get: function () { return
|
|
4572
|
+
get: function () { return chunkIE5CUCZK_cjs.useSemanticSearch; }
|
|
4192
4573
|
});
|
|
4193
4574
|
Object.defineProperty(exports, "useWorkspaceDocs", {
|
|
4194
4575
|
enumerable: true,
|
|
4195
|
-
get: function () { return
|
|
4576
|
+
get: function () { return chunkIE5CUCZK_cjs.useWorkspaceDocs; }
|
|
4196
4577
|
});
|
|
4197
4578
|
Object.defineProperty(exports, "ConnectedWorkspaceDataProvider", {
|
|
4198
4579
|
enumerable: true,
|
|
@@ -4247,6 +4628,7 @@ exports.ConnectedRequireVerified = ConnectedRequireVerified;
|
|
|
4247
4628
|
exports.ConnectedSecuritySection = ConnectedSecuritySection;
|
|
4248
4629
|
exports.ConnectedSessionsRow = ConnectedSessionsRow;
|
|
4249
4630
|
exports.ConnectedSkillUpload = ConnectedSkillUpload;
|
|
4631
|
+
exports.ConnectedSkillsLibrary = ConnectedSkillsLibrary;
|
|
4250
4632
|
exports.ConnectedTagTable = ConnectedTagTable;
|
|
4251
4633
|
exports.ConnectedTaskAccessRequest = ConnectedTaskAccessRequest;
|
|
4252
4634
|
exports.ConnectedThreadFollow = ConnectedThreadFollow;
|