@arbidocs/blocks 0.4.138 → 0.4.139
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/definitions/AgentConnectInstructions.d.ts +12 -0
- package/dist/agents/definitions/defaults.d.ts +12 -0
- package/dist/agents/definitions/index.d.ts +2 -0
- package/dist/agents/index.cjs +335 -320
- package/dist/agents/index.js +9 -10
- package/dist/calendar/CalendarFormDialog.d.ts +13 -0
- package/dist/calendar/ProposeTimeDialog.d.ts +22 -0
- package/dist/calendar/WeeklyHoursEditor.d.ts +7 -0
- package/dist/calendar/access-setup.d.ts +8 -0
- package/dist/calendar/api-mapping.d.ts +22 -0
- package/dist/calendar/booking-form.d.ts +46 -0
- package/dist/calendar/conference.d.ts +11 -0
- package/dist/calendar/errors.d.ts +7 -0
- package/dist/calendar/feeds.d.ts +2 -0
- package/dist/calendar/freebusy.d.ts +22 -0
- package/dist/calendar/ics.d.ts +33 -0
- package/dist/calendar/index.cjs +472 -4293
- package/dist/calendar/index.cjs.map +1 -1
- package/dist/calendar/index.d.ts +17 -1
- package/dist/calendar/index.js +1 -4227
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/requests.d.ts +42 -0
- package/dist/calendar/room-window.d.ts +6 -0
- package/dist/calendar/settings-value.d.ts +4 -0
- package/dist/calls/index.cjs +4 -4
- package/dist/calls/index.js +3 -3
- package/dist/chat/index.cjs +138 -138
- package/dist/chat/index.js +4 -4
- package/dist/{chunk-ED4HHTIA.js → chunk-22WFGXG2.js} +3 -3
- package/dist/{chunk-ED4HHTIA.js.map → chunk-22WFGXG2.js.map} +1 -1
- package/dist/{chunk-5BXEYYH6.js → chunk-453PNNNW.js} +3 -3
- package/dist/{chunk-5BXEYYH6.js.map → chunk-453PNNNW.js.map} +1 -1
- package/dist/{chunk-2KUCVSFF.js → chunk-45LRMW54.js} +3 -3
- package/dist/{chunk-2KUCVSFF.js.map → chunk-45LRMW54.js.map} +1 -1
- package/dist/chunk-5FTIHRZH.cjs +177 -0
- package/dist/chunk-5FTIHRZH.cjs.map +1 -0
- package/dist/{chunk-FUTMU4FR.js → chunk-5HFPRI3W.js} +3 -3
- package/dist/{chunk-FUTMU4FR.js.map → chunk-5HFPRI3W.js.map} +1 -1
- package/dist/{chunk-MJKBVIV3.cjs → chunk-5UXDUOOB.cjs} +39 -751
- package/dist/chunk-5UXDUOOB.cjs.map +1 -0
- package/dist/{chunk-XVME4XYD.js → chunk-6QMWP5IU.js} +847 -9
- package/dist/chunk-6QMWP5IU.js.map +1 -0
- package/dist/chunk-6YTHQ73P.cjs +5334 -0
- package/dist/chunk-6YTHQ73P.cjs.map +1 -0
- package/dist/{chunk-UBEI6WFJ.js → chunk-7QUUZBQZ.js} +13 -706
- package/dist/chunk-7QUUZBQZ.js.map +1 -0
- package/dist/{chunk-JVL7HUIQ.cjs → chunk-7X255TOM.cjs} +5 -5
- package/dist/{chunk-JVL7HUIQ.cjs.map → chunk-7X255TOM.cjs.map} +1 -1
- package/dist/chunk-A3XPS2EU.js +245 -0
- package/dist/chunk-A3XPS2EU.js.map +1 -0
- package/dist/chunk-B3AHCIV5.js +5206 -0
- package/dist/chunk-B3AHCIV5.js.map +1 -0
- package/dist/{chunk-2Q7FDZAY.js → chunk-BPBSSMRB.js} +5 -163
- package/dist/chunk-BPBSSMRB.js.map +1 -0
- package/dist/{chunk-KSHKTOY2.js → chunk-CKCBBYTA.js} +205 -5
- package/dist/chunk-CKCBBYTA.js.map +1 -0
- package/dist/chunk-CYNF5PZI.js +170 -0
- package/dist/chunk-CYNF5PZI.js.map +1 -0
- package/dist/{chunk-OPTBQSCV.cjs → chunk-DJM7DLCT.cjs} +3 -3
- package/dist/{chunk-OPTBQSCV.cjs.map → chunk-DJM7DLCT.cjs.map} +1 -1
- package/dist/{chunk-E5OYHJMU.js → chunk-DN55PRGS.js} +4 -4
- package/dist/{chunk-E5OYHJMU.js.map → chunk-DN55PRGS.js.map} +1 -1
- package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
- package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
- package/dist/{chunk-KDUGTKVI.cjs → chunk-GFNELPDP.cjs} +17 -6
- package/dist/chunk-GFNELPDP.cjs.map +1 -0
- package/dist/{chunk-OGBXV326.cjs → chunk-GFRQG36Y.cjs} +2 -243
- package/dist/chunk-GFRQG36Y.cjs.map +1 -0
- package/dist/{chunk-WXYQ66KC.cjs → chunk-HEMU73OP.cjs} +2 -166
- package/dist/chunk-HEMU73OP.cjs.map +1 -0
- package/dist/{chunk-UUHUQHXR.cjs → chunk-JZNXRMLH.cjs} +6 -6
- package/dist/{chunk-UUHUQHXR.cjs.map → chunk-JZNXRMLH.cjs.map} +1 -1
- package/dist/{chunk-IE5CUCZK.cjs → chunk-K3HNLWZZ.cjs} +8 -8
- package/dist/{chunk-IE5CUCZK.cjs.map → chunk-K3HNLWZZ.cjs.map} +1 -1
- package/dist/{chunk-JO3EMZ4X.js → chunk-KTFDUSON.js} +3 -3
- package/dist/{chunk-JO3EMZ4X.js.map → chunk-KTFDUSON.js.map} +1 -1
- package/dist/{chunk-HLB4DIYV.cjs → chunk-MABUMUCA.cjs} +6 -6
- package/dist/{chunk-HLB4DIYV.cjs.map → chunk-MABUMUCA.cjs.map} +1 -1
- package/dist/{chunk-RQ2Y7USX.cjs → chunk-MIDXCYZB.cjs} +235 -15
- package/dist/chunk-MIDXCYZB.cjs.map +1 -0
- package/dist/{chunk-ZNI4SW2G.js → chunk-MTPWZQTL.js} +4 -4
- package/dist/{chunk-ZNI4SW2G.js.map → chunk-MTPWZQTL.js.map} +1 -1
- package/dist/{chunk-OAL3B2ZU.cjs → chunk-O4ZIQDUT.cjs} +5 -5
- package/dist/{chunk-OAL3B2ZU.cjs.map → chunk-O4ZIQDUT.cjs.map} +1 -1
- package/dist/{chunk-W3VYZXNS.js → chunk-O6W6RW3B.js} +5 -240
- package/dist/chunk-O6W6RW3B.js.map +1 -0
- package/dist/{chunk-WS5EX7DN.cjs → chunk-OGP6MQXQ.cjs} +3 -3
- package/dist/{chunk-WS5EX7DN.cjs.map → chunk-OGP6MQXQ.cjs.map} +1 -1
- package/dist/{chunk-OQ7RUNOC.js → chunk-PC5KVHX3.js} +22 -6
- package/dist/chunk-PC5KVHX3.js.map +1 -0
- package/dist/{chunk-3BI6EWKP.cjs → chunk-ULEDHANM.cjs} +874 -14
- package/dist/chunk-ULEDHANM.cjs.map +1 -0
- package/dist/{chunk-L2PAPOZ5.js → chunk-US3S4DCB.js} +17 -6
- package/dist/chunk-US3S4DCB.js.map +1 -0
- package/dist/chunk-V46W7YLI.cjs +252 -0
- package/dist/chunk-V46W7YLI.cjs.map +1 -0
- package/dist/{chunk-3RJN2VTL.js → chunk-XDQXDWE7.js} +3 -3
- package/dist/{chunk-3RJN2VTL.js.map → chunk-XDQXDWE7.js.map} +1 -1
- package/dist/{chunk-7YLJHTDC.cjs → chunk-XOC44HQY.cjs} +3 -3
- package/dist/{chunk-7YLJHTDC.cjs.map → chunk-XOC44HQY.cjs.map} +1 -1
- package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
- package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
- package/dist/{chunk-AAFX64WD.cjs → chunk-ZXAWOLBQ.cjs} +22 -5
- package/dist/chunk-ZXAWOLBQ.cjs.map +1 -0
- package/dist/citations/QuietMarks.d.ts +5 -2
- package/dist/citations/index.cjs +15 -14
- package/dist/citations/index.js +3 -2
- package/dist/collaboration/index.cjs +42 -42
- package/dist/collaboration/index.js +2 -2
- package/dist/connect/docx.cjs +6 -6
- package/dist/connect/docx.js +5 -5
- package/dist/connect/index.cjs +4797 -184
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +4 -0
- package/dist/connect/index.js +4687 -94
- package/dist/connect/index.js.map +1 -1
- package/dist/connection/ConnectedAgentCreator.d.ts +37 -0
- package/dist/connection/ConnectedWorkflowHistory.d.ts +45 -0
- package/dist/connection/ConnectionProvider.d.ts +3 -1
- package/dist/connection/calendar/AddCalendarDialogs.d.ts +9 -0
- package/dist/connection/calendar/BookingPagesPanel.d.ts +13 -0
- package/dist/connection/calendar/CalendarAccountsPanel.d.ts +5 -0
- package/dist/connection/calendar/CalendarSettingsDialog.d.ts +12 -0
- package/dist/connection/calendar/ConnectedCalendar.d.ts +13 -0
- package/dist/connection/calendar/ConnectedMailInviteCard.d.ts +12 -0
- package/dist/connection/calendar/ConnectedPublicBooking.d.ts +9 -0
- package/dist/connection/calendar/ConnectedUpcomingEvents.d.ts +12 -0
- package/dist/connection/calendar/CopyField.d.ts +9 -0
- package/dist/connection/calendar/EventEditorDialog.d.ts +29 -0
- package/dist/connection/calendar/EventScheduling.d.ts +8 -0
- package/dist/connection/calendar/InvitationsPanel.d.ts +5 -0
- package/dist/connection/calendar/OpenAccessPanel.d.ts +7 -0
- package/dist/connection/calendar/PublishCalendarDialog.d.ts +8 -0
- package/dist/connection/calendar/RoomsDirectoryPanel.d.ts +8 -0
- package/dist/connection/calendar/ShareCalendarDialog.d.ts +6 -0
- package/dist/connection/calendar/copy.d.ts +2 -0
- package/dist/connection/calendar/index.d.ts +6 -0
- package/dist/connection/calendar/store.d.ts +47 -0
- package/dist/connection/calendar/types.d.ts +36 -0
- package/dist/connection/calendar/useWebinarAttendee.d.ts +3 -0
- package/dist/connection/notification-center/ConnectedNotificationCenter.d.ts +15 -0
- package/dist/connection/notification-center/NotificationCenter.d.ts +37 -0
- package/dist/connection/notification-center/NotificationEvent.d.ts +33 -0
- package/dist/connection/notification-center/index.d.ts +4 -0
- package/dist/connection/notification-center/items.d.ts +44 -0
- package/dist/facts/index.cjs +6 -6
- package/dist/facts/index.js +6 -6
- package/dist/files/index.cjs +6 -6
- package/dist/files/index.js +6 -6
- package/dist/home/index.cjs +20 -20
- package/dist/home/index.js +5 -5
- package/dist/index.cjs +921 -904
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +22 -21
- 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 +52 -66
- package/dist/settings/index.cjs.map +1 -1
- package/dist/settings/index.js +6 -23
- package/dist/settings/index.js.map +1 -1
- package/dist/shell/index.cjs +61 -60
- package/dist/shell/index.js +5 -4
- package/dist/studio/index.cjs +8 -8
- package/dist/studio/index.js +6 -6
- package/dist/workflow-canvas/index.cjs +28 -29
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +11 -12
- package/dist/workflow-canvas/index.js.map +1 -1
- package/dist/workspaces/index.cjs +2 -2
- package/dist/workspaces/index.js +2 -2
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +4 -4
- package/dist/chunk-2Q7FDZAY.js.map +0 -1
- package/dist/chunk-3BI6EWKP.cjs.map +0 -1
- package/dist/chunk-AAFX64WD.cjs.map +0 -1
- package/dist/chunk-CQCC7LE7.js +0 -210
- package/dist/chunk-CQCC7LE7.js.map +0 -1
- package/dist/chunk-KDUGTKVI.cjs.map +0 -1
- package/dist/chunk-KSHKTOY2.js.map +0 -1
- package/dist/chunk-L2PAPOZ5.js.map +0 -1
- package/dist/chunk-MJKBVIV3.cjs.map +0 -1
- package/dist/chunk-OGBXV326.cjs.map +0 -1
- package/dist/chunk-OQ7RUNOC.js.map +0 -1
- package/dist/chunk-RFIBUWLF.cjs +0 -232
- package/dist/chunk-RFIBUWLF.cjs.map +0 -1
- package/dist/chunk-RQ2Y7USX.cjs.map +0 -1
- package/dist/chunk-UBEI6WFJ.js.map +0 -1
- package/dist/chunk-W3VYZXNS.js.map +0 -1
- package/dist/chunk-WXYQ66KC.cjs.map +0 -1
- package/dist/chunk-XVME4XYD.js.map +0 -1
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkOGP6MQXQ_cjs = require('./chunk-OGP6MQXQ.cjs');
|
|
5
|
+
var chunkMIDXCYZB_cjs = require('./chunk-MIDXCYZB.cjs');
|
|
6
6
|
var chunkZW6FPIFC_cjs = require('./chunk-ZW6FPIFC.cjs');
|
|
7
7
|
var chunkDETZZBG2_cjs = require('./chunk-DETZZBG2.cjs');
|
|
8
|
+
var chunkR26BK7YL_cjs = require('./chunk-R26BK7YL.cjs');
|
|
8
9
|
var chunkV4ISCZJ7_cjs = require('./chunk-V4ISCZJ7.cjs');
|
|
9
10
|
var chunk2EI7NCUA_cjs = require('./chunk-2EI7NCUA.cjs');
|
|
10
|
-
var
|
|
11
|
+
var chunkC4WSHRR6_cjs = require('./chunk-C4WSHRR6.cjs');
|
|
11
12
|
var chunk7RGLTF76_cjs = require('./chunk-7RGLTF76.cjs');
|
|
12
13
|
var chunkOWCEQKAR_cjs = require('./chunk-OWCEQKAR.cjs');
|
|
13
14
|
var chunk32HW2Q33_cjs = require('./chunk-32HW2Q33.cjs');
|
|
14
|
-
var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
|
|
15
15
|
var chunkKDG6FER6_cjs = require('./chunk-KDG6FER6.cjs');
|
|
16
|
+
var chunkC2CWWEHO_cjs = require('./chunk-C2CWWEHO.cjs');
|
|
17
|
+
var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
|
|
16
18
|
var react = require('react');
|
|
17
19
|
var lucideReact = require('lucide-react');
|
|
18
20
|
var ui = require('@arbidocs/react/ui');
|
|
@@ -317,7 +319,7 @@ function SchemaForm({
|
|
|
317
319
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("flex flex-col gap-4", className), "data-slot": "schema-form", children: [
|
|
318
320
|
common.map(render),
|
|
319
321
|
advanced.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
320
|
-
|
|
322
|
+
chunkOGP6MQXQ_cjs.FoldSection,
|
|
321
323
|
{
|
|
322
324
|
label: l.advanced,
|
|
323
325
|
open: advancedOpen,
|
|
@@ -492,7 +494,7 @@ function WorkflowConfigDialog({
|
|
|
492
494
|
const firstField = workflow.inputs.find((f) => !f.advanced);
|
|
493
495
|
const focusPromptFirst = firstField?.type === "text" || firstField?.type === "longtext";
|
|
494
496
|
const defaultScopeRender = scopeSource ? (_field, value, onChange) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
495
|
-
|
|
497
|
+
chunkOGP6MQXQ_cjs.ScopePicker,
|
|
496
498
|
{
|
|
497
499
|
folders: scopeSource.folders,
|
|
498
500
|
unfiledCount: scopeSource.unfiledCount,
|
|
@@ -525,7 +527,7 @@ function WorkflowConfigDialog({
|
|
|
525
527
|
},
|
|
526
528
|
children: [
|
|
527
529
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
528
|
-
|
|
530
|
+
chunkOGP6MQXQ_cjs.QuickActionDialogHeader,
|
|
529
531
|
{
|
|
530
532
|
icon: workflow.icon && renderIcon ? renderIcon(workflow.icon) : null,
|
|
531
533
|
title: workflow.title,
|
|
@@ -543,7 +545,7 @@ function WorkflowConfigDialog({
|
|
|
543
545
|
submit();
|
|
544
546
|
},
|
|
545
547
|
children: noFiles ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
546
|
-
|
|
548
|
+
chunkOGP6MQXQ_cjs.AddFilesFirst,
|
|
547
549
|
{
|
|
548
550
|
reason: l.addFilesReason,
|
|
549
551
|
action: addFilesAction,
|
|
@@ -667,7 +669,7 @@ function WorkflowLauncher({
|
|
|
667
669
|
});
|
|
668
670
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, "data-slot": "workflow-launcher", children: [
|
|
669
671
|
showTiles && /* @__PURE__ */ jsxRuntime.jsx(
|
|
670
|
-
|
|
672
|
+
chunkOGP6MQXQ_cjs.StartTiles,
|
|
671
673
|
{
|
|
672
674
|
items: [...tiles, ...extraTiles],
|
|
673
675
|
caption,
|
|
@@ -867,7 +869,7 @@ function WorkflowDocumentsField({
|
|
|
867
869
|
children: [
|
|
868
870
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
869
871
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
870
|
-
|
|
872
|
+
chunkMIDXCYZB_cjs.DocumentPicker,
|
|
871
873
|
{
|
|
872
874
|
groups: [{ id: "all", heading: l.allDocuments, docs: [...offered].sort(byTitle) }],
|
|
873
875
|
value: multiple ? "" : ids[0] ?? "",
|
|
@@ -2974,6 +2976,677 @@ function StepNotices({
|
|
|
2974
2976
|
))
|
|
2975
2977
|
] });
|
|
2976
2978
|
}
|
|
2979
|
+
function CapabilityTile({
|
|
2980
|
+
label,
|
|
2981
|
+
description,
|
|
2982
|
+
icon: Icon,
|
|
2983
|
+
selected,
|
|
2984
|
+
onToggle,
|
|
2985
|
+
testId,
|
|
2986
|
+
className
|
|
2987
|
+
}) {
|
|
2988
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2989
|
+
"button",
|
|
2990
|
+
{
|
|
2991
|
+
type: "button",
|
|
2992
|
+
onClick: onToggle,
|
|
2993
|
+
"aria-pressed": selected,
|
|
2994
|
+
"data-testid": testId,
|
|
2995
|
+
"data-slot": "capability-tile",
|
|
2996
|
+
className: ui.cn(
|
|
2997
|
+
"flex flex-col items-start gap-1 rounded-lg p-3 text-left transition-colors pointer-coarse:min-h-11 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
2998
|
+
selected ? "bg-accent text-accent-foreground ring-1 ring-inset ring-primary/30" : "bg-muted hover:bg-accent/60",
|
|
2999
|
+
className
|
|
3000
|
+
),
|
|
3001
|
+
children: [
|
|
3002
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 16, className: selected ? "text-accent-foreground" : "text-muted-foreground" }),
|
|
3003
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium leading-tight", children: label }),
|
|
3004
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs leading-tight text-muted-foreground", children: description })
|
|
3005
|
+
]
|
|
3006
|
+
}
|
|
3007
|
+
);
|
|
3008
|
+
}
|
|
3009
|
+
function CapabilityGrid({
|
|
3010
|
+
children,
|
|
3011
|
+
testId,
|
|
3012
|
+
className
|
|
3013
|
+
}) {
|
|
3014
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3015
|
+
"div",
|
|
3016
|
+
{
|
|
3017
|
+
className: ui.cn("grid grid-cols-2 gap-2 sm:grid-cols-4", className),
|
|
3018
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "agent-capabilities" }),
|
|
3019
|
+
children
|
|
3020
|
+
}
|
|
3021
|
+
);
|
|
3022
|
+
}
|
|
3023
|
+
var DEFAULT_AGENT_TYPE_SELECTOR_LABELS = {
|
|
3024
|
+
agentType: "Agent type"
|
|
3025
|
+
};
|
|
3026
|
+
function AgentTypeSelector({
|
|
3027
|
+
value,
|
|
3028
|
+
onChange,
|
|
3029
|
+
options,
|
|
3030
|
+
label,
|
|
3031
|
+
labels,
|
|
3032
|
+
testId,
|
|
3033
|
+
optionTestId
|
|
3034
|
+
}) {
|
|
3035
|
+
const l = { ...DEFAULT_AGENT_TYPE_SELECTOR_LABELS, ...labels };
|
|
3036
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "agent-type-selector" }), children: [
|
|
3037
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: label ?? l.agentType }),
|
|
3038
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-2", children: options.map((opt) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3039
|
+
"button",
|
|
3040
|
+
{
|
|
3041
|
+
type: "button",
|
|
3042
|
+
onClick: () => onChange(opt.value),
|
|
3043
|
+
"aria-pressed": value === opt.value,
|
|
3044
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(optionTestId?.(opt.value), { testId: `agent-type-${opt.value}` }),
|
|
3045
|
+
className: ui.cn(
|
|
3046
|
+
"rounded-lg p-3 text-left transition-colors pointer-coarse:min-h-11 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
3047
|
+
value === opt.value ? "bg-accent text-accent-foreground ring-1 ring-inset ring-primary/30" : "bg-muted hover:bg-accent/60"
|
|
3048
|
+
),
|
|
3049
|
+
children: [
|
|
3050
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium", children: opt.title }),
|
|
3051
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 text-xs text-muted-foreground", children: opt.description })
|
|
3052
|
+
]
|
|
3053
|
+
},
|
|
3054
|
+
opt.value
|
|
3055
|
+
)) })
|
|
3056
|
+
] });
|
|
3057
|
+
}
|
|
3058
|
+
var DEFAULT_AGENT_AVATAR_FIELD_LABELS = {
|
|
3059
|
+
painting: "Painting\u2026",
|
|
3060
|
+
generate: "Generate avatar",
|
|
3061
|
+
regenerate: "Regenerate"
|
|
3062
|
+
};
|
|
3063
|
+
function AgentAvatarField({
|
|
3064
|
+
picture,
|
|
3065
|
+
isBusy,
|
|
3066
|
+
canGenerate,
|
|
3067
|
+
onGenerate,
|
|
3068
|
+
labels,
|
|
3069
|
+
testIds
|
|
3070
|
+
}) {
|
|
3071
|
+
const l = { ...DEFAULT_AGENT_AVATAR_FIELD_LABELS, ...labels };
|
|
3072
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2", "data-slot": "agent-avatar-field", children: [
|
|
3073
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3074
|
+
"div",
|
|
3075
|
+
{
|
|
3076
|
+
className: "flex size-24 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted",
|
|
3077
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.preview, { testId: "agent-avatar-preview" }),
|
|
3078
|
+
children: isBusy ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-1 text-ai-ink", children: [
|
|
3079
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-7 animate-spin" }),
|
|
3080
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs", children: l.painting })
|
|
3081
|
+
] }) : picture ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: picture, alt: "", className: "size-full object-cover" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Bot, { className: "size-10 text-ai-ink/70" })
|
|
3082
|
+
}
|
|
3083
|
+
),
|
|
3084
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3085
|
+
ui.Button,
|
|
3086
|
+
{
|
|
3087
|
+
variant: "outline",
|
|
3088
|
+
size: "sm",
|
|
3089
|
+
className: "h-8 gap-1 px-2 text-xs pointer-coarse:h-11",
|
|
3090
|
+
disabled: isBusy || !canGenerate,
|
|
3091
|
+
onClick: onGenerate,
|
|
3092
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.generate, { testId: "agent-avatar-generate" }),
|
|
3093
|
+
children: [
|
|
3094
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wand2, { size: 12 }),
|
|
3095
|
+
" ",
|
|
3096
|
+
picture ? l.regenerate : l.generate
|
|
3097
|
+
]
|
|
3098
|
+
}
|
|
3099
|
+
)
|
|
3100
|
+
] });
|
|
3101
|
+
}
|
|
3102
|
+
var DEFAULT_AGENT_CREATOR_LABELS = {
|
|
3103
|
+
titleNew: "New agent",
|
|
3104
|
+
titleEdit: (name) => `Edit ${name}`,
|
|
3105
|
+
descriptionNew: "Say what this agent is for. Everything else follows from that.",
|
|
3106
|
+
descriptionEdit: "Change what this agent is for, or fine-tune it under Advanced.",
|
|
3107
|
+
describe: "What should it do?",
|
|
3108
|
+
describePlaceholder: "e.g. Reads new files each morning and tells me what changed, with sources.",
|
|
3109
|
+
describeHint: "This becomes the agent\u2019s persona and shapes every answer.",
|
|
3110
|
+
startFrom: "Or start from",
|
|
3111
|
+
summaryHeading: "What it can do (its tools)",
|
|
3112
|
+
summaryCan: (list) => `Can ${list}.`,
|
|
3113
|
+
summaryCannot: (list) => `Cannot ${list}.`,
|
|
3114
|
+
summaryNone: "It can read your files and answer. Nothing else is switched on yet.",
|
|
3115
|
+
summaryModel: (model) => `Uses ${model}.`,
|
|
3116
|
+
summaryModelAuto: "Uses the default model.",
|
|
3117
|
+
summaryWorkspaces: (list) => `Can read ${list}.`,
|
|
3118
|
+
summaryNoWorkspaces: "Cannot read any workspace yet. Give it access under Advanced.",
|
|
3119
|
+
summaryName: (name) => `Will be called ${name}.`,
|
|
3120
|
+
workspaceAccess: "Workspace access",
|
|
3121
|
+
workspaceAccessHint: "Each workspace stays separate. The agent can only read the ones you tick here.",
|
|
3122
|
+
workspaceAlready: "Already has access",
|
|
3123
|
+
revokeWorkspace: (name) => `Remove access to ${name}`,
|
|
3124
|
+
noWorkspacesToGrant: "You have no workspaces yet.",
|
|
3125
|
+
name: "Name",
|
|
3126
|
+
nameHint: "Letters, digits, - and _ only; must start with a letter or digit.",
|
|
3127
|
+
nameInvalid: "Letters, digits, - and _ only; must start with a letter or digit.",
|
|
3128
|
+
advanced: "Advanced",
|
|
3129
|
+
capabilities: "Tools",
|
|
3130
|
+
toolsHint: "Tools are switches on this agent: what it may do on its own, such as search the web or run code. Change them any time.",
|
|
3131
|
+
summaryChange: "Change tools",
|
|
3132
|
+
model: "Model",
|
|
3133
|
+
modelAuto: "Automatic",
|
|
3134
|
+
cancel: "Cancel",
|
|
3135
|
+
create: "Create agent",
|
|
3136
|
+
save: "Save changes",
|
|
3137
|
+
saving: "Saving\u2026"
|
|
3138
|
+
};
|
|
3139
|
+
var NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
|
|
3140
|
+
var FILLER = /* @__PURE__ */ new Set([
|
|
3141
|
+
"a",
|
|
3142
|
+
"an",
|
|
3143
|
+
"the",
|
|
3144
|
+
"who",
|
|
3145
|
+
"that",
|
|
3146
|
+
"which",
|
|
3147
|
+
"to",
|
|
3148
|
+
"for",
|
|
3149
|
+
"and",
|
|
3150
|
+
"of",
|
|
3151
|
+
"i",
|
|
3152
|
+
"my"
|
|
3153
|
+
]);
|
|
3154
|
+
function deriveAgentName(description) {
|
|
3155
|
+
const words = description.toLowerCase().replace(/[^a-z0-9\s-]/g, " ").split(/\s+/).filter((w) => w && !FILLER.has(w)).slice(0, 3);
|
|
3156
|
+
return words.join("-").slice(0, 64);
|
|
3157
|
+
}
|
|
3158
|
+
var isValidAgentName = (name) => NAME_RE.test(name) && name.length <= 64;
|
|
3159
|
+
var joinList = (items) => items.length <= 2 ? items.join(" and ") : `${items.slice(0, -1).join(", ")} and ${items[items.length - 1]}`;
|
|
3160
|
+
function summarizeCapabilities(capabilities, enabled, modelName, labels = DEFAULT_AGENT_CREATOR_LABELS) {
|
|
3161
|
+
const on = capabilities.filter((c) => enabled[c.key]).map((c) => c.label.toLowerCase());
|
|
3162
|
+
const off = capabilities.filter((c) => !enabled[c.key]).map((c) => c.label.toLowerCase());
|
|
3163
|
+
const lines = [];
|
|
3164
|
+
if (on.length === 0) lines.push(labels.summaryNone);
|
|
3165
|
+
else {
|
|
3166
|
+
lines.push(labels.summaryCan(joinList(on)));
|
|
3167
|
+
if (off.length > 0) lines.push(labels.summaryCannot(joinList(off)));
|
|
3168
|
+
}
|
|
3169
|
+
lines.push(modelName ? labels.summaryModel(modelName) : labels.summaryModelAuto);
|
|
3170
|
+
return lines;
|
|
3171
|
+
}
|
|
3172
|
+
function summarizeAgent(capabilities, values, workspaces, labels = DEFAULT_AGENT_CREATOR_LABELS) {
|
|
3173
|
+
const lines = summarizeCapabilities(capabilities, values.capabilities, values.modelName, labels);
|
|
3174
|
+
const names = workspaces.filter((w) => values.workspaceIds.includes(w.id)).map((w) => w.name);
|
|
3175
|
+
lines.push(
|
|
3176
|
+
names.length > 0 ? labels.summaryWorkspaces(joinList(names)) : labels.summaryNoWorkspaces
|
|
3177
|
+
);
|
|
3178
|
+
if (values.name) lines.push(labels.summaryName(values.name));
|
|
3179
|
+
return lines;
|
|
3180
|
+
}
|
|
3181
|
+
var BLANK = {
|
|
3182
|
+
name: "",
|
|
3183
|
+
persona: "",
|
|
3184
|
+
capabilities: {},
|
|
3185
|
+
modelName: "",
|
|
3186
|
+
type: "builtin",
|
|
3187
|
+
workspaceIds: []
|
|
3188
|
+
};
|
|
3189
|
+
function AgentCreator({
|
|
3190
|
+
open,
|
|
3191
|
+
onOpenChange,
|
|
3192
|
+
isEdit = false,
|
|
3193
|
+
agentName,
|
|
3194
|
+
capabilities,
|
|
3195
|
+
templates = [],
|
|
3196
|
+
models = [],
|
|
3197
|
+
workspaces = [],
|
|
3198
|
+
grantedWorkspaceIds = [],
|
|
3199
|
+
onRevokeWorkspace,
|
|
3200
|
+
revokingWorkspaceId,
|
|
3201
|
+
avatar,
|
|
3202
|
+
types,
|
|
3203
|
+
values: valuesProp,
|
|
3204
|
+
initialValues,
|
|
3205
|
+
onValuesChange,
|
|
3206
|
+
advanced,
|
|
3207
|
+
isSaving,
|
|
3208
|
+
onSubmit,
|
|
3209
|
+
labels,
|
|
3210
|
+
testId
|
|
3211
|
+
}) {
|
|
3212
|
+
const l = { ...DEFAULT_AGENT_CREATOR_LABELS, ...labels };
|
|
3213
|
+
const seed = react.useMemo(
|
|
3214
|
+
() => ({ ...BLANK, ...initialValues }),
|
|
3215
|
+
// Seeded once per open.
|
|
3216
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3217
|
+
[open]
|
|
3218
|
+
);
|
|
3219
|
+
const [values, setValues] = useControllableState(
|
|
3220
|
+
valuesProp,
|
|
3221
|
+
seed,
|
|
3222
|
+
onValuesChange
|
|
3223
|
+
);
|
|
3224
|
+
const [advancedOpen, setAdvancedOpen] = react.useState(false);
|
|
3225
|
+
const [nameTouched, setNameTouched] = react.useState(false);
|
|
3226
|
+
react.useEffect(() => {
|
|
3227
|
+
if (open) {
|
|
3228
|
+
if (valuesProp === void 0) setValues(seed);
|
|
3229
|
+
setAdvancedOpen(false);
|
|
3230
|
+
setNameTouched(Boolean(seed.name));
|
|
3231
|
+
}
|
|
3232
|
+
}, [open]);
|
|
3233
|
+
const id = chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "agent-creator" });
|
|
3234
|
+
const name = values.name;
|
|
3235
|
+
const nameValid = isValidAgentName(name);
|
|
3236
|
+
const canSubmit = (isEdit || nameValid) && !isSaving;
|
|
3237
|
+
const patch = (next) => setValues({ ...values, ...next });
|
|
3238
|
+
const setPersona = (persona) => patch({ persona, ...!isEdit && !nameTouched ? { name: deriveAgentName(persona) } : {} });
|
|
3239
|
+
const applyTemplate = (t) => patch({
|
|
3240
|
+
persona: t.persona,
|
|
3241
|
+
capabilities: Object.fromEntries(
|
|
3242
|
+
capabilities.map((c) => [c.key, t.capabilities.includes(c.key)])
|
|
3243
|
+
),
|
|
3244
|
+
...!isEdit && !nameTouched ? { name: deriveAgentName(t.persona) } : {}
|
|
3245
|
+
});
|
|
3246
|
+
const summary = summarizeAgent(capabilities, values, workspaces, l);
|
|
3247
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ui.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3248
|
+
ui.DialogContent,
|
|
3249
|
+
{
|
|
3250
|
+
presentation: "sheet",
|
|
3251
|
+
className: "max-h-[calc(100dvh-2rem)] overflow-y-auto sm:max-w-xl",
|
|
3252
|
+
"data-testid": id,
|
|
3253
|
+
children: [
|
|
3254
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { children: [
|
|
3255
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: isEdit ? l.titleEdit(agentName ?? name) : l.titleNew }),
|
|
3256
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: isEdit ? l.descriptionEdit : l.descriptionNew })
|
|
3257
|
+
] }),
|
|
3258
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3259
|
+
"form",
|
|
3260
|
+
{
|
|
3261
|
+
className: "flex flex-col gap-5",
|
|
3262
|
+
onSubmit: (event) => {
|
|
3263
|
+
event.preventDefault();
|
|
3264
|
+
if (canSubmit) onSubmit(values);
|
|
3265
|
+
},
|
|
3266
|
+
children: [
|
|
3267
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
3268
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "agent-creator-describe", children: l.describe }),
|
|
3269
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3270
|
+
ui.Textarea,
|
|
3271
|
+
{
|
|
3272
|
+
id: "agent-creator-describe",
|
|
3273
|
+
"data-testid": `${id}-describe`,
|
|
3274
|
+
value: values.persona,
|
|
3275
|
+
placeholder: l.describePlaceholder,
|
|
3276
|
+
rows: 4,
|
|
3277
|
+
autoFocus: true,
|
|
3278
|
+
onChange: (e) => setPersona(e.target.value)
|
|
3279
|
+
}
|
|
3280
|
+
),
|
|
3281
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: l.describeHint })
|
|
3282
|
+
] }),
|
|
3283
|
+
!isEdit && templates.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", "data-testid": `${id}-templates`, children: [
|
|
3284
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: l.startFrom }),
|
|
3285
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: templates.map((t) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3286
|
+
"button",
|
|
3287
|
+
{
|
|
3288
|
+
type: "button",
|
|
3289
|
+
title: t.description,
|
|
3290
|
+
onClick: () => applyTemplate(t),
|
|
3291
|
+
"data-testid": `${id}-template-${t.id}`,
|
|
3292
|
+
className: ui.cn(
|
|
3293
|
+
"rounded-full border border-border px-3 py-1.5 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11 [&:hover]:bg-accent"
|
|
3294
|
+
),
|
|
3295
|
+
children: t.title
|
|
3296
|
+
},
|
|
3297
|
+
t.id
|
|
3298
|
+
)) })
|
|
3299
|
+
] }),
|
|
3300
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3301
|
+
"div",
|
|
3302
|
+
{
|
|
3303
|
+
className: "rounded-lg bg-muted p-3 text-sm",
|
|
3304
|
+
"data-testid": `${id}-summary`,
|
|
3305
|
+
"aria-live": "polite",
|
|
3306
|
+
children: [
|
|
3307
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-1.5 text-xs font-medium text-muted-foreground", children: [
|
|
3308
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "size-4 text-ai-ink", "aria-hidden": "true" }),
|
|
3309
|
+
l.summaryHeading
|
|
3310
|
+
] }),
|
|
3311
|
+
summary.map((line) => /* @__PURE__ */ jsxRuntime.jsx("p", { children: line }, line)),
|
|
3312
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3313
|
+
"button",
|
|
3314
|
+
{
|
|
3315
|
+
type: "button",
|
|
3316
|
+
onClick: () => setAdvancedOpen(true),
|
|
3317
|
+
"data-testid": `${id}-summary-change`,
|
|
3318
|
+
className: "mt-1 text-xs font-medium text-primary underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
|
|
3319
|
+
children: l.summaryChange
|
|
3320
|
+
}
|
|
3321
|
+
)
|
|
3322
|
+
]
|
|
3323
|
+
}
|
|
3324
|
+
),
|
|
3325
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-4", children: [
|
|
3326
|
+
typeof avatar === "function" ? avatar(values) : avatar,
|
|
3327
|
+
!isEdit && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
|
|
3328
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "agent-creator-name", children: l.name }),
|
|
3329
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3330
|
+
ui.Input,
|
|
3331
|
+
{
|
|
3332
|
+
id: "agent-creator-name",
|
|
3333
|
+
"data-testid": `${id}-name`,
|
|
3334
|
+
value: name,
|
|
3335
|
+
placeholder: "research-assistant",
|
|
3336
|
+
"aria-invalid": name !== "" && !nameValid ? true : void 0,
|
|
3337
|
+
onChange: (e) => {
|
|
3338
|
+
setNameTouched(true);
|
|
3339
|
+
patch({ name: e.target.value });
|
|
3340
|
+
}
|
|
3341
|
+
}
|
|
3342
|
+
),
|
|
3343
|
+
name !== "" && !nameValid && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-destructive", children: l.nameInvalid })
|
|
3344
|
+
] })
|
|
3345
|
+
] }),
|
|
3346
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3347
|
+
chunkOGP6MQXQ_cjs.FoldSection,
|
|
3348
|
+
{
|
|
3349
|
+
label: l.advanced,
|
|
3350
|
+
open: advancedOpen,
|
|
3351
|
+
onOpenChange: setAdvancedOpen,
|
|
3352
|
+
testId: `${id}-advanced-toggle`,
|
|
3353
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
|
|
3354
|
+
!isEdit && types && types.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3355
|
+
AgentTypeSelector,
|
|
3356
|
+
{
|
|
3357
|
+
value: values.type,
|
|
3358
|
+
onChange: (type) => patch({ type }),
|
|
3359
|
+
options: types,
|
|
3360
|
+
testId: `${id}-type`,
|
|
3361
|
+
optionTestId: (value) => `${id}-type-${value}`
|
|
3362
|
+
}
|
|
3363
|
+
),
|
|
3364
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
|
|
3365
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: l.capabilities }),
|
|
3366
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: l.toolsHint }),
|
|
3367
|
+
/* @__PURE__ */ jsxRuntime.jsx(CapabilityGrid, { testId: `${id}-capabilities`, children: capabilities.map((c) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3368
|
+
CapabilityTile,
|
|
3369
|
+
{
|
|
3370
|
+
label: c.label,
|
|
3371
|
+
description: c.description,
|
|
3372
|
+
icon: c.icon,
|
|
3373
|
+
selected: Boolean(values.capabilities[c.key]),
|
|
3374
|
+
onToggle: () => patch({
|
|
3375
|
+
capabilities: {
|
|
3376
|
+
...values.capabilities,
|
|
3377
|
+
[c.key]: !values.capabilities[c.key]
|
|
3378
|
+
}
|
|
3379
|
+
}),
|
|
3380
|
+
testId: `${id}-cap-${c.key}`
|
|
3381
|
+
},
|
|
3382
|
+
c.key
|
|
3383
|
+
)) })
|
|
3384
|
+
] }),
|
|
3385
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", "data-testid": `${id}-workspaces`, children: [
|
|
3386
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: l.workspaceAccess }),
|
|
3387
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: l.workspaceAccessHint }),
|
|
3388
|
+
workspaces.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: l.noWorkspacesToGrant }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: workspaces.map((w) => {
|
|
3389
|
+
const already = grantedWorkspaceIds.includes(w.id);
|
|
3390
|
+
const on = already || values.workspaceIds.includes(w.id);
|
|
3391
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1", children: [
|
|
3392
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3393
|
+
"button",
|
|
3394
|
+
{
|
|
3395
|
+
type: "button",
|
|
3396
|
+
role: "checkbox",
|
|
3397
|
+
"aria-checked": on,
|
|
3398
|
+
disabled: already,
|
|
3399
|
+
title: already ? l.workspaceAlready : void 0,
|
|
3400
|
+
"data-testid": `${id}-workspace-${w.id}`,
|
|
3401
|
+
onClick: () => patch({
|
|
3402
|
+
workspaceIds: on ? values.workspaceIds.filter((x) => x !== w.id) : [...values.workspaceIds, w.id]
|
|
3403
|
+
}),
|
|
3404
|
+
className: ui.cn(
|
|
3405
|
+
"rounded-md border px-3 py-1.5 text-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-60 pointer-coarse:min-h-11",
|
|
3406
|
+
on ? "border-primary bg-primary/10 text-primary" : "border-border [&:hover:not(:disabled)]:bg-accent"
|
|
3407
|
+
),
|
|
3408
|
+
children: w.name
|
|
3409
|
+
}
|
|
3410
|
+
),
|
|
3411
|
+
already && onRevokeWorkspace && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3412
|
+
"button",
|
|
3413
|
+
{
|
|
3414
|
+
type: "button",
|
|
3415
|
+
"aria-label": l.revokeWorkspace(w.name),
|
|
3416
|
+
title: l.revokeWorkspace(w.name),
|
|
3417
|
+
disabled: revokingWorkspaceId === w.id,
|
|
3418
|
+
"data-testid": `${id}-workspace-${w.id}-revoke`,
|
|
3419
|
+
onClick: () => onRevokeWorkspace(w.id),
|
|
3420
|
+
className: "flex size-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-50 pointer-coarse:size-11",
|
|
3421
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-4", "aria-hidden": true })
|
|
3422
|
+
}
|
|
3423
|
+
)
|
|
3424
|
+
] }, w.id);
|
|
3425
|
+
}) })
|
|
3426
|
+
] }),
|
|
3427
|
+
models.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
3428
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { children: l.model }),
|
|
3429
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3430
|
+
ui.Select,
|
|
3431
|
+
{
|
|
3432
|
+
value: values.modelName || "__auto__",
|
|
3433
|
+
onValueChange: (v) => patch({ modelName: v === "__auto__" ? "" : v }),
|
|
3434
|
+
children: [
|
|
3435
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectTrigger, { "data-testid": `${id}-model`, className: "pointer-coarse:min-h-11", children: /* @__PURE__ */ jsxRuntime.jsx(ui.SelectValue, {}) }),
|
|
3436
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.SelectContent, { children: [
|
|
3437
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: "__auto__", children: l.modelAuto }),
|
|
3438
|
+
models.map((m) => /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: m, children: m }, m))
|
|
3439
|
+
] })
|
|
3440
|
+
]
|
|
3441
|
+
}
|
|
3442
|
+
)
|
|
3443
|
+
] }),
|
|
3444
|
+
typeof advanced === "function" ? advanced(values) : advanced
|
|
3445
|
+
] })
|
|
3446
|
+
}
|
|
3447
|
+
),
|
|
3448
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col-reverse sm:flex-row sm:justify-end gap-2 border-t border-border pt-3", children: [
|
|
3449
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3450
|
+
ui.Button,
|
|
3451
|
+
{
|
|
3452
|
+
type: "button",
|
|
3453
|
+
variant: "ghost",
|
|
3454
|
+
onClick: () => onOpenChange(false),
|
|
3455
|
+
"data-testid": `${id}-cancel`,
|
|
3456
|
+
className: "pointer-coarse:min-h-11",
|
|
3457
|
+
children: l.cancel
|
|
3458
|
+
}
|
|
3459
|
+
),
|
|
3460
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3461
|
+
ui.Button,
|
|
3462
|
+
{
|
|
3463
|
+
type: "submit",
|
|
3464
|
+
disabled: !canSubmit,
|
|
3465
|
+
"data-testid": `${id}-submit`,
|
|
3466
|
+
className: "gap-1.5 pointer-coarse:min-h-11",
|
|
3467
|
+
children: [
|
|
3468
|
+
isSaving ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "size-4" }),
|
|
3469
|
+
isSaving ? l.saving : isEdit ? l.save : l.create
|
|
3470
|
+
]
|
|
3471
|
+
}
|
|
3472
|
+
)
|
|
3473
|
+
] })
|
|
3474
|
+
]
|
|
3475
|
+
}
|
|
3476
|
+
)
|
|
3477
|
+
]
|
|
3478
|
+
}
|
|
3479
|
+
) });
|
|
3480
|
+
}
|
|
3481
|
+
|
|
3482
|
+
// src/agents/definitions/persona.ts
|
|
3483
|
+
function composePersona(name, description) {
|
|
3484
|
+
const body = description.trim();
|
|
3485
|
+
const preamble = `You are ${name}, an AI agent.`;
|
|
3486
|
+
return body ? `${preamble} ${body}` : preamble;
|
|
3487
|
+
}
|
|
3488
|
+
function stripPersonaPreamble(persona) {
|
|
3489
|
+
return persona.replace(/^You are .+?, an AI agent\.\s*/, "").trim();
|
|
3490
|
+
}
|
|
3491
|
+
function agentCreatorToConfigSection(values, capabilityKeys) {
|
|
3492
|
+
return {
|
|
3493
|
+
PERSONA: composePersona(values.name, values.persona),
|
|
3494
|
+
...values.modelName ? { AGENT_MODEL_NAME: values.modelName } : {},
|
|
3495
|
+
...Object.fromEntries(capabilityKeys.map((k) => [k, !!values.capabilities[k]]))
|
|
3496
|
+
};
|
|
3497
|
+
}
|
|
3498
|
+
function agentConfigSectionToValues(section, capabilityKeys) {
|
|
3499
|
+
const s = section ?? {};
|
|
3500
|
+
return {
|
|
3501
|
+
persona: stripPersonaPreamble(String(s.PERSONA ?? "")),
|
|
3502
|
+
modelName: String(s.AGENT_MODEL_NAME ?? ""),
|
|
3503
|
+
capabilities: Object.fromEntries(capabilityKeys.map((k) => [k, Boolean(s[k])]))
|
|
3504
|
+
};
|
|
3505
|
+
}
|
|
3506
|
+
var DEFAULT_AGENT_CAPABILITIES = [
|
|
3507
|
+
{
|
|
3508
|
+
key: "WEB_SEARCH_ENABLED",
|
|
3509
|
+
label: "Web search",
|
|
3510
|
+
description: "Current facts, cited sources",
|
|
3511
|
+
icon: lucideReact.Globe
|
|
3512
|
+
},
|
|
3513
|
+
{
|
|
3514
|
+
key: "RUN_CODE_ENABLED",
|
|
3515
|
+
label: "Run code",
|
|
3516
|
+
description: "Exact numbers, real computation",
|
|
3517
|
+
icon: lucideReact.Terminal
|
|
3518
|
+
},
|
|
3519
|
+
{
|
|
3520
|
+
key: "DEEP_RESEARCH_ENABLED",
|
|
3521
|
+
label: "Deep research",
|
|
3522
|
+
description: "Multi-source investigations",
|
|
3523
|
+
icon: lucideReact.Telescope
|
|
3524
|
+
},
|
|
3525
|
+
{
|
|
3526
|
+
key: "PLANNING_ENABLED",
|
|
3527
|
+
label: "Planning",
|
|
3528
|
+
description: "Plans complex work first",
|
|
3529
|
+
icon: lucideReact.ListChecks
|
|
3530
|
+
},
|
|
3531
|
+
{
|
|
3532
|
+
key: "ARTIFACTS_ENABLED",
|
|
3533
|
+
label: "Documents",
|
|
3534
|
+
description: "Drafts and edits documents",
|
|
3535
|
+
icon: lucideReact.FileText
|
|
3536
|
+
},
|
|
3537
|
+
{
|
|
3538
|
+
key: "IMAGE_ENABLED",
|
|
3539
|
+
label: "Images",
|
|
3540
|
+
description: "Generates and edits images",
|
|
3541
|
+
icon: lucideReact.ImageIcon
|
|
3542
|
+
},
|
|
3543
|
+
{ key: "MEMORY_ENABLED", label: "Memory", description: "Remembers across sessions", icon: lucideReact.Brain },
|
|
3544
|
+
{ key: "SKILLS_ENABLED", label: "Skills", description: "May follow your skills", icon: lucideReact.Wand2 }
|
|
3545
|
+
];
|
|
3546
|
+
var DEFAULT_AGENT_TEMPLATES = [
|
|
3547
|
+
{
|
|
3548
|
+
id: "researcher",
|
|
3549
|
+
title: "Researcher",
|
|
3550
|
+
description: "Looks things up and cites its sources",
|
|
3551
|
+
persona: "Researches a question thoroughly, reads the best sources, and cites every claim. Says plainly when something could not be confirmed.",
|
|
3552
|
+
capabilities: ["WEB_SEARCH_ENABLED", "DEEP_RESEARCH_ENABLED", "PLANNING_ENABLED"]
|
|
3553
|
+
},
|
|
3554
|
+
{
|
|
3555
|
+
id: "analyst",
|
|
3556
|
+
title: "Analyst",
|
|
3557
|
+
description: "Works through numbers and data",
|
|
3558
|
+
persona: "Works through data carefully, checks its arithmetic by running code, and explains how it reached each figure.",
|
|
3559
|
+
capabilities: ["RUN_CODE_ENABLED", "PLANNING_ENABLED", "ARTIFACTS_ENABLED"]
|
|
3560
|
+
},
|
|
3561
|
+
{
|
|
3562
|
+
id: "note-taker",
|
|
3563
|
+
title: "Note taker",
|
|
3564
|
+
description: "Keeps notes and remembers context",
|
|
3565
|
+
persona: "Keeps concise notes, remembers what matters between sessions, and drafts clean summaries on request.",
|
|
3566
|
+
capabilities: ["MEMORY_ENABLED", "ARTIFACTS_ENABLED"]
|
|
3567
|
+
},
|
|
3568
|
+
{ id: "blank", title: "Blank", description: "Start from nothing", persona: "", capabilities: [] }
|
|
3569
|
+
];
|
|
3570
|
+
var DEFAULT_AGENT_TYPES = [
|
|
3571
|
+
{
|
|
3572
|
+
value: "builtin",
|
|
3573
|
+
title: "Built-in",
|
|
3574
|
+
description: "Runs on ARBI\u2019s servers \u2014 woken by tasks and messages."
|
|
3575
|
+
},
|
|
3576
|
+
{
|
|
3577
|
+
value: "external",
|
|
3578
|
+
title: "External",
|
|
3579
|
+
description: "Connect a Claude or OpenClaw runtime from your machine."
|
|
3580
|
+
}
|
|
3581
|
+
];
|
|
3582
|
+
function AgentConnectInstructions({ email, signingKey }) {
|
|
3583
|
+
const { notify, runtimeConfig } = chunkC4WSHRR6_cjs.useBlocksEnvironment();
|
|
3584
|
+
const [agentBackend, setAgentBackend] = react.useState("claude");
|
|
3585
|
+
const [copied, setCopied] = react.useState(false);
|
|
3586
|
+
const setupScript = react.useMemo(
|
|
3587
|
+
() => [
|
|
3588
|
+
"npm install -g @arbidocs/cli",
|
|
3589
|
+
`arbi config set-url https://${runtimeConfig.deploymentDomain}`,
|
|
3590
|
+
`arbi login --email ${email} --signing-key ${signingKey}`,
|
|
3591
|
+
`arbi listen --agent ${agentBackend}`
|
|
3592
|
+
].join("\n"),
|
|
3593
|
+
[email, signingKey, agentBackend, runtimeConfig.deploymentDomain]
|
|
3594
|
+
);
|
|
3595
|
+
const handleCopy = react.useCallback(async () => {
|
|
3596
|
+
try {
|
|
3597
|
+
await navigator.clipboard.writeText(setupScript);
|
|
3598
|
+
setCopied(true);
|
|
3599
|
+
notify("Setup commands copied", "success");
|
|
3600
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
3601
|
+
} catch {
|
|
3602
|
+
notify("Failed to copy", "error");
|
|
3603
|
+
}
|
|
3604
|
+
}, [setupScript, notify]);
|
|
3605
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3606
|
+
"div",
|
|
3607
|
+
{
|
|
3608
|
+
className: "space-y-2 rounded-lg border border-yellow-border bg-yellow-bg/60 p-3",
|
|
3609
|
+
"data-testid": "agent-connect-instructions",
|
|
3610
|
+
children: [
|
|
3611
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
3612
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: "Connect it \u2014 run on the agent machine:" }),
|
|
3613
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3614
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "agent-backend", className: "text-xs text-muted-foreground", children: "Runtime" }),
|
|
3615
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3616
|
+
"select",
|
|
3617
|
+
{
|
|
3618
|
+
id: "agent-backend",
|
|
3619
|
+
value: agentBackend,
|
|
3620
|
+
onChange: (e) => setAgentBackend(e.target.value),
|
|
3621
|
+
className: "h-7 rounded-md border border-input bg-background px-2 text-xs",
|
|
3622
|
+
"data-testid": "agent-backend-select",
|
|
3623
|
+
children: [
|
|
3624
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "claude", children: "claude" }),
|
|
3625
|
+
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "openclaw", children: "openclaw" })
|
|
3626
|
+
]
|
|
3627
|
+
}
|
|
3628
|
+
)
|
|
3629
|
+
] })
|
|
3630
|
+
] }),
|
|
3631
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3632
|
+
"pre",
|
|
3633
|
+
{
|
|
3634
|
+
className: "select-all whitespace-pre-wrap break-all rounded-md bg-muted p-3 text-xs font-mono leading-relaxed",
|
|
3635
|
+
"data-testid": "agent-setup-script",
|
|
3636
|
+
children: setupScript
|
|
3637
|
+
}
|
|
3638
|
+
),
|
|
3639
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
3640
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: "The signing key is shown only once \u2014 copy it now. It cannot be recovered." }),
|
|
3641
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "outline", size: "sm", onClick: handleCopy, className: "shrink-0", children: [
|
|
3642
|
+
copied ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "mr-2 h-4 w-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, { className: "mr-2 h-4 w-4" }),
|
|
3643
|
+
"Copy"
|
|
3644
|
+
] })
|
|
3645
|
+
] })
|
|
3646
|
+
]
|
|
3647
|
+
}
|
|
3648
|
+
);
|
|
3649
|
+
}
|
|
2977
3650
|
function SkillTypeBadge({ type, className }) {
|
|
2978
3651
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2979
3652
|
"span",
|
|
@@ -4343,7 +5016,7 @@ function WorkflowsTable(props) {
|
|
|
4343
5016
|
ariaLabel: l.searchLabel,
|
|
4344
5017
|
testIds: { input: "workflow-search" },
|
|
4345
5018
|
filter: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4346
|
-
|
|
5019
|
+
chunkMIDXCYZB_cjs.TriStateFilterMenu,
|
|
4347
5020
|
{
|
|
4348
5021
|
testId: "automations-filter-button",
|
|
4349
5022
|
open: filterOpen,
|
|
@@ -4645,12 +5318,189 @@ function TaskActivityTimeline({
|
|
|
4645
5318
|
);
|
|
4646
5319
|
}) });
|
|
4647
5320
|
}
|
|
5321
|
+
function TaskActivityDialog({
|
|
5322
|
+
open,
|
|
5323
|
+
onOpenChange,
|
|
5324
|
+
taskName,
|
|
5325
|
+
events,
|
|
5326
|
+
isLoading,
|
|
5327
|
+
isError,
|
|
5328
|
+
labels,
|
|
5329
|
+
testId,
|
|
5330
|
+
...timeline
|
|
5331
|
+
}) {
|
|
5332
|
+
const l = { ...DEFAULT_TASK_ACTIVITY_LABELS, ...labels };
|
|
5333
|
+
const id = chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "task-activity" });
|
|
5334
|
+
const count = events?.length ?? 0;
|
|
5335
|
+
const scrollToEnd = react.useCallback(
|
|
5336
|
+
(el) => {
|
|
5337
|
+
if (count >= 0) el?.scrollIntoView?.({ block: "end" });
|
|
5338
|
+
},
|
|
5339
|
+
[count]
|
|
5340
|
+
);
|
|
5341
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ui.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogContent, { presentation: "sheet", className: "max-h-[80dvh] sm:max-w-lg", "data-testid": id, children: [
|
|
5342
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { children: [
|
|
5343
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: l.title }),
|
|
5344
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { className: "truncate", children: taskName })
|
|
5345
|
+
] }),
|
|
5346
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-h-[55dvh] overflow-y-auto pr-1", "data-testid": `${id}-scroll`, children: [
|
|
5347
|
+
isLoading && !events ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.loading }) : isError && !events ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-destructive", children: l.error }) : count === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: l.empty }) : /* @__PURE__ */ jsxRuntime.jsx(TaskActivityTimeline, { events: events ?? [], labels, testId: id, ...timeline }),
|
|
5348
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollToEnd })
|
|
5349
|
+
] })
|
|
5350
|
+
] }) });
|
|
5351
|
+
}
|
|
5352
|
+
var DEFAULT_TASK_RUNS_DIALOG_LABELS = {
|
|
5353
|
+
title: (taskName) => `Run history \u2014 ${taskName}`,
|
|
5354
|
+
description: "Every time this task ran. Open a run to read or watch it in its conversation.",
|
|
5355
|
+
loading: "Loading runs\u2026",
|
|
5356
|
+
empty: "This task hasn\u2019t run yet.",
|
|
5357
|
+
open: "Open"
|
|
5358
|
+
};
|
|
5359
|
+
var STATUS_STYLE = {
|
|
5360
|
+
running: "bg-ai-soft text-ai-ink",
|
|
5361
|
+
success: "bg-green-bg text-green-text",
|
|
5362
|
+
completed: "bg-green-bg text-green-text",
|
|
5363
|
+
failed: "bg-red-bg text-red-text"
|
|
5364
|
+
};
|
|
5365
|
+
function TaskRunsDialog({
|
|
5366
|
+
inline = false,
|
|
5367
|
+
renderErrorReport,
|
|
5368
|
+
hideHeader = false,
|
|
5369
|
+
open,
|
|
5370
|
+
onOpenChange,
|
|
5371
|
+
taskName,
|
|
5372
|
+
runs,
|
|
5373
|
+
isLoading,
|
|
5374
|
+
onOpenRun,
|
|
5375
|
+
onOpenResult,
|
|
5376
|
+
getRunHref,
|
|
5377
|
+
testIds,
|
|
5378
|
+
labels
|
|
5379
|
+
}) {
|
|
5380
|
+
const l = { ...DEFAULT_TASK_RUNS_DIALOG_LABELS, ...labels };
|
|
5381
|
+
const columns = react.useMemo(
|
|
5382
|
+
() => [
|
|
5383
|
+
{
|
|
5384
|
+
colId: "status",
|
|
5385
|
+
field: "status",
|
|
5386
|
+
headerName: "Status",
|
|
5387
|
+
width: 160,
|
|
5388
|
+
minWidth: 140,
|
|
5389
|
+
cellRenderer: ({ data }) => data && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5390
|
+
"span",
|
|
5391
|
+
{
|
|
5392
|
+
className: ui.cn(
|
|
5393
|
+
"rounded-full px-2 py-0.5 text-xs font-medium capitalize",
|
|
5394
|
+
STATUS_STYLE[data.status] ?? "text-muted-foreground"
|
|
5395
|
+
),
|
|
5396
|
+
children: workflowRunStatusLabel(data.status)
|
|
5397
|
+
}
|
|
5398
|
+
)
|
|
5399
|
+
},
|
|
5400
|
+
{ colId: "when", field: "when", headerName: "Run", flex: 2, minWidth: 240 },
|
|
5401
|
+
{
|
|
5402
|
+
colId: "result",
|
|
5403
|
+
headerName: "",
|
|
5404
|
+
width: 280,
|
|
5405
|
+
minWidth: 220,
|
|
5406
|
+
sortable: false,
|
|
5407
|
+
cellRenderer: ({ data: run }) => {
|
|
5408
|
+
if (!run) return null;
|
|
5409
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full items-center gap-2", children: [
|
|
5410
|
+
run.error && renderErrorReport?.(run),
|
|
5411
|
+
(run.conversationId || run.resultId && onOpenResult) && /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { asChild: true, variant: "ghost", size: "sm", className: "h-7 gap-1.5", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5412
|
+
chunkR26BK7YL_cjs.ActionLink,
|
|
5413
|
+
{
|
|
5414
|
+
href: getRunHref?.(run),
|
|
5415
|
+
onSelect: () => {
|
|
5416
|
+
if (run.conversationId) onOpenRun(run.conversationId);
|
|
5417
|
+
else if (run.resultId) onOpenResult?.(run.resultId);
|
|
5418
|
+
onOpenChange(false);
|
|
5419
|
+
},
|
|
5420
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.open, { testId: "task-run-open" }),
|
|
5421
|
+
children: [
|
|
5422
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { size: 13 }),
|
|
5423
|
+
" ",
|
|
5424
|
+
l.open
|
|
5425
|
+
]
|
|
5426
|
+
}
|
|
5427
|
+
) })
|
|
5428
|
+
] });
|
|
5429
|
+
}
|
|
5430
|
+
}
|
|
5431
|
+
],
|
|
5432
|
+
[onOpenRun, onOpenResult, getRunHref, onOpenChange, testIds?.open, l.open, renderErrorReport]
|
|
5433
|
+
);
|
|
5434
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5435
|
+
hideHeader ? null : inline ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5436
|
+
chunk7RGLTF76_cjs.TabHeader,
|
|
5437
|
+
{
|
|
5438
|
+
tabs: [
|
|
5439
|
+
{
|
|
5440
|
+
id: "history",
|
|
5441
|
+
label: l.title(taskName),
|
|
5442
|
+
count: runs.length,
|
|
5443
|
+
countIcon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { size: 14 }),
|
|
5444
|
+
presentation: "count",
|
|
5445
|
+
onClose: () => onOpenChange(false)
|
|
5446
|
+
}
|
|
5447
|
+
],
|
|
5448
|
+
activeTabId: "history",
|
|
5449
|
+
onTabChange: () => {
|
|
5450
|
+
}
|
|
5451
|
+
}
|
|
5452
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { children: [
|
|
5453
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogTitle, { className: "flex items-center gap-2", children: [
|
|
5454
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.History, { size: 16 }),
|
|
5455
|
+
" ",
|
|
5456
|
+
l.title(taskName)
|
|
5457
|
+
] }),
|
|
5458
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: l.description })
|
|
5459
|
+
] }),
|
|
5460
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5461
|
+
chunkC2CWWEHO_cjs.GridView,
|
|
5462
|
+
{
|
|
5463
|
+
testId: chunkMHVNT4J3_cjs.testIdOr(testIds?.list, { testId: "task-runs-list" }),
|
|
5464
|
+
gridId: "workflow-runs",
|
|
5465
|
+
items: runs,
|
|
5466
|
+
columnDefs: columns,
|
|
5467
|
+
getItemId: (run) => run.id,
|
|
5468
|
+
getRowTestId: () => chunkMHVNT4J3_cjs.testIdOr(testIds?.row, { testId: "task-run-row" }),
|
|
5469
|
+
isLoading,
|
|
5470
|
+
loadingMessage: l.loading,
|
|
5471
|
+
emptyState: { title: l.empty },
|
|
5472
|
+
height: "100%"
|
|
5473
|
+
}
|
|
5474
|
+
) })
|
|
5475
|
+
] });
|
|
5476
|
+
return inline ? /* @__PURE__ */ jsxRuntime.jsx("section", { className: "flex min-h-0 flex-1 flex-col", "data-testid": "automation-history", children: content }) : /* @__PURE__ */ jsxRuntime.jsx(ui.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5477
|
+
ui.DialogContent,
|
|
5478
|
+
{
|
|
5479
|
+
presentation: "sheet",
|
|
5480
|
+
className: "flex h-[min(32rem,calc(100dvh-2rem))] min-h-0 max-w-3xl flex-col",
|
|
5481
|
+
"data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.modal, { testId: "task-runs-modal" }),
|
|
5482
|
+
children: content
|
|
5483
|
+
}
|
|
5484
|
+
) });
|
|
5485
|
+
}
|
|
4648
5486
|
|
|
4649
5487
|
exports.ActionStepBody = ActionStepBody;
|
|
5488
|
+
exports.AgentAvatarField = AgentAvatarField;
|
|
5489
|
+
exports.AgentConnectInstructions = AgentConnectInstructions;
|
|
5490
|
+
exports.AgentCreator = AgentCreator;
|
|
4650
5491
|
exports.AgentSelect = AgentSelect;
|
|
5492
|
+
exports.AgentTypeSelector = AgentTypeSelector;
|
|
4651
5493
|
exports.ApprovalEvidence = ApprovalEvidence;
|
|
4652
5494
|
exports.AssigneeLine = AssigneeLine;
|
|
5495
|
+
exports.CapabilityGrid = CapabilityGrid;
|
|
5496
|
+
exports.CapabilityTile = CapabilityTile;
|
|
5497
|
+
exports.DEFAULT_AGENT_AVATAR_FIELD_LABELS = DEFAULT_AGENT_AVATAR_FIELD_LABELS;
|
|
5498
|
+
exports.DEFAULT_AGENT_CAPABILITIES = DEFAULT_AGENT_CAPABILITIES;
|
|
5499
|
+
exports.DEFAULT_AGENT_CREATOR_LABELS = DEFAULT_AGENT_CREATOR_LABELS;
|
|
4653
5500
|
exports.DEFAULT_AGENT_SELECT_LABELS = DEFAULT_AGENT_SELECT_LABELS;
|
|
5501
|
+
exports.DEFAULT_AGENT_TEMPLATES = DEFAULT_AGENT_TEMPLATES;
|
|
5502
|
+
exports.DEFAULT_AGENT_TYPES = DEFAULT_AGENT_TYPES;
|
|
5503
|
+
exports.DEFAULT_AGENT_TYPE_SELECTOR_LABELS = DEFAULT_AGENT_TYPE_SELECTOR_LABELS;
|
|
4654
5504
|
exports.DEFAULT_SCHEMA_FORM_LABELS = DEFAULT_SCHEMA_FORM_LABELS;
|
|
4655
5505
|
exports.DEFAULT_SKILL_EDIT_FORM_LABELS = DEFAULT_SKILL_EDIT_FORM_LABELS;
|
|
4656
5506
|
exports.DEFAULT_SKILL_GENERATE_FORM_LABELS = DEFAULT_SKILL_GENERATE_FORM_LABELS;
|
|
@@ -4658,6 +5508,7 @@ exports.DEFAULT_SKILL_GLOBAL_BADGE_LABELS = DEFAULT_SKILL_GLOBAL_BADGE_LABELS;
|
|
|
4658
5508
|
exports.DEFAULT_SKILL_VIEW_TOGGLE_LABELS = DEFAULT_SKILL_VIEW_TOGGLE_LABELS;
|
|
4659
5509
|
exports.DEFAULT_STEP_BAR_LABELS = DEFAULT_STEP_BAR_LABELS;
|
|
4660
5510
|
exports.DEFAULT_TASK_ACTIVITY_LABELS = DEFAULT_TASK_ACTIVITY_LABELS;
|
|
5511
|
+
exports.DEFAULT_TASK_RUNS_DIALOG_LABELS = DEFAULT_TASK_RUNS_DIALOG_LABELS;
|
|
4661
5512
|
exports.DEFAULT_TASK_TRIGGER_CHIP_LABELS = DEFAULT_TASK_TRIGGER_CHIP_LABELS;
|
|
4662
5513
|
exports.DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS = DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS;
|
|
4663
5514
|
exports.DEFAULT_WORKFLOW_DOCUMENTS_FIELD_LABELS = DEFAULT_WORKFLOW_DOCUMENTS_FIELD_LABELS;
|
|
@@ -4687,7 +5538,9 @@ exports.SkillTile = SkillTile;
|
|
|
4687
5538
|
exports.SkillTypeBadge = SkillTypeBadge;
|
|
4688
5539
|
exports.SkillViewToggle = SkillViewToggle;
|
|
4689
5540
|
exports.StepBarFrame = StepBarFrame;
|
|
5541
|
+
exports.TaskActivityDialog = TaskActivityDialog;
|
|
4690
5542
|
exports.TaskActivityTimeline = TaskActivityTimeline;
|
|
5543
|
+
exports.TaskRunsDialog = TaskRunsDialog;
|
|
4691
5544
|
exports.TaskTriggerChip = TaskTriggerChip;
|
|
4692
5545
|
exports.WORKFLOW_COLUMN_ORDER = WORKFLOW_COLUMN_ORDER;
|
|
4693
5546
|
exports.WorkflowConfigDialog = WorkflowConfigDialog;
|
|
@@ -4698,10 +5551,14 @@ exports.WorkflowStepBar = WorkflowStepBar;
|
|
|
4698
5551
|
exports.WorkflowsTable = WorkflowsTable;
|
|
4699
5552
|
exports.activateOnKey = activateOnKey;
|
|
4700
5553
|
exports.activeStepId = activeStepId;
|
|
5554
|
+
exports.agentConfigSectionToValues = agentConfigSectionToValues;
|
|
5555
|
+
exports.agentCreatorToConfigSection = agentCreatorToConfigSection;
|
|
4701
5556
|
exports.buildLibrarySkills = buildLibrarySkills;
|
|
4702
5557
|
exports.buildWorkflowScopeSource = buildWorkflowScopeSource;
|
|
4703
5558
|
exports.buildZipSkillImport = buildZipSkillImport;
|
|
5559
|
+
exports.composePersona = composePersona;
|
|
4704
5560
|
exports.createWorkflowColumns = createWorkflowColumns;
|
|
5561
|
+
exports.deriveAgentName = deriveAgentName;
|
|
4705
5562
|
exports.documentScopeLabels = documentScopeLabels;
|
|
4706
5563
|
exports.filterLibrarySkills = filterLibrarySkills;
|
|
4707
5564
|
exports.fromPlanAssignee = fromPlanAssignee;
|
|
@@ -4714,6 +5571,7 @@ exports.importSkillFromUrl = importSkillFromUrl;
|
|
|
4714
5571
|
exports.isIncompleteSignal = isIncompleteSignal;
|
|
4715
5572
|
exports.isMainSkillFile = isMainSkillFile;
|
|
4716
5573
|
exports.isSkillRow = isSkillRow;
|
|
5574
|
+
exports.isValidAgentName = isValidAgentName;
|
|
4717
5575
|
exports.layoutFromPlanSteps = layoutFromPlanSteps;
|
|
4718
5576
|
exports.matchWorkflowScope = matchWorkflowScope;
|
|
4719
5577
|
exports.parseSkillFrontmatter = parseSkillFrontmatter;
|
|
@@ -4721,6 +5579,9 @@ exports.readSkillArchive = readSkillArchive;
|
|
|
4721
5579
|
exports.serializeSkill = serializeSkill;
|
|
4722
5580
|
exports.skillSlug = skillSlug;
|
|
4723
5581
|
exports.stepWindow = stepWindow;
|
|
5582
|
+
exports.stripPersonaPreamble = stripPersonaPreamble;
|
|
5583
|
+
exports.summarizeAgent = summarizeAgent;
|
|
5584
|
+
exports.summarizeCapabilities = summarizeCapabilities;
|
|
4724
5585
|
exports.taskActivityHeadline = taskActivityHeadline;
|
|
4725
5586
|
exports.toPlanAssignee = toPlanAssignee;
|
|
4726
5587
|
exports.toPlanDocumentRef = toPlanDocumentRef;
|
|
@@ -4728,9 +5589,8 @@ exports.toPlanSteps = toPlanSteps;
|
|
|
4728
5589
|
exports.useControllableState = useControllableState;
|
|
4729
5590
|
exports.useWorkflowView = useWorkflowView;
|
|
4730
5591
|
exports.workflowFromSkillMarkdown = workflowFromSkillMarkdown;
|
|
4731
|
-
exports.workflowRunStatusLabel = workflowRunStatusLabel;
|
|
4732
5592
|
exports.workflowStatus = workflowStatus;
|
|
4733
5593
|
exports.workflowToSkillMarkdown = workflowToSkillMarkdown;
|
|
4734
5594
|
exports.workflowTriggerType = workflowTriggerType;
|
|
4735
|
-
//# sourceMappingURL=chunk-
|
|
4736
|
-
//# sourceMappingURL=chunk-
|
|
5595
|
+
//# sourceMappingURL=chunk-ULEDHANM.cjs.map
|
|
5596
|
+
//# sourceMappingURL=chunk-ULEDHANM.cjs.map
|