@ai-matrx/agents 0.8.0 → 0.9.0
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/CHANGELOG.md +135 -0
- package/dist/catalog/index.cjs +50 -3
- package/dist/catalog/index.cjs.map +1 -1
- package/dist/catalog/index.d.cts +11 -615
- package/dist/catalog/index.d.ts +11 -615
- package/dist/catalog/index.js +50 -3
- package/dist/catalog/index.js.map +1 -1
- package/dist/catalog/native/index.cjs +2806 -0
- package/dist/catalog/native/index.cjs.map +1 -0
- package/dist/catalog/native/index.d.cts +655 -0
- package/dist/catalog/native/index.d.ts +655 -0
- package/dist/catalog/native/index.js +2802 -0
- package/dist/catalog/native/index.js.map +1 -0
- package/dist/catalog/react/index.cjs +470 -394
- package/dist/catalog/react/index.cjs.map +1 -1
- package/dist/catalog/react/index.d.cts +64 -26
- package/dist/catalog/react/index.d.ts +64 -26
- package/dist/catalog/react/index.js +354 -278
- package/dist/catalog/react/index.js.map +1 -1
- package/dist/orchestra-BWJM2MWP.d.cts +643 -0
- package/dist/orchestra-BWJM2MWP.d.ts +643 -0
- package/package.json +22 -2
|
@@ -60,20 +60,25 @@ __export(react_exports, {
|
|
|
60
60
|
module.exports = __toCommonJS(react_exports);
|
|
61
61
|
|
|
62
62
|
// catalog/react/context.tsx
|
|
63
|
+
var import_react2 = require("react");
|
|
64
|
+
|
|
65
|
+
// catalog/shared/context.tsx
|
|
63
66
|
var import_react = require("react");
|
|
64
67
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
65
68
|
var AgentCatalogContext = (0, import_react.createContext)(null);
|
|
66
|
-
function
|
|
69
|
+
function AgentCatalogProviderCore({
|
|
67
70
|
catalog,
|
|
71
|
+
platform,
|
|
68
72
|
children,
|
|
69
73
|
...ports
|
|
70
74
|
}) {
|
|
71
75
|
const value = (0, import_react.useMemo)(
|
|
72
|
-
() => ({ catalog, ...ports }),
|
|
76
|
+
() => ({ catalog, platform, ...ports }),
|
|
73
77
|
// The ports are plain values a host declares once; re-binding on identity
|
|
74
78
|
// change is correct and cheap.
|
|
75
79
|
[
|
|
76
80
|
catalog,
|
|
81
|
+
platform,
|
|
77
82
|
ports.navigate,
|
|
78
83
|
ports.LinkComponent,
|
|
79
84
|
ports.renderModelRef,
|
|
@@ -87,7 +92,7 @@ function useBinding() {
|
|
|
87
92
|
const binding = (0, import_react.useContext)(AgentCatalogContext);
|
|
88
93
|
if (!binding) {
|
|
89
94
|
throw new Error(
|
|
90
|
-
"@ai-matrx/agents/catalog
|
|
95
|
+
"@ai-matrx/agents/catalog: no <AgentCatalogProvider> is mounted above this component. Create the catalog once with createAgentCatalog({ client, identity }) and mount <AgentCatalogProvider catalog={catalog}> at the top of your tree."
|
|
91
96
|
);
|
|
92
97
|
}
|
|
93
98
|
return binding;
|
|
@@ -97,29 +102,26 @@ function useAgentCatalog() {
|
|
|
97
102
|
}
|
|
98
103
|
function useAgentCatalogUiPorts() {
|
|
99
104
|
const binding = useBinding();
|
|
105
|
+
const hostNavigate = binding.navigate;
|
|
106
|
+
const platformNavigate = binding.platform.navigate;
|
|
100
107
|
const navigate = (0, import_react.useCallback)(
|
|
101
108
|
(href) => {
|
|
102
|
-
if (
|
|
103
|
-
|
|
109
|
+
if (hostNavigate) {
|
|
110
|
+
hostNavigate(href);
|
|
104
111
|
return;
|
|
105
112
|
}
|
|
106
|
-
|
|
113
|
+
platformNavigate(href);
|
|
107
114
|
},
|
|
108
|
-
[
|
|
115
|
+
[hostNavigate, platformNavigate]
|
|
109
116
|
);
|
|
110
117
|
return {
|
|
111
118
|
navigate,
|
|
112
|
-
LinkComponent: binding.LinkComponent ??
|
|
113
|
-
renderModelRef: binding.renderModelRef ??
|
|
119
|
+
LinkComponent: binding.LinkComponent ?? binding.platform.LinkComponent,
|
|
120
|
+
renderModelRef: binding.renderModelRef ?? binding.platform.renderModelRef,
|
|
114
121
|
openPeek: binding.openPeek,
|
|
115
122
|
popoverContainer: binding.popoverContainer
|
|
116
123
|
};
|
|
117
124
|
}
|
|
118
|
-
var DefaultLink = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { ...props, children });
|
|
119
|
-
var defaultRenderModelRef = ({
|
|
120
|
-
modelId,
|
|
121
|
-
className
|
|
122
|
-
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className, children: modelId });
|
|
123
125
|
function useAgentCatalogState(select) {
|
|
124
126
|
const catalog = useAgentCatalog();
|
|
125
127
|
const getSnapshot = (0, import_react.useCallback)(
|
|
@@ -133,8 +135,40 @@ function useAgentCatalogRows() {
|
|
|
133
135
|
}
|
|
134
136
|
var selectRows = (state) => state.rows;
|
|
135
137
|
|
|
136
|
-
// catalog/react/
|
|
137
|
-
var
|
|
138
|
+
// catalog/react/context.tsx
|
|
139
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
140
|
+
var DefaultLink = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("a", { ...props, children });
|
|
141
|
+
var defaultRenderModelRef = ({
|
|
142
|
+
modelId,
|
|
143
|
+
className
|
|
144
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className, children: modelId });
|
|
145
|
+
var webNavigate = (href) => {
|
|
146
|
+
if (typeof window !== "undefined") window.location.assign(href);
|
|
147
|
+
};
|
|
148
|
+
var WEB_PLATFORM_DEFAULTS = {
|
|
149
|
+
navigate: webNavigate,
|
|
150
|
+
LinkComponent: DefaultLink,
|
|
151
|
+
renderModelRef: defaultRenderModelRef
|
|
152
|
+
};
|
|
153
|
+
function AgentCatalogProvider({
|
|
154
|
+
catalog,
|
|
155
|
+
children,
|
|
156
|
+
...ports
|
|
157
|
+
}) {
|
|
158
|
+
const platform = (0, import_react2.useMemo)(() => WEB_PLATFORM_DEFAULTS, []);
|
|
159
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
160
|
+
AgentCatalogProviderCore,
|
|
161
|
+
{
|
|
162
|
+
catalog,
|
|
163
|
+
platform,
|
|
164
|
+
...ports,
|
|
165
|
+
children
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// catalog/shared/useAgentConsumer.ts
|
|
171
|
+
var import_react3 = require("react");
|
|
138
172
|
|
|
139
173
|
// catalog/types.ts
|
|
140
174
|
function isMandateAgentId(id) {
|
|
@@ -165,19 +199,19 @@ var DEFAULT_AGENT_CONSUMER_STATE = {
|
|
|
165
199
|
deepSearch: false
|
|
166
200
|
};
|
|
167
201
|
|
|
168
|
-
// catalog/
|
|
202
|
+
// catalog/shared/useAgentConsumer.ts
|
|
169
203
|
var DEBOUNCE_MS = 250;
|
|
170
204
|
var MIN_QUERY_LENGTH = 2;
|
|
171
205
|
function useAgentConsumer(consumerId, options) {
|
|
172
206
|
const catalog = useAgentCatalog();
|
|
173
|
-
const selectConsumer = (0,
|
|
207
|
+
const selectConsumer = (0, import_react3.useCallback)(
|
|
174
208
|
(state) => state.consumers[consumerId] ?? DEFAULT_AGENT_CONSUMER_STATE,
|
|
175
209
|
[consumerId]
|
|
176
210
|
);
|
|
177
211
|
const consumer = useAgentCatalogState(selectConsumer);
|
|
178
|
-
const optionsRef = (0,
|
|
212
|
+
const optionsRef = (0, import_react3.useRef)(options);
|
|
179
213
|
optionsRef.current = options;
|
|
180
|
-
(0,
|
|
214
|
+
(0, import_react3.useEffect)(() => {
|
|
181
215
|
const opts = optionsRef.current;
|
|
182
216
|
catalog.registerConsumer(
|
|
183
217
|
consumerId,
|
|
@@ -189,35 +223,35 @@ function useAgentConsumer(consumerId, options) {
|
|
|
189
223
|
}
|
|
190
224
|
};
|
|
191
225
|
}, [consumerId, catalog]);
|
|
192
|
-
const setSearchTerm = (0,
|
|
226
|
+
const setSearchTerm = (0, import_react3.useCallback)(
|
|
193
227
|
(value) => catalog.setConsumerFilter(consumerId, { searchTerm: value }),
|
|
194
228
|
[consumerId, catalog]
|
|
195
229
|
);
|
|
196
|
-
const setDeepSearch = (0,
|
|
230
|
+
const setDeepSearch = (0, import_react3.useCallback)(
|
|
197
231
|
(value) => catalog.setConsumerFilter(consumerId, { deepSearch: value }),
|
|
198
232
|
[consumerId, catalog]
|
|
199
233
|
);
|
|
200
|
-
const setSortBy = (0,
|
|
234
|
+
const setSortBy = (0, import_react3.useCallback)(
|
|
201
235
|
(value) => catalog.setConsumerFilter(consumerId, { sortBy: value }),
|
|
202
236
|
[consumerId, catalog]
|
|
203
237
|
);
|
|
204
|
-
const setTab = (0,
|
|
238
|
+
const setTab = (0, import_react3.useCallback)(
|
|
205
239
|
(value) => catalog.setConsumerFilter(consumerId, { tab: value }),
|
|
206
240
|
[consumerId, catalog]
|
|
207
241
|
);
|
|
208
|
-
const setFavFilter = (0,
|
|
242
|
+
const setFavFilter = (0, import_react3.useCallback)(
|
|
209
243
|
(value) => catalog.setConsumerFilter(consumerId, { favFilter: value }),
|
|
210
244
|
[consumerId, catalog]
|
|
211
245
|
);
|
|
212
|
-
const setArchFilter = (0,
|
|
246
|
+
const setArchFilter = (0, import_react3.useCallback)(
|
|
213
247
|
(value) => catalog.setConsumerFilter(consumerId, { archFilter: value }),
|
|
214
248
|
[consumerId, catalog]
|
|
215
249
|
);
|
|
216
|
-
const setAccessFilter = (0,
|
|
250
|
+
const setAccessFilter = (0, import_react3.useCallback)(
|
|
217
251
|
(value) => catalog.setConsumerFilter(consumerId, { accessFilter: value }),
|
|
218
252
|
[consumerId, catalog]
|
|
219
253
|
);
|
|
220
|
-
const toggleCategory = (0,
|
|
254
|
+
const toggleCategory = (0, import_react3.useCallback)(
|
|
221
255
|
(cat) => {
|
|
222
256
|
const current = catalog.getConsumer(consumerId).includedCats;
|
|
223
257
|
const next = current.includes(cat) ? current.filter((c) => c !== cat) : [...current, cat];
|
|
@@ -225,7 +259,7 @@ function useAgentConsumer(consumerId, options) {
|
|
|
225
259
|
},
|
|
226
260
|
[consumerId, catalog]
|
|
227
261
|
);
|
|
228
|
-
const toggleTag = (0,
|
|
262
|
+
const toggleTag = (0, import_react3.useCallback)(
|
|
229
263
|
(tag) => {
|
|
230
264
|
const current = catalog.getConsumer(consumerId).includedTags;
|
|
231
265
|
const next = current.includes(tag) ? current.filter((t) => t !== tag) : [...current, tag];
|
|
@@ -233,21 +267,21 @@ function useAgentConsumer(consumerId, options) {
|
|
|
233
267
|
},
|
|
234
268
|
[consumerId, catalog]
|
|
235
269
|
);
|
|
236
|
-
const setIncludedCats = (0,
|
|
270
|
+
const setIncludedCats = (0, import_react3.useCallback)(
|
|
237
271
|
(next) => catalog.setConsumerFilter(consumerId, { includedCats: next }),
|
|
238
272
|
[consumerId, catalog]
|
|
239
273
|
);
|
|
240
|
-
const setIncludedTags = (0,
|
|
274
|
+
const setIncludedTags = (0, import_react3.useCallback)(
|
|
241
275
|
(next) => catalog.setConsumerFilter(consumerId, { includedTags: next }),
|
|
242
276
|
[consumerId, catalog]
|
|
243
277
|
);
|
|
244
|
-
const toggleFavoritesFirst = (0,
|
|
278
|
+
const toggleFavoritesFirst = (0, import_react3.useCallback)(
|
|
245
279
|
() => catalog.setConsumerFilter(consumerId, {
|
|
246
280
|
favoritesFirst: !catalog.getConsumer(consumerId).favoritesFirst
|
|
247
281
|
}),
|
|
248
282
|
[consumerId, catalog]
|
|
249
283
|
);
|
|
250
|
-
const loadMoreList = (0,
|
|
284
|
+
const loadMoreList = (0, import_react3.useCallback)(
|
|
251
285
|
() => catalog.setConsumerPage(
|
|
252
286
|
consumerId,
|
|
253
287
|
"list",
|
|
@@ -255,7 +289,7 @@ function useAgentConsumer(consumerId, options) {
|
|
|
255
289
|
),
|
|
256
290
|
[consumerId, catalog]
|
|
257
291
|
);
|
|
258
|
-
const loadMoreShared = (0,
|
|
292
|
+
const loadMoreShared = (0, import_react3.useCallback)(
|
|
259
293
|
() => catalog.setConsumerPage(
|
|
260
294
|
consumerId,
|
|
261
295
|
"shared",
|
|
@@ -263,16 +297,16 @@ function useAgentConsumer(consumerId, options) {
|
|
|
263
297
|
),
|
|
264
298
|
[consumerId, catalog]
|
|
265
299
|
);
|
|
266
|
-
const resetFilters = (0,
|
|
300
|
+
const resetFilters = (0, import_react3.useCallback)(
|
|
267
301
|
() => catalog.resetConsumerFilters(consumerId),
|
|
268
302
|
[consumerId, catalog]
|
|
269
303
|
);
|
|
270
|
-
const [isSearching, setIsSearching] = (0,
|
|
271
|
-
const [matchedIds, setMatchedIds] = (0,
|
|
272
|
-
const requestSeq = (0,
|
|
304
|
+
const [isSearching, setIsSearching] = (0, import_react3.useState)(false);
|
|
305
|
+
const [matchedIds, setMatchedIds] = (0, import_react3.useState)(null);
|
|
306
|
+
const requestSeq = (0, import_react3.useRef)(0);
|
|
273
307
|
const query = consumer.searchTerm;
|
|
274
308
|
const deep = consumer.deepSearch;
|
|
275
|
-
(0,
|
|
309
|
+
(0, import_react3.useEffect)(() => {
|
|
276
310
|
const q = query.trim();
|
|
277
311
|
if (q.length < MIN_QUERY_LENGTH) {
|
|
278
312
|
setIsSearching(false);
|
|
@@ -298,7 +332,7 @@ function useAgentConsumer(consumerId, options) {
|
|
|
298
332
|
}, DEBOUNCE_MS);
|
|
299
333
|
return () => clearTimeout(timer);
|
|
300
334
|
}, [query, deep, catalog]);
|
|
301
|
-
(0,
|
|
335
|
+
(0, import_react3.useEffect)(() => {
|
|
302
336
|
catalog.setConsumerServerSearch(consumerId, {
|
|
303
337
|
matchedIds: matchedIds ?? [],
|
|
304
338
|
isSearching
|
|
@@ -339,8 +373,8 @@ function useAgentConsumer(consumerId, options) {
|
|
|
339
373
|
};
|
|
340
374
|
}
|
|
341
375
|
|
|
342
|
-
// catalog/
|
|
343
|
-
var
|
|
376
|
+
// catalog/shared/useAgentListCore.ts
|
|
377
|
+
var import_react4 = require("react");
|
|
344
378
|
|
|
345
379
|
// catalog/labels.ts
|
|
346
380
|
function agentListEmptyLabel(tab, labels) {
|
|
@@ -628,7 +662,7 @@ var selectTotalFavoriteAgentsCount = memoize1(
|
|
|
628
662
|
(agents) => selectUserTypeAgents(agents).filter((a) => a.isFavorite).length
|
|
629
663
|
);
|
|
630
664
|
|
|
631
|
-
// catalog/
|
|
665
|
+
// catalog/shared/useAgentListCore.ts
|
|
632
666
|
var HOVER_GRACE_MS = 900;
|
|
633
667
|
function coerceVisibleTab(current, allowed, initialTab) {
|
|
634
668
|
if (allowed.length === 0) return null;
|
|
@@ -649,20 +683,20 @@ function useAgentListCore({
|
|
|
649
683
|
}) {
|
|
650
684
|
const catalog = useAgentCatalog();
|
|
651
685
|
const { navigate } = useAgentCatalogUiPorts();
|
|
652
|
-
const hasFetchedRef = (0,
|
|
653
|
-
const [hoveredAgent, setHoveredAgent] = (0,
|
|
654
|
-
const hoverLeaveTimerRef = (0,
|
|
655
|
-
const defaultTabAppliedRef = (0,
|
|
686
|
+
const hasFetchedRef = (0, import_react4.useRef)(false);
|
|
687
|
+
const [hoveredAgent, setHoveredAgent] = (0, import_react4.useState)(null);
|
|
688
|
+
const hoverLeaveTimerRef = (0, import_react4.useRef)(null);
|
|
689
|
+
const defaultTabAppliedRef = (0, import_react4.useRef)(false);
|
|
656
690
|
const consumer = useAgentConsumer(consumerId, { unregisterOnUnmount: true });
|
|
657
691
|
const rows = useAgentCatalogRows();
|
|
658
692
|
const userId = catalog.getUserIdOrNull();
|
|
659
693
|
const ownedCount = selectTotalOwnedAgentsCount(rows);
|
|
660
|
-
const selectFiltered = (0,
|
|
694
|
+
const selectFiltered = (0, import_react4.useMemo)(
|
|
661
695
|
() => makeSelectFilteredAgents(includeSystemInAll),
|
|
662
696
|
[includeSystemInAll]
|
|
663
697
|
);
|
|
664
698
|
const filteredAgents = selectFiltered(rows, consumer.state);
|
|
665
|
-
const excludedAgentIds = (0,
|
|
699
|
+
const excludedAgentIds = (0, import_react4.useMemo)(
|
|
666
700
|
() => new Set(excludeAgentIds),
|
|
667
701
|
[excludeAgentIds]
|
|
668
702
|
);
|
|
@@ -681,23 +715,23 @@ function useAgentListCore({
|
|
|
681
715
|
};
|
|
682
716
|
const isLoading = status === "loading";
|
|
683
717
|
const agentsLoaded = status === "succeeded" || status === "failed";
|
|
684
|
-
const ensureLoaded = (0,
|
|
718
|
+
const ensureLoaded = (0, import_react4.useCallback)(() => {
|
|
685
719
|
if (!hasFetchedRef.current) {
|
|
686
720
|
hasFetchedRef.current = true;
|
|
687
721
|
void catalog.ensureLoaded().catch(() => {
|
|
688
722
|
});
|
|
689
723
|
}
|
|
690
724
|
}, [catalog]);
|
|
691
|
-
const selectDefaultRow = (0,
|
|
725
|
+
const selectDefaultRow = (0, import_react4.useCallback)(
|
|
692
726
|
(state) => defaultMandateKey ? state.defaultRows[defaultMandateKey] : void 0,
|
|
693
727
|
[defaultMandateKey]
|
|
694
728
|
);
|
|
695
729
|
const defaultRow = useAgentCatalogState(selectDefaultRow);
|
|
696
|
-
(0,
|
|
730
|
+
(0, import_react4.useEffect)(() => {
|
|
697
731
|
if (!defaultMandateKey) return;
|
|
698
732
|
catalog.ensureDefaultRow(defaultMandateKey);
|
|
699
733
|
}, [catalog, defaultMandateKey]);
|
|
700
|
-
(0,
|
|
734
|
+
(0, import_react4.useEffect)(() => {
|
|
701
735
|
if (defaultTabAppliedRef.current) return;
|
|
702
736
|
if (initialTab) {
|
|
703
737
|
defaultTabAppliedRef.current = true;
|
|
@@ -730,7 +764,7 @@ function useAgentListCore({
|
|
|
730
764
|
consumer.setTab
|
|
731
765
|
]);
|
|
732
766
|
const allowedTabsKey = visibleTabs ? visibleTabs.join(",") : "";
|
|
733
|
-
(0,
|
|
767
|
+
(0, import_react4.useEffect)(() => {
|
|
734
768
|
if (!allowedTabsKey) return;
|
|
735
769
|
const next = coerceVisibleTab(
|
|
736
770
|
consumer.tab,
|
|
@@ -739,10 +773,10 @@ function useAgentListCore({
|
|
|
739
773
|
);
|
|
740
774
|
if (next) consumer.setTab(next);
|
|
741
775
|
}, [allowedTabsKey, initialTab, consumer.tab, consumer.setTab]);
|
|
742
|
-
(0,
|
|
776
|
+
(0, import_react4.useEffect)(() => {
|
|
743
777
|
ensureLoaded();
|
|
744
778
|
}, [ensureLoaded]);
|
|
745
|
-
const handleSelectAgent = (0,
|
|
779
|
+
const handleSelectAgent = (0, import_react4.useCallback)(
|
|
746
780
|
(agent) => {
|
|
747
781
|
if (onSelect) {
|
|
748
782
|
onSelect(agent.id);
|
|
@@ -759,7 +793,7 @@ function useAgentListCore({
|
|
|
759
793
|
[onSelect, navigateTo, navigate, catalog, consumerId]
|
|
760
794
|
);
|
|
761
795
|
const activeFilterCount = (consumer.sortBy !== "updated-desc" ? 1 : 0) + (consumer.includedCats.length > 0 ? 1 : 0) + (consumer.includedTags.length > 0 ? 1 : 0) + (consumer.favFilter !== "all" ? 1 : 0);
|
|
762
|
-
const handleAgentHover = (0,
|
|
796
|
+
const handleAgentHover = (0, import_react4.useCallback)(
|
|
763
797
|
(agent, panelOpen) => {
|
|
764
798
|
if (panelOpen) return;
|
|
765
799
|
if (hoverLeaveTimerRef.current) {
|
|
@@ -770,7 +804,7 @@ function useAgentListCore({
|
|
|
770
804
|
},
|
|
771
805
|
[]
|
|
772
806
|
);
|
|
773
|
-
const handleAgentHoverEnd = (0,
|
|
807
|
+
const handleAgentHoverEnd = (0, import_react4.useCallback)(
|
|
774
808
|
(agent, onClear) => {
|
|
775
809
|
if (hoveredAgent?.id === agent.id) {
|
|
776
810
|
hoverLeaveTimerRef.current = setTimeout(() => {
|
|
@@ -781,19 +815,19 @@ function useAgentListCore({
|
|
|
781
815
|
},
|
|
782
816
|
[hoveredAgent]
|
|
783
817
|
);
|
|
784
|
-
const handleDetailPanelMouseEnter = (0,
|
|
818
|
+
const handleDetailPanelMouseEnter = (0, import_react4.useCallback)(() => {
|
|
785
819
|
if (hoverLeaveTimerRef.current) {
|
|
786
820
|
clearTimeout(hoverLeaveTimerRef.current);
|
|
787
821
|
hoverLeaveTimerRef.current = null;
|
|
788
822
|
}
|
|
789
823
|
}, []);
|
|
790
|
-
const handleDetailPanelMouseLeave = (0,
|
|
824
|
+
const handleDetailPanelMouseLeave = (0, import_react4.useCallback)((onClear) => {
|
|
791
825
|
hoverLeaveTimerRef.current = setTimeout(() => {
|
|
792
826
|
setHoveredAgent(null);
|
|
793
827
|
onClear();
|
|
794
828
|
}, HOVER_GRACE_MS);
|
|
795
829
|
}, []);
|
|
796
|
-
(0,
|
|
830
|
+
(0, import_react4.useEffect)(
|
|
797
831
|
() => () => {
|
|
798
832
|
if (hoverLeaveTimerRef.current) clearTimeout(hoverLeaveTimerRef.current);
|
|
799
833
|
},
|
|
@@ -824,15 +858,111 @@ var selectStatus = (state) => state.status;
|
|
|
824
858
|
|
|
825
859
|
// catalog/react/AgentListDropdown.tsx
|
|
826
860
|
var import_design_system6 = require("@ai-matrx/design-system");
|
|
827
|
-
var
|
|
861
|
+
var import_react7 = require("react");
|
|
828
862
|
|
|
829
863
|
// catalog/react/primitives.tsx
|
|
830
864
|
var import_design_system = require("@ai-matrx/design-system");
|
|
831
865
|
|
|
866
|
+
// catalog/shared/icon-paths.ts
|
|
867
|
+
var SHAPES = {
|
|
868
|
+
star: {
|
|
869
|
+
paths: [
|
|
870
|
+
"M11.5 3.2a.6.6 0 0 1 1 0l2.3 4.7 5.2.8a.6.6 0 0 1 .3 1l-3.8 3.7.9 5.2a.6.6 0 0 1-.9.6L12 16.8l-4.6 2.4a.6.6 0 0 1-.9-.6l.9-5.2-3.8-3.7a.6.6 0 0 1 .3-1l5.2-.8Z"
|
|
871
|
+
],
|
|
872
|
+
fillable: true
|
|
873
|
+
},
|
|
874
|
+
chevronRight: { paths: ["m9 18 6-6-6-6"] },
|
|
875
|
+
chevronDown: { paths: ["m6 9 6 6 6-6"] },
|
|
876
|
+
search: {
|
|
877
|
+
paths: ["m21 21-4.3-4.3"],
|
|
878
|
+
circles: [{ cx: 11, cy: 11, r: 8 }]
|
|
879
|
+
},
|
|
880
|
+
x: { paths: ["M18 6 6 18", "m6 6 12 12"] },
|
|
881
|
+
check: { paths: ["M20 6 9 17l-5-5"] },
|
|
882
|
+
arrowUpDown: {
|
|
883
|
+
paths: ["m21 16-4 4-4-4", "M17 20V4", "m3 8 4-4 4 4", "M7 4v16"]
|
|
884
|
+
},
|
|
885
|
+
folder: {
|
|
886
|
+
paths: [
|
|
887
|
+
"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"
|
|
888
|
+
]
|
|
889
|
+
},
|
|
890
|
+
tag: {
|
|
891
|
+
paths: [
|
|
892
|
+
"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z"
|
|
893
|
+
],
|
|
894
|
+
circles: [{ cx: 7.5, cy: 7.5, r: 0.5, filled: true }]
|
|
895
|
+
},
|
|
896
|
+
rotateCcw: {
|
|
897
|
+
paths: [
|
|
898
|
+
"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
|
|
899
|
+
"M3 3v5h5"
|
|
900
|
+
]
|
|
901
|
+
},
|
|
902
|
+
loader: { paths: ["M21 12a9 9 0 1 1-6.219-8.56"] },
|
|
903
|
+
alertTriangle: {
|
|
904
|
+
paths: [
|
|
905
|
+
"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
906
|
+
"M12 9v4",
|
|
907
|
+
"M12 17h.01"
|
|
908
|
+
]
|
|
909
|
+
},
|
|
910
|
+
/**
|
|
911
|
+
* The Orchestra marker (Lucide `music-4`): the glyph the Workflow Studio's
|
|
912
|
+
* picker used for a conductor, kept identical so the same agent wears the
|
|
913
|
+
* same mark in every client.
|
|
914
|
+
*/
|
|
915
|
+
music4: {
|
|
916
|
+
paths: ["M9 18V5l12-2v13", "m9 9 12-2"],
|
|
917
|
+
circles: [
|
|
918
|
+
{ cx: 6, cy: 18, r: 3 },
|
|
919
|
+
{ cx: 18, cy: 16, r: 3 }
|
|
920
|
+
]
|
|
921
|
+
},
|
|
922
|
+
clock: {
|
|
923
|
+
paths: ["M12 6v6l4 2"],
|
|
924
|
+
circles: [{ cx: 12, cy: 12, r: 10 }]
|
|
925
|
+
},
|
|
926
|
+
globe: {
|
|
927
|
+
paths: ["M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", "M2 12h20"],
|
|
928
|
+
circles: [{ cx: 12, cy: 12, r: 10 }]
|
|
929
|
+
},
|
|
930
|
+
users: {
|
|
931
|
+
paths: [
|
|
932
|
+
"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",
|
|
933
|
+
"M22 21v-2a4 4 0 0 0-3-3.87",
|
|
934
|
+
"M16 3.13a4 4 0 0 1 0 7.75"
|
|
935
|
+
],
|
|
936
|
+
circles: [{ cx: 9, cy: 7, r: 4 }]
|
|
937
|
+
},
|
|
938
|
+
externalLink: {
|
|
939
|
+
paths: [
|
|
940
|
+
"M15 3h6v6",
|
|
941
|
+
"M10 14 21 3",
|
|
942
|
+
"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
|
|
943
|
+
]
|
|
944
|
+
},
|
|
945
|
+
messageCircle: { paths: ["M7.9 20A9 9 0 1 0 4 16.1L2 22Z"] },
|
|
946
|
+
rocket: {
|
|
947
|
+
paths: [
|
|
948
|
+
"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91 0",
|
|
949
|
+
"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2",
|
|
950
|
+
"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",
|
|
951
|
+
"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"
|
|
952
|
+
]
|
|
953
|
+
},
|
|
954
|
+
circleCheck: {
|
|
955
|
+
paths: ["m9 12 2 2 4-4"],
|
|
956
|
+
circles: [{ cx: 12, cy: 12, r: 10 }]
|
|
957
|
+
}
|
|
958
|
+
};
|
|
959
|
+
var ICON_PATHS = SHAPES;
|
|
960
|
+
var ICON_NAMES = Object.keys(ICON_PATHS);
|
|
961
|
+
|
|
832
962
|
// catalog/react/icons.tsx
|
|
833
|
-
var
|
|
963
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
834
964
|
function Svg({ children, ...props }) {
|
|
835
|
-
return /* @__PURE__ */ (0,
|
|
965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
836
966
|
"svg",
|
|
837
967
|
{
|
|
838
968
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -848,133 +978,79 @@ function Svg({ children, ...props }) {
|
|
|
848
978
|
}
|
|
849
979
|
);
|
|
850
980
|
}
|
|
981
|
+
function Shape({ name, filled }) {
|
|
982
|
+
const shape = ICON_PATHS[name];
|
|
983
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
984
|
+
shape.paths.map((d, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
985
|
+
"path",
|
|
986
|
+
{
|
|
987
|
+
d,
|
|
988
|
+
...filled && shape.fillable ? { fill: "currentColor" } : {}
|
|
989
|
+
},
|
|
990
|
+
`p${index}`
|
|
991
|
+
)),
|
|
992
|
+
(shape.circles ?? []).map((circle, index) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
993
|
+
"circle",
|
|
994
|
+
{
|
|
995
|
+
cx: circle.cx,
|
|
996
|
+
cy: circle.cy,
|
|
997
|
+
r: circle.r,
|
|
998
|
+
...circle.filled ? { fill: "currentColor" } : {}
|
|
999
|
+
},
|
|
1000
|
+
`c${index}`
|
|
1001
|
+
))
|
|
1002
|
+
] });
|
|
1003
|
+
}
|
|
1004
|
+
function makeIcon(name) {
|
|
1005
|
+
return function Icon(props) {
|
|
1006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Shape, { name, filled: false }) });
|
|
1007
|
+
};
|
|
1008
|
+
}
|
|
851
1009
|
function StarIcon({
|
|
852
1010
|
filled = false,
|
|
853
1011
|
...props
|
|
854
1012
|
}) {
|
|
855
|
-
return /* @__PURE__ */ (0,
|
|
856
|
-
}
|
|
857
|
-
function ChevronRightIcon(props) {
|
|
858
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m9 18 6-6-6-6" }) });
|
|
859
|
-
}
|
|
860
|
-
function ChevronDownIcon(props) {
|
|
861
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m6 9 6 6 6-6" }) });
|
|
862
|
-
}
|
|
863
|
-
function SearchIcon(props) {
|
|
864
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
865
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
|
|
866
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m21 21-4.3-4.3" })
|
|
867
|
-
] });
|
|
868
|
-
}
|
|
869
|
-
function XIcon(props) {
|
|
870
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
871
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M18 6 6 18" }),
|
|
872
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m6 6 12 12" })
|
|
873
|
-
] });
|
|
874
|
-
}
|
|
875
|
-
function CheckIcon(props) {
|
|
876
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M20 6 9 17l-5-5" }) });
|
|
877
|
-
}
|
|
878
|
-
function ArrowUpDownIcon(props) {
|
|
879
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
880
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m21 16-4 4-4-4" }),
|
|
881
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M17 20V4" }),
|
|
882
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m3 8 4-4 4 4" }),
|
|
883
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M7 4v16" })
|
|
884
|
-
] });
|
|
885
|
-
}
|
|
886
|
-
function FolderIcon(props) {
|
|
887
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) });
|
|
888
|
-
}
|
|
889
|
-
function TagIcon(props) {
|
|
890
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
891
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z" }),
|
|
892
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor" })
|
|
893
|
-
] });
|
|
894
|
-
}
|
|
895
|
-
function RotateCcwIcon(props) {
|
|
896
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
897
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }),
|
|
898
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M3 3v5h5" })
|
|
899
|
-
] });
|
|
900
|
-
}
|
|
901
|
-
function LoaderIcon(props) {
|
|
902
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) });
|
|
1013
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Svg, { ...props, fill: filled ? "currentColor" : "none", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Shape, { name: "star", filled }) });
|
|
903
1014
|
}
|
|
1015
|
+
var ChevronRightIcon = makeIcon("chevronRight");
|
|
1016
|
+
var ChevronDownIcon = makeIcon("chevronDown");
|
|
1017
|
+
var SearchIcon = makeIcon("search");
|
|
1018
|
+
var XIcon = makeIcon("x");
|
|
1019
|
+
var CheckIcon = makeIcon("check");
|
|
1020
|
+
var ArrowUpDownIcon = makeIcon("arrowUpDown");
|
|
1021
|
+
var FolderIcon = makeIcon("folder");
|
|
1022
|
+
var TagIcon = makeIcon("tag");
|
|
1023
|
+
var RotateCcwIcon = makeIcon("rotateCcw");
|
|
1024
|
+
var LoaderIcon = makeIcon("loader");
|
|
1025
|
+
var UsersIcon = makeIcon("users");
|
|
1026
|
+
var ClockIcon = makeIcon("clock");
|
|
1027
|
+
var GlobeIcon = makeIcon("globe");
|
|
1028
|
+
var ExternalLinkIcon = makeIcon("externalLink");
|
|
1029
|
+
var MessageCircleIcon = makeIcon("messageCircle");
|
|
1030
|
+
var RocketIcon = makeIcon("rocket");
|
|
1031
|
+
var CircleCheckIcon = makeIcon("circleCheck");
|
|
1032
|
+
var AlertTriangleIcon = makeIcon("alertTriangle");
|
|
1033
|
+
var Music4Icon = makeIcon("music4");
|
|
904
1034
|
function MousePointerClickIcon(props) {
|
|
905
|
-
return /* @__PURE__ */ (0,
|
|
906
|
-
/* @__PURE__ */ (0,
|
|
907
|
-
/* @__PURE__ */ (0,
|
|
908
|
-
/* @__PURE__ */ (0,
|
|
909
|
-
/* @__PURE__ */ (0,
|
|
910
|
-
/* @__PURE__ */ (0,
|
|
911
|
-
] });
|
|
912
|
-
}
|
|
913
|
-
function UsersIcon(props) {
|
|
914
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
915
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
|
|
916
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "9", cy: "7", r: "4" }),
|
|
917
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }),
|
|
918
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
919
|
-
] });
|
|
920
|
-
}
|
|
921
|
-
function ClockIcon(props) {
|
|
922
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
923
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
924
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 6v6l4 2" })
|
|
925
|
-
] });
|
|
926
|
-
}
|
|
927
|
-
function GlobeIcon(props) {
|
|
928
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
929
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
930
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
|
|
931
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M2 12h20" })
|
|
932
|
-
] });
|
|
933
|
-
}
|
|
934
|
-
function ExternalLinkIcon(props) {
|
|
935
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
936
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M15 3h6v6" }),
|
|
937
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M10 14 21 3" }),
|
|
938
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" })
|
|
939
|
-
] });
|
|
940
|
-
}
|
|
941
|
-
function MessageCircleIcon(props) {
|
|
942
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Svg, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z" }) });
|
|
943
|
-
}
|
|
944
|
-
function RocketIcon(props) {
|
|
945
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
946
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91 0" }),
|
|
947
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2" }),
|
|
948
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" }),
|
|
949
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" })
|
|
950
|
-
] });
|
|
951
|
-
}
|
|
952
|
-
function AlertTriangleIcon(props) {
|
|
953
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
954
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
|
|
955
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 9v4" }),
|
|
956
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 17h.01" })
|
|
957
|
-
] });
|
|
958
|
-
}
|
|
959
|
-
function Music4Icon(props) {
|
|
960
|
-
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
|
|
961
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M9 18V5l12-2v13" }),
|
|
962
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m9 9 12-2" }),
|
|
963
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "6", cy: "18", r: "3" }),
|
|
964
|
-
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "18", cy: "16", r: "3" })
|
|
1035
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Svg, { ...props, children: [
|
|
1036
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M14 4.1 12 6" }),
|
|
1037
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m5.1 8-2.9-.8" }),
|
|
1038
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6 12-1.9 2" }),
|
|
1039
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M7.2 2.2 8 5.1" }),
|
|
1040
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z" })
|
|
965
1041
|
] });
|
|
966
1042
|
}
|
|
967
1043
|
|
|
968
1044
|
// catalog/react/primitives.tsx
|
|
969
|
-
var
|
|
1045
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
970
1046
|
var SearchInput = ({
|
|
971
1047
|
ref,
|
|
972
1048
|
value,
|
|
973
1049
|
onChange,
|
|
974
1050
|
placeholder
|
|
975
|
-
}) => /* @__PURE__ */ (0,
|
|
976
|
-
/* @__PURE__ */ (0,
|
|
977
|
-
/* @__PURE__ */ (0,
|
|
1051
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center gap-1.5 h-7 px-2 rounded-md bg-muted/40 border border-border/50", children: [
|
|
1052
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SearchIcon, { className: "w-3 h-3 text-muted-foreground shrink-0" }),
|
|
1053
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
978
1054
|
"input",
|
|
979
1055
|
{
|
|
980
1056
|
ref,
|
|
@@ -986,14 +1062,14 @@ var SearchInput = ({
|
|
|
986
1062
|
style: { fontSize: "16px" }
|
|
987
1063
|
}
|
|
988
1064
|
),
|
|
989
|
-
value && /* @__PURE__ */ (0,
|
|
1065
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
990
1066
|
"button",
|
|
991
1067
|
{
|
|
992
1068
|
type: "button",
|
|
993
1069
|
onClick: () => onChange(""),
|
|
994
1070
|
className: "text-muted-foreground hover:text-foreground",
|
|
995
1071
|
"aria-label": "Clear search",
|
|
996
|
-
children: /* @__PURE__ */ (0,
|
|
1072
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(XIcon, { className: "w-3 h-3" })
|
|
997
1073
|
}
|
|
998
1074
|
)
|
|
999
1075
|
] });
|
|
@@ -1004,7 +1080,7 @@ function FilterChip({
|
|
|
1004
1080
|
focused,
|
|
1005
1081
|
onClick
|
|
1006
1082
|
}) {
|
|
1007
|
-
return /* @__PURE__ */ (0,
|
|
1083
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1008
1084
|
"button",
|
|
1009
1085
|
{
|
|
1010
1086
|
type: "button",
|
|
@@ -1014,8 +1090,8 @@ function FilterChip({
|
|
|
1014
1090
|
focused ? "bg-primary/15 text-primary border border-primary/30 ring-1 ring-primary/20" : active ? "bg-primary/10 text-primary border border-primary/20" : "text-muted-foreground hover:text-foreground hover:bg-muted/50 border border-transparent"
|
|
1015
1091
|
),
|
|
1016
1092
|
children: [
|
|
1017
|
-
/* @__PURE__ */ (0,
|
|
1018
|
-
/* @__PURE__ */ (0,
|
|
1093
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Icon, { className: "w-3 h-3" }),
|
|
1094
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: label })
|
|
1019
1095
|
]
|
|
1020
1096
|
}
|
|
1021
1097
|
);
|
|
@@ -1025,7 +1101,7 @@ function OptionRow({
|
|
|
1025
1101
|
selected,
|
|
1026
1102
|
onClick
|
|
1027
1103
|
}) {
|
|
1028
|
-
return /* @__PURE__ */ (0,
|
|
1104
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1029
1105
|
"button",
|
|
1030
1106
|
{
|
|
1031
1107
|
type: "button",
|
|
@@ -1036,8 +1112,8 @@ function OptionRow({
|
|
|
1036
1112
|
selected && "text-primary font-medium"
|
|
1037
1113
|
),
|
|
1038
1114
|
children: [
|
|
1039
|
-
/* @__PURE__ */ (0,
|
|
1040
|
-
selected && /* @__PURE__ */ (0,
|
|
1115
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "flex-1 text-left", children: label }),
|
|
1116
|
+
selected && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckIcon, { className: "w-3.5 h-3.5 text-primary shrink-0" })
|
|
1041
1117
|
]
|
|
1042
1118
|
}
|
|
1043
1119
|
);
|
|
@@ -1047,24 +1123,24 @@ function CheckRow({
|
|
|
1047
1123
|
checked,
|
|
1048
1124
|
onClick
|
|
1049
1125
|
}) {
|
|
1050
|
-
return /* @__PURE__ */ (0,
|
|
1126
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
1051
1127
|
"button",
|
|
1052
1128
|
{
|
|
1053
1129
|
type: "button",
|
|
1054
1130
|
onClick,
|
|
1055
1131
|
className: "flex items-center gap-2 w-full px-3 py-1.5 text-xs hover:bg-muted/50 active:bg-muted/70 transition-colors",
|
|
1056
1132
|
children: [
|
|
1057
|
-
/* @__PURE__ */ (0,
|
|
1133
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1058
1134
|
"div",
|
|
1059
1135
|
{
|
|
1060
1136
|
className: (0, import_design_system.cn)(
|
|
1061
1137
|
"w-3.5 h-3.5 rounded-sm border flex items-center justify-center shrink-0 transition-colors",
|
|
1062
1138
|
checked ? "bg-primary border-primary" : "border-muted-foreground/30"
|
|
1063
1139
|
),
|
|
1064
|
-
children: checked && /* @__PURE__ */ (0,
|
|
1140
|
+
children: checked && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckIcon, { className: "w-2.5 h-2.5 text-primary-foreground" })
|
|
1065
1141
|
}
|
|
1066
1142
|
),
|
|
1067
|
-
/* @__PURE__ */ (0,
|
|
1143
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "flex-1 text-left truncate", children: label })
|
|
1068
1144
|
]
|
|
1069
1145
|
}
|
|
1070
1146
|
);
|
|
@@ -1073,23 +1149,23 @@ function SidePanelHeader({
|
|
|
1073
1149
|
title,
|
|
1074
1150
|
onClose
|
|
1075
1151
|
}) {
|
|
1076
|
-
return /* @__PURE__ */ (0,
|
|
1077
|
-
/* @__PURE__ */ (0,
|
|
1078
|
-
/* @__PURE__ */ (0,
|
|
1152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex items-center justify-between px-3 py-2 border-b border-border shrink-0", children: [
|
|
1153
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-xs font-semibold text-foreground", children: title }),
|
|
1154
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1079
1155
|
"button",
|
|
1080
1156
|
{
|
|
1081
1157
|
type: "button",
|
|
1082
1158
|
onClick: onClose,
|
|
1083
1159
|
className: "w-5 h-5 rounded flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors",
|
|
1084
1160
|
"aria-label": "Close",
|
|
1085
|
-
children: /* @__PURE__ */ (0,
|
|
1161
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(XIcon, { className: "w-3.5 h-3.5" })
|
|
1086
1162
|
}
|
|
1087
1163
|
)
|
|
1088
1164
|
] });
|
|
1089
1165
|
}
|
|
1090
1166
|
|
|
1091
1167
|
// catalog/react/AgentCategoriesPanel.tsx
|
|
1092
|
-
var
|
|
1168
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
1093
1169
|
function AgentCategoriesPanel({
|
|
1094
1170
|
consumer,
|
|
1095
1171
|
allCategories,
|
|
@@ -1100,9 +1176,9 @@ function AgentCategoriesPanel({
|
|
|
1100
1176
|
const filtered = allCategories.filter(
|
|
1101
1177
|
(c) => !search || c.toLowerCase().includes(search.toLowerCase())
|
|
1102
1178
|
);
|
|
1103
|
-
return /* @__PURE__ */ (0,
|
|
1104
|
-
/* @__PURE__ */ (0,
|
|
1105
|
-
/* @__PURE__ */ (0,
|
|
1179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
1180
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(SidePanelHeader, { title: "Categories", onClose }),
|
|
1181
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1106
1182
|
SearchInput,
|
|
1107
1183
|
{
|
|
1108
1184
|
value: search,
|
|
@@ -1110,7 +1186,7 @@ function AgentCategoriesPanel({
|
|
|
1110
1186
|
placeholder: "Filter categories..."
|
|
1111
1187
|
}
|
|
1112
1188
|
) }),
|
|
1113
|
-
consumer.includedCats.length > 0 && /* @__PURE__ */ (0,
|
|
1189
|
+
consumer.includedCats.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
1114
1190
|
"button",
|
|
1115
1191
|
{
|
|
1116
1192
|
type: "button",
|
|
@@ -1123,7 +1199,7 @@ function AgentCategoriesPanel({
|
|
|
1123
1199
|
]
|
|
1124
1200
|
}
|
|
1125
1201
|
),
|
|
1126
|
-
/* @__PURE__ */ (0,
|
|
1202
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No categories" }) : filtered.map((cat) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
1127
1203
|
CheckRow,
|
|
1128
1204
|
{
|
|
1129
1205
|
label: cat,
|
|
@@ -1140,15 +1216,15 @@ var import_design_system3 = require("@ai-matrx/design-system");
|
|
|
1140
1216
|
|
|
1141
1217
|
// catalog/react/FavoriteAgentButton.tsx
|
|
1142
1218
|
var import_design_system2 = require("@ai-matrx/design-system");
|
|
1143
|
-
var
|
|
1144
|
-
var
|
|
1219
|
+
var import_react5 = require("react");
|
|
1220
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
1145
1221
|
function FavoriteAgentButton({
|
|
1146
1222
|
id,
|
|
1147
1223
|
variant = "card",
|
|
1148
1224
|
disabled
|
|
1149
1225
|
}) {
|
|
1150
1226
|
const catalog = useAgentCatalog();
|
|
1151
|
-
const select = (0,
|
|
1227
|
+
const select = (0, import_react5.useCallback)(
|
|
1152
1228
|
(state) => state.byId[id],
|
|
1153
1229
|
[id]
|
|
1154
1230
|
);
|
|
@@ -1163,7 +1239,7 @@ function FavoriteAgentButton({
|
|
|
1163
1239
|
};
|
|
1164
1240
|
const title = isOwner ? isFavorite ? "Remove from favorites" : "Add to favorites" : "Shared \u2014 cannot favorite";
|
|
1165
1241
|
if (variant === "list") {
|
|
1166
|
-
return /* @__PURE__ */ (0,
|
|
1242
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1167
1243
|
"button",
|
|
1168
1244
|
{
|
|
1169
1245
|
type: "button",
|
|
@@ -1176,7 +1252,7 @@ function FavoriteAgentButton({
|
|
|
1176
1252
|
disabled: disabled || !isOwner,
|
|
1177
1253
|
title,
|
|
1178
1254
|
"aria-label": isFavorite ? "Remove from favorites" : "Add to favorites",
|
|
1179
|
-
children: /* @__PURE__ */ (0,
|
|
1255
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1180
1256
|
StarIcon,
|
|
1181
1257
|
{
|
|
1182
1258
|
filled: isFavorite,
|
|
@@ -1189,7 +1265,7 @@ function FavoriteAgentButton({
|
|
|
1189
1265
|
}
|
|
1190
1266
|
);
|
|
1191
1267
|
}
|
|
1192
|
-
return /* @__PURE__ */ (0,
|
|
1268
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
1193
1269
|
"button",
|
|
1194
1270
|
{
|
|
1195
1271
|
type: "button",
|
|
@@ -1203,7 +1279,7 @@ function FavoriteAgentButton({
|
|
|
1203
1279
|
disabled: disabled || !isOwner,
|
|
1204
1280
|
title,
|
|
1205
1281
|
"aria-label": isFavorite ? "Remove from favorites" : "Add to favorites",
|
|
1206
|
-
children: /* @__PURE__ */ (0,
|
|
1282
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(StarIcon, { filled: isFavorite, className: "w-4 h-4 transition-all duration-150" })
|
|
1207
1283
|
}
|
|
1208
1284
|
);
|
|
1209
1285
|
}
|
|
@@ -1236,7 +1312,7 @@ function orchestraDelegatesLine(badge, limit = 3) {
|
|
|
1236
1312
|
}
|
|
1237
1313
|
|
|
1238
1314
|
// catalog/react/AgentDetailCard.tsx
|
|
1239
|
-
var
|
|
1315
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1240
1316
|
function AgentDetailCard({ agent, onSelect }) {
|
|
1241
1317
|
const { LinkComponent, renderModelRef, openPeek } = useAgentCatalogUiPorts();
|
|
1242
1318
|
const updatedDate = agent.updatedAt ? new Date(agent.updatedAt) : null;
|
|
@@ -1250,24 +1326,24 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1250
1326
|
year: "numeric"
|
|
1251
1327
|
});
|
|
1252
1328
|
};
|
|
1253
|
-
return /* @__PURE__ */ (0,
|
|
1254
|
-
/* @__PURE__ */ (0,
|
|
1255
|
-
/* @__PURE__ */ (0,
|
|
1256
|
-
/* @__PURE__ */ (0,
|
|
1257
|
-
/* @__PURE__ */ (0,
|
|
1258
|
-
agent.isFavorite && /* @__PURE__ */ (0,
|
|
1329
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
1330
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "px-4 pt-4 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-start gap-3", children: [
|
|
1331
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "w-9 h-9 rounded-lg bg-primary/10 flex items-center justify-center shrink-0" }),
|
|
1332
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex-1 min-w-0", children: [
|
|
1333
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h3", { className: "text-sm font-semibold text-foreground leading-tight truncate", children: agent.name || "Untitled" }),
|
|
1334
|
+
agent.isFavorite && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center gap-1 mt-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[11px] matrx-agent-star-on", children: "Pinned to favorites" }) })
|
|
1259
1335
|
] }),
|
|
1260
|
-
!isDefaultRow && /* @__PURE__ */ (0,
|
|
1336
|
+
!isDefaultRow && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FavoriteAgentButton, { id: agent.id, variant: "list" })
|
|
1261
1337
|
] }) }),
|
|
1262
|
-
/* @__PURE__ */ (0,
|
|
1263
|
-
/* @__PURE__ */ (0,
|
|
1264
|
-
agent.orchestra && /* @__PURE__ */ (0,
|
|
1265
|
-
/* @__PURE__ */ (0,
|
|
1266
|
-
/* @__PURE__ */ (0,
|
|
1267
|
-
/* @__PURE__ */ (0,
|
|
1338
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "h-px bg-border mx-3" }),
|
|
1339
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex-1 overflow-y-auto px-4 py-3 space-y-3", children: [
|
|
1340
|
+
agent.orchestra && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "rounded-md border border-primary/20 bg-primary/5 px-2.5 py-2", children: [
|
|
1341
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-1.5", children: [
|
|
1342
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Music4Icon, { className: "w-3.5 h-3.5 text-primary shrink-0" }),
|
|
1343
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[11px] font-medium text-primary", children: orchestraLabel(agent.orchestra) })
|
|
1268
1344
|
] }),
|
|
1269
|
-
agent.orchestra.tagline && /* @__PURE__ */ (0,
|
|
1270
|
-
orchestraDelegatesLine(agent.orchestra) && /* @__PURE__ */ (0,
|
|
1345
|
+
agent.orchestra.tagline && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "mt-1 text-xs text-foreground/80 leading-relaxed", children: agent.orchestra.tagline }),
|
|
1346
|
+
orchestraDelegatesLine(agent.orchestra) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1271
1347
|
"p",
|
|
1272
1348
|
{
|
|
1273
1349
|
className: "mt-1 text-[11px] text-muted-foreground",
|
|
@@ -1275,22 +1351,22 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1275
1351
|
children: orchestraDelegatesLine(agent.orchestra)
|
|
1276
1352
|
}
|
|
1277
1353
|
),
|
|
1278
|
-
orchestraDepthLine(agent.orchestra) && /* @__PURE__ */ (0,
|
|
1354
|
+
orchestraDepthLine(agent.orchestra) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "mt-0.5 text-[11px] text-muted-foreground", children: orchestraDepthLine(agent.orchestra) })
|
|
1279
1355
|
] }),
|
|
1280
|
-
agent.description && /* @__PURE__ */ (0,
|
|
1281
|
-
/* @__PURE__ */ (0,
|
|
1282
|
-
/* @__PURE__ */ (0,
|
|
1356
|
+
agent.description && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
1357
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Description" }),
|
|
1358
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-xs text-foreground/80 leading-relaxed", children: agent.description })
|
|
1283
1359
|
] }),
|
|
1284
|
-
agent.category && /* @__PURE__ */ (0,
|
|
1285
|
-
/* @__PURE__ */ (0,
|
|
1286
|
-
/* @__PURE__ */ (0,
|
|
1360
|
+
agent.category && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1361
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FolderIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
|
|
1362
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-xs text-foreground/80", children: agent.category })
|
|
1287
1363
|
] }),
|
|
1288
|
-
agent.tags && agent.tags.length > 0 && /* @__PURE__ */ (0,
|
|
1289
|
-
/* @__PURE__ */ (0,
|
|
1290
|
-
/* @__PURE__ */ (0,
|
|
1291
|
-
/* @__PURE__ */ (0,
|
|
1364
|
+
agent.tags && agent.tags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
1365
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
|
|
1366
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(TagIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
|
|
1367
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[11px] font-medium text-muted-foreground", children: "Tags" })
|
|
1292
1368
|
] }),
|
|
1293
|
-
/* @__PURE__ */ (0,
|
|
1369
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-wrap gap-1", children: agent.tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1294
1370
|
"span",
|
|
1295
1371
|
{
|
|
1296
1372
|
className: "inline-flex items-center h-5 px-1.5 rounded text-[10px] font-medium bg-muted text-muted-foreground",
|
|
@@ -1299,40 +1375,40 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1299
1375
|
tag
|
|
1300
1376
|
)) })
|
|
1301
1377
|
] }),
|
|
1302
|
-
agent.accessLevel && /* @__PURE__ */ (0,
|
|
1303
|
-
agent.isOwner === false ? /* @__PURE__ */ (0,
|
|
1304
|
-
/* @__PURE__ */ (0,
|
|
1305
|
-
/* @__PURE__ */ (0,
|
|
1306
|
-
agent.sharedByEmail && /* @__PURE__ */ (0,
|
|
1378
|
+
agent.accessLevel && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1379
|
+
agent.isOwner === false ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(UsersIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(GlobeIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
|
|
1380
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col", children: [
|
|
1381
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-xs text-foreground/80 capitalize", children: agent.accessLevel === "owner" ? "You own this" : `Shared \u2014 ${agent.accessLevel}` }),
|
|
1382
|
+
agent.sharedByEmail && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
1307
1383
|
"by ",
|
|
1308
1384
|
agent.sharedByEmail
|
|
1309
1385
|
] })
|
|
1310
1386
|
] })
|
|
1311
1387
|
] }),
|
|
1312
|
-
agent.modelId && /* @__PURE__ */ (0,
|
|
1388
|
+
agent.modelId && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center gap-2", children: renderModelRef({
|
|
1313
1389
|
modelId: agent.modelId,
|
|
1314
1390
|
className: "max-w-full text-xs text-foreground/80"
|
|
1315
1391
|
}) }),
|
|
1316
|
-
(updatedDate || createdDate) && /* @__PURE__ */ (0,
|
|
1317
|
-
updatedDate && /* @__PURE__ */ (0,
|
|
1318
|
-
/* @__PURE__ */ (0,
|
|
1319
|
-
/* @__PURE__ */ (0,
|
|
1392
|
+
(updatedDate || createdDate) && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "pt-1 space-y-1", children: [
|
|
1393
|
+
updatedDate && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1394
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
|
|
1395
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "text-[11px] text-muted-foreground", children: [
|
|
1320
1396
|
"Updated ",
|
|
1321
1397
|
formatDate(updatedDate)
|
|
1322
1398
|
] })
|
|
1323
1399
|
] }),
|
|
1324
|
-
createdDate && /* @__PURE__ */ (0,
|
|
1325
|
-
/* @__PURE__ */ (0,
|
|
1326
|
-
/* @__PURE__ */ (0,
|
|
1400
|
+
createdDate && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1401
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground/50 shrink-0" }),
|
|
1402
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "text-[11px] text-muted-foreground/70", children: [
|
|
1327
1403
|
"Created ",
|
|
1328
1404
|
formatDate(createdDate)
|
|
1329
1405
|
] })
|
|
1330
1406
|
] })
|
|
1331
1407
|
] })
|
|
1332
1408
|
] }),
|
|
1333
|
-
/* @__PURE__ */ (0,
|
|
1334
|
-
/* @__PURE__ */ (0,
|
|
1335
|
-
/* @__PURE__ */ (0,
|
|
1409
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "h-px bg-border mx-3 mt-auto" }),
|
|
1410
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "px-3 py-2 shrink-0 flex items-center gap-1.5", children: [
|
|
1411
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1336
1412
|
"button",
|
|
1337
1413
|
{
|
|
1338
1414
|
type: "button",
|
|
@@ -1341,7 +1417,7 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1341
1417
|
children: "Select"
|
|
1342
1418
|
}
|
|
1343
1419
|
),
|
|
1344
|
-
openPeek && /* @__PURE__ */ (0,
|
|
1420
|
+
openPeek && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1345
1421
|
"button",
|
|
1346
1422
|
{
|
|
1347
1423
|
type: "button",
|
|
@@ -1352,11 +1428,11 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1352
1428
|
title: "Sneak Peek",
|
|
1353
1429
|
"aria-label": "Sneak Peek",
|
|
1354
1430
|
className: iconButtonClass,
|
|
1355
|
-
children: /* @__PURE__ */ (0,
|
|
1431
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RocketIcon, { className: "w-3.5 h-3.5" })
|
|
1356
1432
|
}
|
|
1357
1433
|
),
|
|
1358
|
-
!isDefaultRow && /* @__PURE__ */ (0,
|
|
1359
|
-
/* @__PURE__ */ (0,
|
|
1434
|
+
!isDefaultRow && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
1435
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1360
1436
|
LinkComponent,
|
|
1361
1437
|
{
|
|
1362
1438
|
href: `/chat/a/${agent.id}`,
|
|
@@ -1364,10 +1440,10 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1364
1440
|
title: "Open in chat",
|
|
1365
1441
|
"aria-label": "Open in chat",
|
|
1366
1442
|
className: iconButtonClass,
|
|
1367
|
-
children: /* @__PURE__ */ (0,
|
|
1443
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MessageCircleIcon, { className: "w-3.5 h-3.5" })
|
|
1368
1444
|
}
|
|
1369
1445
|
),
|
|
1370
|
-
/* @__PURE__ */ (0,
|
|
1446
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1371
1447
|
LinkComponent,
|
|
1372
1448
|
{
|
|
1373
1449
|
href: `/agents/go/${agent.id}`,
|
|
@@ -1380,7 +1456,7 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1380
1456
|
iconButtonClass,
|
|
1381
1457
|
"hover:text-foreground"
|
|
1382
1458
|
),
|
|
1383
|
-
children: /* @__PURE__ */ (0,
|
|
1459
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ExternalLinkIcon, { className: "w-3.5 h-3.5" })
|
|
1384
1460
|
}
|
|
1385
1461
|
)
|
|
1386
1462
|
] })
|
|
@@ -1390,14 +1466,14 @@ function AgentDetailCard({ agent, onSelect }) {
|
|
|
1390
1466
|
var iconButtonClass = "flex items-center justify-center h-7 w-7 rounded-md border border-border bg-background text-muted-foreground hover:text-primary hover:bg-muted/50 transition-colors shrink-0";
|
|
1391
1467
|
|
|
1392
1468
|
// catalog/react/AgentListContent.tsx
|
|
1393
|
-
var
|
|
1469
|
+
var import_react6 = require("react");
|
|
1394
1470
|
|
|
1395
1471
|
// catalog/react/types.ts
|
|
1396
1472
|
var PANEL_HEIGHT = "528px";
|
|
1397
1473
|
var LIST_MAX_HEIGHT = "min(528px, var(--radix-popper-available-height, 528px))";
|
|
1398
1474
|
|
|
1399
1475
|
// catalog/react/AgentFilterBar.tsx
|
|
1400
|
-
var
|
|
1476
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1401
1477
|
function AgentFilterBar({
|
|
1402
1478
|
consumer,
|
|
1403
1479
|
allCategories,
|
|
@@ -1408,8 +1484,8 @@ function AgentFilterBar({
|
|
|
1408
1484
|
onFilterChipClick,
|
|
1409
1485
|
onReset
|
|
1410
1486
|
}) {
|
|
1411
|
-
return /* @__PURE__ */ (0,
|
|
1412
|
-
/* @__PURE__ */ (0,
|
|
1487
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex items-center gap-1 px-2 pb-1.5 overflow-x-auto matrx-agent-scrollbar-none shrink-0", children: [
|
|
1488
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1413
1489
|
FilterChip,
|
|
1414
1490
|
{
|
|
1415
1491
|
icon: ArrowUpDownIcon,
|
|
@@ -1419,7 +1495,7 @@ function AgentFilterBar({
|
|
|
1419
1495
|
onClick: () => onFilterChipClick("sort")
|
|
1420
1496
|
}
|
|
1421
1497
|
),
|
|
1422
|
-
/* @__PURE__ */ (0,
|
|
1498
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1423
1499
|
FilterChip,
|
|
1424
1500
|
{
|
|
1425
1501
|
icon: StarIcon,
|
|
@@ -1431,7 +1507,7 @@ function AgentFilterBar({
|
|
|
1431
1507
|
}
|
|
1432
1508
|
}
|
|
1433
1509
|
),
|
|
1434
|
-
allCategories.length > 0 && /* @__PURE__ */ (0,
|
|
1510
|
+
allCategories.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1435
1511
|
FilterChip,
|
|
1436
1512
|
{
|
|
1437
1513
|
icon: FolderIcon,
|
|
@@ -1441,7 +1517,7 @@ function AgentFilterBar({
|
|
|
1441
1517
|
onClick: () => onFilterChipClick("categories")
|
|
1442
1518
|
}
|
|
1443
1519
|
),
|
|
1444
|
-
allTags.length > 0 && /* @__PURE__ */ (0,
|
|
1520
|
+
allTags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1445
1521
|
FilterChip,
|
|
1446
1522
|
{
|
|
1447
1523
|
icon: TagIcon,
|
|
@@ -1451,14 +1527,14 @@ function AgentFilterBar({
|
|
|
1451
1527
|
onClick: () => onFilterChipClick("tags")
|
|
1452
1528
|
}
|
|
1453
1529
|
),
|
|
1454
|
-
activeFilterCount > 0 && /* @__PURE__ */ (0,
|
|
1530
|
+
activeFilterCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1455
1531
|
"button",
|
|
1456
1532
|
{
|
|
1457
1533
|
type: "button",
|
|
1458
1534
|
onClick: onReset,
|
|
1459
1535
|
"aria-label": "Reset filters",
|
|
1460
1536
|
className: "flex items-center gap-0.5 h-6 px-1.5 rounded text-[11px] text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors shrink-0",
|
|
1461
|
-
children: /* @__PURE__ */ (0,
|
|
1537
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(RotateCcwIcon, { className: "w-3 h-3" })
|
|
1462
1538
|
}
|
|
1463
1539
|
)
|
|
1464
1540
|
] });
|
|
@@ -1466,7 +1542,7 @@ function AgentFilterBar({
|
|
|
1466
1542
|
|
|
1467
1543
|
// catalog/react/AgentListTabs.tsx
|
|
1468
1544
|
var import_design_system4 = require("@ai-matrx/design-system");
|
|
1469
|
-
var
|
|
1545
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1470
1546
|
function AgentListTabs({
|
|
1471
1547
|
consumer,
|
|
1472
1548
|
tabCounts,
|
|
@@ -1480,7 +1556,7 @@ function AgentListTabs({
|
|
|
1480
1556
|
{ value: "all", label: "All", countKey: "all" },
|
|
1481
1557
|
{ value: "system", label: labels.publicTab, countKey: "system" }
|
|
1482
1558
|
];
|
|
1483
|
-
return /* @__PURE__ */ (0,
|
|
1559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1484
1560
|
"div",
|
|
1485
1561
|
{
|
|
1486
1562
|
className: "flex items-center gap-0.5 px-2 pb-1 overflow-x-auto matrx-agent-scrollbar-none shrink-0",
|
|
@@ -1490,7 +1566,7 @@ function AgentListTabs({
|
|
|
1490
1566
|
const label = value === "system" ? systemTabLabel ?? baseLabel : baseLabel;
|
|
1491
1567
|
const active = consumer.tab === value;
|
|
1492
1568
|
const count = tabCounts[countKey];
|
|
1493
|
-
return /* @__PURE__ */ (0,
|
|
1569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
1494
1570
|
"button",
|
|
1495
1571
|
{
|
|
1496
1572
|
type: "button",
|
|
@@ -1502,8 +1578,8 @@ function AgentListTabs({
|
|
|
1502
1578
|
active ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground hover:bg-muted/50"
|
|
1503
1579
|
),
|
|
1504
1580
|
children: [
|
|
1505
|
-
/* @__PURE__ */ (0,
|
|
1506
|
-
/* @__PURE__ */ (0,
|
|
1581
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: label }),
|
|
1582
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1507
1583
|
"span",
|
|
1508
1584
|
{
|
|
1509
1585
|
className: (0, import_design_system4.cn)("tabular-nums opacity-70", active && "opacity-90"),
|
|
@@ -1521,7 +1597,7 @@ function AgentListTabs({
|
|
|
1521
1597
|
|
|
1522
1598
|
// catalog/react/AgentRow.tsx
|
|
1523
1599
|
var import_design_system5 = require("@ai-matrx/design-system");
|
|
1524
|
-
var
|
|
1600
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1525
1601
|
function AgentRow({
|
|
1526
1602
|
agent,
|
|
1527
1603
|
isActive,
|
|
@@ -1536,7 +1612,7 @@ function AgentRow({
|
|
|
1536
1612
|
const { LinkComponent } = useAgentCatalogUiPorts();
|
|
1537
1613
|
const { labels } = useAgentCatalog();
|
|
1538
1614
|
const rowHref = href ?? `/agents/go/${agent.id}`;
|
|
1539
|
-
return /* @__PURE__ */ (0,
|
|
1615
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1540
1616
|
"div",
|
|
1541
1617
|
{
|
|
1542
1618
|
className: (0, import_design_system5.cn)(
|
|
@@ -1548,7 +1624,7 @@ function AgentRow({
|
|
|
1548
1624
|
onMouseEnter: isMobile ? void 0 : onHover,
|
|
1549
1625
|
onMouseLeave: isMobile ? void 0 : onHoverEnd,
|
|
1550
1626
|
children: [
|
|
1551
|
-
/* @__PURE__ */ (0,
|
|
1627
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1552
1628
|
LinkComponent,
|
|
1553
1629
|
{
|
|
1554
1630
|
href: rowHref,
|
|
@@ -1559,8 +1635,8 @@ function AgentRow({
|
|
|
1559
1635
|
},
|
|
1560
1636
|
className: "flex items-center gap-2 flex-1 min-w-0 px-3 py-2",
|
|
1561
1637
|
children: [
|
|
1562
|
-
agent.isFavorite && /* @__PURE__ */ (0,
|
|
1563
|
-
/* @__PURE__ */ (0,
|
|
1638
|
+
agent.isFavorite && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(StarIcon, { filled: true, className: "w-3 h-3 matrx-agent-star-on shrink-0" }),
|
|
1639
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1564
1640
|
"span",
|
|
1565
1641
|
{
|
|
1566
1642
|
className: (0, import_design_system5.cn)(
|
|
@@ -1570,22 +1646,22 @@ function AgentRow({
|
|
|
1570
1646
|
children: agent.name || "Untitled"
|
|
1571
1647
|
}
|
|
1572
1648
|
),
|
|
1573
|
-
agent.orchestra && /* @__PURE__ */ (0,
|
|
1649
|
+
agent.orchestra && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1574
1650
|
"span",
|
|
1575
1651
|
{
|
|
1576
1652
|
className: "flex shrink-0 items-center gap-0.5 rounded-sm bg-primary/10 px-1 py-px text-[9px] font-medium text-primary",
|
|
1577
1653
|
title: orchestraDelegatesLine(agent.orchestra) ?? orchestraLabel(agent.orchestra),
|
|
1578
1654
|
children: [
|
|
1579
|
-
/* @__PURE__ */ (0,
|
|
1655
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Music4Icon, { className: "w-2.5 h-2.5" }),
|
|
1580
1656
|
agent.orchestra.memberCount
|
|
1581
1657
|
]
|
|
1582
1658
|
}
|
|
1583
1659
|
),
|
|
1584
|
-
agent.agentType === "builtin" ? /* @__PURE__ */ (0,
|
|
1660
|
+
agent.agentType === "builtin" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[9px] font-medium text-primary bg-primary/10 px-1 py-px rounded shrink-0 ml-auto", children: labels.systemBadge }) : agent.isOwner === false ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[9px] text-muted-foreground bg-muted px-1 py-px rounded shrink-0 ml-auto", children: "shared" }) : null
|
|
1585
1661
|
]
|
|
1586
1662
|
}
|
|
1587
1663
|
),
|
|
1588
|
-
isMobile && /* @__PURE__ */ (0,
|
|
1664
|
+
isMobile && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1589
1665
|
"button",
|
|
1590
1666
|
{
|
|
1591
1667
|
type: "button",
|
|
@@ -1595,7 +1671,7 @@ function AgentRow({
|
|
|
1595
1671
|
onDetailPress();
|
|
1596
1672
|
},
|
|
1597
1673
|
className: "flex items-center justify-center w-10 h-full shrink-0 text-muted-foreground/40 active:text-muted-foreground",
|
|
1598
|
-
children: /* @__PURE__ */ (0,
|
|
1674
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ChevronRightIcon, { className: "w-4 h-4" })
|
|
1599
1675
|
}
|
|
1600
1676
|
)
|
|
1601
1677
|
]
|
|
@@ -1604,7 +1680,7 @@ function AgentRow({
|
|
|
1604
1680
|
}
|
|
1605
1681
|
|
|
1606
1682
|
// catalog/react/AgentListContent.tsx
|
|
1607
|
-
var
|
|
1683
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1608
1684
|
function AgentListContent({
|
|
1609
1685
|
agents,
|
|
1610
1686
|
isLoading,
|
|
@@ -1632,8 +1708,8 @@ function AgentListContent({
|
|
|
1632
1708
|
listOpen = false
|
|
1633
1709
|
}) {
|
|
1634
1710
|
const catalog = useAgentCatalog();
|
|
1635
|
-
const listScrollRef = (0,
|
|
1636
|
-
(0,
|
|
1711
|
+
const listScrollRef = (0, import_react6.useRef)(null);
|
|
1712
|
+
(0, import_react6.useEffect)(() => {
|
|
1637
1713
|
if (listOpen && pinnedAgent) {
|
|
1638
1714
|
listScrollRef.current?.scrollTo({ top: 0 });
|
|
1639
1715
|
}
|
|
@@ -1641,8 +1717,8 @@ function AgentListContent({
|
|
|
1641
1717
|
const { labels } = catalog;
|
|
1642
1718
|
const emptyLabel = agentListEmptyLabel(consumer.tab, labels);
|
|
1643
1719
|
const defaultAgent = defaultRow?.row ?? null;
|
|
1644
|
-
return /* @__PURE__ */ (0,
|
|
1645
|
-
/* @__PURE__ */ (0,
|
|
1720
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
1721
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1646
1722
|
SearchInput,
|
|
1647
1723
|
{
|
|
1648
1724
|
ref: inputRef,
|
|
@@ -1651,7 +1727,7 @@ function AgentListContent({
|
|
|
1651
1727
|
placeholder: labels.searchPlaceholder
|
|
1652
1728
|
}
|
|
1653
1729
|
) }),
|
|
1654
|
-
/* @__PURE__ */ (0,
|
|
1730
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1655
1731
|
AgentListTabs,
|
|
1656
1732
|
{
|
|
1657
1733
|
consumer,
|
|
@@ -1660,7 +1736,7 @@ function AgentListContent({
|
|
|
1660
1736
|
visibleTabs
|
|
1661
1737
|
}
|
|
1662
1738
|
),
|
|
1663
|
-
/* @__PURE__ */ (0,
|
|
1739
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1664
1740
|
AgentFilterBar,
|
|
1665
1741
|
{
|
|
1666
1742
|
consumer,
|
|
@@ -1673,46 +1749,46 @@ function AgentListContent({
|
|
|
1673
1749
|
onReset
|
|
1674
1750
|
}
|
|
1675
1751
|
),
|
|
1676
|
-
defaultRow?.drift && /* @__PURE__ */ (0,
|
|
1752
|
+
defaultRow?.drift && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1677
1753
|
"div",
|
|
1678
1754
|
{
|
|
1679
1755
|
role: "status",
|
|
1680
1756
|
className: "matrx-agent-drift-banner mx-2 mb-1.5 flex items-start gap-2 rounded-md px-2 py-1.5 shrink-0",
|
|
1681
1757
|
children: [
|
|
1682
|
-
/* @__PURE__ */ (0,
|
|
1683
|
-
/* @__PURE__ */ (0,
|
|
1684
|
-
/* @__PURE__ */ (0,
|
|
1758
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
|
|
1759
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.drift }),
|
|
1760
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1685
1761
|
"button",
|
|
1686
1762
|
{
|
|
1687
1763
|
type: "button",
|
|
1688
1764
|
"aria-label": "Dismiss",
|
|
1689
1765
|
onClick: () => catalog.dismissDefaultRowDrift(defaultRow.mandateKey),
|
|
1690
1766
|
className: "shrink-0 opacity-70 hover:opacity-100",
|
|
1691
|
-
children: /* @__PURE__ */ (0,
|
|
1767
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(XIcon, { className: "w-3 h-3" })
|
|
1692
1768
|
}
|
|
1693
1769
|
)
|
|
1694
1770
|
]
|
|
1695
1771
|
}
|
|
1696
1772
|
),
|
|
1697
|
-
defaultRow?.error && /* @__PURE__ */ (0,
|
|
1773
|
+
defaultRow?.error && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1698
1774
|
"div",
|
|
1699
1775
|
{
|
|
1700
1776
|
role: "alert",
|
|
1701
1777
|
className: "matrx-agent-drift-banner mx-2 mb-1.5 flex items-start gap-2 rounded-md px-2 py-1.5 shrink-0",
|
|
1702
1778
|
children: [
|
|
1703
|
-
/* @__PURE__ */ (0,
|
|
1704
|
-
/* @__PURE__ */ (0,
|
|
1779
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
|
|
1780
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.error })
|
|
1705
1781
|
]
|
|
1706
1782
|
}
|
|
1707
1783
|
),
|
|
1708
|
-
/* @__PURE__ */ (0,
|
|
1709
|
-
/* @__PURE__ */ (0,
|
|
1710
|
-
/* @__PURE__ */ (0,
|
|
1711
|
-
/* @__PURE__ */ (0,
|
|
1712
|
-
] }) : agents.length === 0 && !pinnedAgent && !defaultAgent ? /* @__PURE__ */ (0,
|
|
1713
|
-
defaultAgent && /* @__PURE__ */ (0,
|
|
1714
|
-
/* @__PURE__ */ (0,
|
|
1715
|
-
/* @__PURE__ */ (0,
|
|
1784
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "h-px bg-border shrink-0" }),
|
|
1785
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { ref: listScrollRef, className: "overflow-y-auto flex-1 min-h-0", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center justify-center py-8 gap-2 text-muted-foreground", children: [
|
|
1786
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(LoaderIcon, { className: "w-4 h-4 matrx-agent-spin" }),
|
|
1787
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-xs", children: labels.loading })
|
|
1788
|
+
] }) : agents.length === 0 && !pinnedAgent && !defaultAgent ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-col items-center py-8 text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-xs", children: emptyLabel }) }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "py-0.5", children: [
|
|
1789
|
+
defaultAgent && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
1790
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Default" }) }),
|
|
1791
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1716
1792
|
AgentRow,
|
|
1717
1793
|
{
|
|
1718
1794
|
agent: defaultAgent,
|
|
@@ -1727,11 +1803,11 @@ function AgentListContent({
|
|
|
1727
1803
|
},
|
|
1728
1804
|
`default-${defaultAgent.id}`
|
|
1729
1805
|
),
|
|
1730
|
-
/* @__PURE__ */ (0,
|
|
1806
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mx-2 my-0.5 h-px bg-border" })
|
|
1731
1807
|
] }),
|
|
1732
|
-
pinnedAgent && /* @__PURE__ */ (0,
|
|
1733
|
-
/* @__PURE__ */ (0,
|
|
1734
|
-
/* @__PURE__ */ (0,
|
|
1808
|
+
pinnedAgent && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
1809
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: labels.currentAgentHeading }) }),
|
|
1810
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1735
1811
|
AgentRow,
|
|
1736
1812
|
{
|
|
1737
1813
|
agent: pinnedAgent,
|
|
@@ -1746,9 +1822,9 @@ function AgentListContent({
|
|
|
1746
1822
|
},
|
|
1747
1823
|
`pinned-${pinnedAgent.id}`
|
|
1748
1824
|
),
|
|
1749
|
-
/* @__PURE__ */ (0,
|
|
1825
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mx-2 my-0.5 h-px bg-border" })
|
|
1750
1826
|
] }),
|
|
1751
|
-
agents.map((agent) => /* @__PURE__ */ (0,
|
|
1827
|
+
agents.map((agent) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1752
1828
|
AgentRow,
|
|
1753
1829
|
{
|
|
1754
1830
|
agent,
|
|
@@ -1763,16 +1839,16 @@ function AgentListContent({
|
|
|
1763
1839
|
},
|
|
1764
1840
|
agent.id
|
|
1765
1841
|
)),
|
|
1766
|
-
agents.length === 0 && (pinnedAgent || defaultAgent) && /* @__PURE__ */ (0,
|
|
1842
|
+
agents.length === 0 && (pinnedAgent || defaultAgent) && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "flex flex-col items-center py-4 text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-xs", children: emptyLabel }) })
|
|
1767
1843
|
] }) }),
|
|
1768
|
-
/* @__PURE__ */ (0,
|
|
1769
|
-
/* @__PURE__ */ (0,
|
|
1770
|
-
/* @__PURE__ */ (0,
|
|
1844
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "h-px bg-border shrink-0" }),
|
|
1845
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center justify-between px-2.5 py-1.5 shrink-0", children: [
|
|
1846
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "text-[10px] text-muted-foreground tabular-nums", children: [
|
|
1771
1847
|
agents.length,
|
|
1772
1848
|
" agent",
|
|
1773
1849
|
agents.length !== 1 ? "s" : ""
|
|
1774
1850
|
] }),
|
|
1775
|
-
consumer.searchTerm && /* @__PURE__ */ (0,
|
|
1851
|
+
consumer.searchTerm && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1776
1852
|
"button",
|
|
1777
1853
|
{
|
|
1778
1854
|
type: "button",
|
|
@@ -1786,7 +1862,7 @@ function AgentListContent({
|
|
|
1786
1862
|
}
|
|
1787
1863
|
|
|
1788
1864
|
// catalog/react/AgentMobileSubView.tsx
|
|
1789
|
-
var
|
|
1865
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1790
1866
|
function AgentMobileSubView({
|
|
1791
1867
|
view,
|
|
1792
1868
|
consumer,
|
|
@@ -1799,20 +1875,20 @@ function AgentMobileSubView({
|
|
|
1799
1875
|
onBack
|
|
1800
1876
|
}) {
|
|
1801
1877
|
const title = view === "sort" ? "Sort" : view === "categories" ? "Categories" : "Tags";
|
|
1802
|
-
return /* @__PURE__ */ (0,
|
|
1803
|
-
/* @__PURE__ */ (0,
|
|
1878
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex flex-col", children: [
|
|
1879
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1804
1880
|
"button",
|
|
1805
1881
|
{
|
|
1806
1882
|
type: "button",
|
|
1807
1883
|
onClick: onBack,
|
|
1808
1884
|
className: "flex items-center gap-1.5 px-3 py-2.5 text-sm font-medium text-primary hover:bg-muted/30 transition-colors border-b border-border shrink-0",
|
|
1809
1885
|
children: [
|
|
1810
|
-
/* @__PURE__ */ (0,
|
|
1886
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
|
|
1811
1887
|
title
|
|
1812
1888
|
]
|
|
1813
1889
|
}
|
|
1814
1890
|
),
|
|
1815
|
-
view === "sort" && SORT_OPTIONS.map((opt) => /* @__PURE__ */ (0,
|
|
1891
|
+
view === "sort" && SORT_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1816
1892
|
OptionRow,
|
|
1817
1893
|
{
|
|
1818
1894
|
label: opt.label,
|
|
@@ -1824,8 +1900,8 @@ function AgentMobileSubView({
|
|
|
1824
1900
|
},
|
|
1825
1901
|
opt.value
|
|
1826
1902
|
)),
|
|
1827
|
-
view === "categories" && /* @__PURE__ */ (0,
|
|
1828
|
-
/* @__PURE__ */ (0,
|
|
1903
|
+
view === "categories" && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
1904
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1829
1905
|
SearchInput,
|
|
1830
1906
|
{
|
|
1831
1907
|
value: catSearch,
|
|
@@ -1833,7 +1909,7 @@ function AgentMobileSubView({
|
|
|
1833
1909
|
placeholder: "Filter categories..."
|
|
1834
1910
|
}
|
|
1835
1911
|
) }),
|
|
1836
|
-
consumer.includedCats.length > 0 && /* @__PURE__ */ (0,
|
|
1912
|
+
consumer.includedCats.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1837
1913
|
"button",
|
|
1838
1914
|
{
|
|
1839
1915
|
type: "button",
|
|
@@ -1846,9 +1922,9 @@ function AgentMobileSubView({
|
|
|
1846
1922
|
]
|
|
1847
1923
|
}
|
|
1848
1924
|
),
|
|
1849
|
-
/* @__PURE__ */ (0,
|
|
1925
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "overflow-y-auto max-h-[300px]", children: allCategories.filter(
|
|
1850
1926
|
(c) => !catSearch || c.toLowerCase().includes(catSearch.toLowerCase())
|
|
1851
|
-
).map((cat) => /* @__PURE__ */ (0,
|
|
1927
|
+
).map((cat) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1852
1928
|
CheckRow,
|
|
1853
1929
|
{
|
|
1854
1930
|
label: cat,
|
|
@@ -1858,8 +1934,8 @@ function AgentMobileSubView({
|
|
|
1858
1934
|
cat
|
|
1859
1935
|
)) })
|
|
1860
1936
|
] }),
|
|
1861
|
-
view === "tags" && /* @__PURE__ */ (0,
|
|
1862
|
-
/* @__PURE__ */ (0,
|
|
1937
|
+
view === "tags" && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
1938
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1863
1939
|
SearchInput,
|
|
1864
1940
|
{
|
|
1865
1941
|
value: tagSearch,
|
|
@@ -1867,7 +1943,7 @@ function AgentMobileSubView({
|
|
|
1867
1943
|
placeholder: "Filter tags..."
|
|
1868
1944
|
}
|
|
1869
1945
|
) }),
|
|
1870
|
-
consumer.includedTags.length > 0 && /* @__PURE__ */ (0,
|
|
1946
|
+
consumer.includedTags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1871
1947
|
"button",
|
|
1872
1948
|
{
|
|
1873
1949
|
type: "button",
|
|
@@ -1880,9 +1956,9 @@ function AgentMobileSubView({
|
|
|
1880
1956
|
]
|
|
1881
1957
|
}
|
|
1882
1958
|
),
|
|
1883
|
-
/* @__PURE__ */ (0,
|
|
1959
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "overflow-y-auto max-h-[300px]", children: allTags.filter(
|
|
1884
1960
|
(t) => !tagSearch || t.toLowerCase().includes(tagSearch.toLowerCase())
|
|
1885
|
-
).map((tag) => /* @__PURE__ */ (0,
|
|
1961
|
+
).map((tag) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1886
1962
|
CheckRow,
|
|
1887
1963
|
{
|
|
1888
1964
|
label: tag,
|
|
@@ -1896,11 +1972,11 @@ function AgentMobileSubView({
|
|
|
1896
1972
|
}
|
|
1897
1973
|
|
|
1898
1974
|
// catalog/react/AgentSortPanel.tsx
|
|
1899
|
-
var
|
|
1975
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1900
1976
|
function AgentSortPanel({ consumer, onClose }) {
|
|
1901
|
-
return /* @__PURE__ */ (0,
|
|
1902
|
-
/* @__PURE__ */ (0,
|
|
1903
|
-
/* @__PURE__ */ (0,
|
|
1977
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
1978
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidePanelHeader, { title: "Sort By", onClose }),
|
|
1979
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "overflow-y-auto flex-1", children: SORT_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1904
1980
|
OptionRow,
|
|
1905
1981
|
{
|
|
1906
1982
|
label: opt.label,
|
|
@@ -1913,7 +1989,7 @@ function AgentSortPanel({ consumer, onClose }) {
|
|
|
1913
1989
|
}
|
|
1914
1990
|
|
|
1915
1991
|
// catalog/react/AgentTagsPanel.tsx
|
|
1916
|
-
var
|
|
1992
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1917
1993
|
function AgentTagsPanel({
|
|
1918
1994
|
consumer,
|
|
1919
1995
|
allTags,
|
|
@@ -1924,9 +2000,9 @@ function AgentTagsPanel({
|
|
|
1924
2000
|
const filtered = allTags.filter(
|
|
1925
2001
|
(t) => !search || t.toLowerCase().includes(search.toLowerCase())
|
|
1926
2002
|
);
|
|
1927
|
-
return /* @__PURE__ */ (0,
|
|
1928
|
-
/* @__PURE__ */ (0,
|
|
1929
|
-
/* @__PURE__ */ (0,
|
|
2003
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-col h-full", children: [
|
|
2004
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SidePanelHeader, { title: "Tags", onClose }),
|
|
2005
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1930
2006
|
SearchInput,
|
|
1931
2007
|
{
|
|
1932
2008
|
value: search,
|
|
@@ -1934,7 +2010,7 @@ function AgentTagsPanel({
|
|
|
1934
2010
|
placeholder: "Filter tags..."
|
|
1935
2011
|
}
|
|
1936
2012
|
) }),
|
|
1937
|
-
consumer.includedTags.length > 0 && /* @__PURE__ */ (0,
|
|
2013
|
+
consumer.includedTags.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1938
2014
|
"button",
|
|
1939
2015
|
{
|
|
1940
2016
|
type: "button",
|
|
@@ -1947,7 +2023,7 @@ function AgentTagsPanel({
|
|
|
1947
2023
|
]
|
|
1948
2024
|
}
|
|
1949
2025
|
),
|
|
1950
|
-
/* @__PURE__ */ (0,
|
|
2026
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No tags" }) : filtered.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1951
2027
|
CheckRow,
|
|
1952
2028
|
{
|
|
1953
2029
|
label: tag,
|
|
@@ -1960,7 +2036,7 @@ function AgentTagsPanel({
|
|
|
1960
2036
|
}
|
|
1961
2037
|
|
|
1962
2038
|
// catalog/react/AgentListDropdown.tsx
|
|
1963
|
-
var
|
|
2039
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1964
2040
|
var CONSUMER_ID = "agent-list-dropdown";
|
|
1965
2041
|
function AgentListDropdown({
|
|
1966
2042
|
onSelect,
|
|
@@ -1985,13 +2061,13 @@ function AgentListDropdown({
|
|
|
1985
2061
|
const isMobile = (0, import_design_system6.useIsMobile)();
|
|
1986
2062
|
const { labels } = useAgentCatalog();
|
|
1987
2063
|
const { popoverContainer } = useAgentCatalogUiPorts();
|
|
1988
|
-
const [open, setOpen] = (0,
|
|
1989
|
-
const [rightPanel, setRightPanel] = (0,
|
|
1990
|
-
const [catSearch, setCatSearch] = (0,
|
|
1991
|
-
const [tagSearch, setTagSearch] = (0,
|
|
1992
|
-
const [mobileDetailAgent, setMobileDetailAgent] = (0,
|
|
1993
|
-
const [mobileSubView, setMobileSubView] = (0,
|
|
1994
|
-
const inputRef = (0,
|
|
2064
|
+
const [open, setOpen] = (0, import_react7.useState)(false);
|
|
2065
|
+
const [rightPanel, setRightPanel] = (0, import_react7.useState)(null);
|
|
2066
|
+
const [catSearch, setCatSearch] = (0, import_react7.useState)("");
|
|
2067
|
+
const [tagSearch, setTagSearch] = (0, import_react7.useState)("");
|
|
2068
|
+
const [mobileDetailAgent, setMobileDetailAgent] = (0, import_react7.useState)(null);
|
|
2069
|
+
const [mobileSubView, setMobileSubView] = (0, import_react7.useState)(null);
|
|
2070
|
+
const inputRef = (0, import_react7.useRef)(null);
|
|
1995
2071
|
const {
|
|
1996
2072
|
agents,
|
|
1997
2073
|
isLoading,
|
|
@@ -2054,7 +2130,7 @@ function AgentListDropdown({
|
|
|
2054
2130
|
setRightPanel(rightPanel === panel ? null : panel);
|
|
2055
2131
|
}
|
|
2056
2132
|
};
|
|
2057
|
-
const handleAgentHover = (0,
|
|
2133
|
+
const handleAgentHover = (0, import_react7.useCallback)(
|
|
2058
2134
|
(agent) => {
|
|
2059
2135
|
if (isMobile) return;
|
|
2060
2136
|
const filterPanelOpen = rightPanel === "sort" || rightPanel === "categories" || rightPanel === "tags";
|
|
@@ -2063,7 +2139,7 @@ function AgentListDropdown({
|
|
|
2063
2139
|
},
|
|
2064
2140
|
[isMobile, rightPanel, coreAgentHover]
|
|
2065
2141
|
);
|
|
2066
|
-
const handleAgentHoverEnd = (0,
|
|
2142
|
+
const handleAgentHoverEnd = (0, import_react7.useCallback)(
|
|
2067
2143
|
(agent) => {
|
|
2068
2144
|
if (isMobile) return;
|
|
2069
2145
|
if (rightPanel !== "detail") return;
|
|
@@ -2071,16 +2147,16 @@ function AgentListDropdown({
|
|
|
2071
2147
|
},
|
|
2072
2148
|
[isMobile, rightPanel, coreAgentHoverEnd]
|
|
2073
2149
|
);
|
|
2074
|
-
const handleDetailPanelMouseLeave = (0,
|
|
2150
|
+
const handleDetailPanelMouseLeave = (0, import_react7.useCallback)(() => {
|
|
2075
2151
|
coreDetailMouseLeave(() => setRightPanel(null));
|
|
2076
2152
|
}, [coreDetailMouseLeave]);
|
|
2077
|
-
const resolveAgentHref = (0,
|
|
2153
|
+
const resolveAgentHref = (0, import_react7.useMemo)(() => {
|
|
2078
2154
|
if (resolveAgentHrefProp) return resolveAgentHrefProp;
|
|
2079
2155
|
if (!navigateTo) return void 0;
|
|
2080
2156
|
return (agent) => navigateTo.replace("{id}", agent.id);
|
|
2081
2157
|
}, [navigateTo, resolveAgentHrefProp]);
|
|
2082
2158
|
const hasRightPanel = rightPanel !== null;
|
|
2083
|
-
const triggerButton = triggerSlot ?? /* @__PURE__ */ (0,
|
|
2159
|
+
const triggerButton = triggerSlot ?? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
2084
2160
|
"button",
|
|
2085
2161
|
{
|
|
2086
2162
|
type: "button",
|
|
@@ -2092,22 +2168,22 @@ function AgentListDropdown({
|
|
|
2092
2168
|
className
|
|
2093
2169
|
),
|
|
2094
2170
|
children: [
|
|
2095
|
-
/* @__PURE__ */ (0,
|
|
2096
|
-
activeFilterCount > 0 && /* @__PURE__ */ (0,
|
|
2097
|
-
/* @__PURE__ */ (0,
|
|
2171
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "min-w-0 max-w-[200px] flex-1 truncate text-left", children: displayLabel }),
|
|
2172
|
+
activeFilterCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "flex items-center justify-center w-4 h-4 rounded-md bg-primary text-primary-foreground text-[10px]", children: activeFilterCount }),
|
|
2173
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronDownIcon, { className: "w-3 h-3 text-muted-foreground/60" })
|
|
2098
2174
|
]
|
|
2099
2175
|
}
|
|
2100
2176
|
);
|
|
2101
2177
|
const wrapTrigger = (Trigger) => {
|
|
2102
2178
|
if (!showAssignedTooltip) {
|
|
2103
|
-
return /* @__PURE__ */ (0,
|
|
2179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Trigger, { asChild: true, children: triggerButton });
|
|
2104
2180
|
}
|
|
2105
|
-
return /* @__PURE__ */ (0,
|
|
2106
|
-
/* @__PURE__ */ (0,
|
|
2107
|
-
/* @__PURE__ */ (0,
|
|
2181
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_design_system6.Tooltip, { ...open ? { open: false } : {}, children: [
|
|
2182
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system6.TooltipTrigger, { asChild: true, children: triggerButton }) }),
|
|
2183
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system6.TooltipContent, { side: "bottom", className: "max-w-xs", children: displayLabel })
|
|
2108
2184
|
] });
|
|
2109
2185
|
};
|
|
2110
|
-
const listPanel = /* @__PURE__ */ (0,
|
|
2186
|
+
const listPanel = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2111
2187
|
AgentListContent,
|
|
2112
2188
|
{
|
|
2113
2189
|
agents,
|
|
@@ -2139,31 +2215,31 @@ function AgentListDropdown({
|
|
|
2139
2215
|
}
|
|
2140
2216
|
);
|
|
2141
2217
|
if (isMobile) {
|
|
2142
|
-
return /* @__PURE__ */ (0,
|
|
2218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_design_system6.Drawer, { open, onOpenChange: handleOpen, children: [
|
|
2143
2219
|
wrapTrigger(import_design_system6.DrawerTrigger),
|
|
2144
|
-
/* @__PURE__ */ (0,
|
|
2145
|
-
/* @__PURE__ */ (0,
|
|
2146
|
-
/* @__PURE__ */ (0,
|
|
2147
|
-
/* @__PURE__ */ (0,
|
|
2220
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_design_system6.DrawerContent, { className: "h-[85dvh]", children: [
|
|
2221
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system6.DrawerTitle, { className: "sr-only", children: "Select Agent" }),
|
|
2222
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex flex-col overflow-hidden flex-1 min-h-0", children: mobileDetailAgent ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col overflow-hidden", children: [
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
2148
2224
|
"button",
|
|
2149
2225
|
{
|
|
2150
2226
|
type: "button",
|
|
2151
2227
|
onClick: () => setMobileDetailAgent(null),
|
|
2152
2228
|
className: "flex items-center gap-1.5 px-3 py-2.5 text-sm font-medium text-primary hover:bg-muted/30 transition-colors border-b border-border shrink-0",
|
|
2153
2229
|
children: [
|
|
2154
|
-
/* @__PURE__ */ (0,
|
|
2230
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
|
|
2155
2231
|
"Back"
|
|
2156
2232
|
]
|
|
2157
2233
|
}
|
|
2158
2234
|
),
|
|
2159
|
-
/* @__PURE__ */ (0,
|
|
2235
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2160
2236
|
AgentDetailCard,
|
|
2161
2237
|
{
|
|
2162
2238
|
agent: mobileDetailAgent,
|
|
2163
2239
|
onSelect: () => handleSelectAgent(mobileDetailAgent)
|
|
2164
2240
|
}
|
|
2165
2241
|
) })
|
|
2166
|
-
] }) : mobileSubView ? /* @__PURE__ */ (0,
|
|
2242
|
+
] }) : mobileSubView ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2167
2243
|
AgentMobileSubView,
|
|
2168
2244
|
{
|
|
2169
2245
|
view: mobileSubView,
|
|
@@ -2184,9 +2260,9 @@ function AgentListDropdown({
|
|
|
2184
2260
|
] })
|
|
2185
2261
|
] });
|
|
2186
2262
|
}
|
|
2187
|
-
return /* @__PURE__ */ (0,
|
|
2263
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_design_system6.Popover, { open, onOpenChange: handleOpen, modal: false, children: [
|
|
2188
2264
|
wrapTrigger(import_design_system6.PopoverTrigger),
|
|
2189
|
-
/* @__PURE__ */ (0,
|
|
2265
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2190
2266
|
import_design_system6.PopoverContent,
|
|
2191
2267
|
{
|
|
2192
2268
|
...contentSide ? { side: contentSide } : {},
|
|
@@ -2197,30 +2273,30 @@ function AgentListDropdown({
|
|
|
2197
2273
|
...popoverContainer ? { container: popoverContainer } : {},
|
|
2198
2274
|
className: "p-0 overflow-hidden w-[680px]",
|
|
2199
2275
|
style: { height: PANEL_HEIGHT, maxHeight: LIST_MAX_HEIGHT },
|
|
2200
|
-
children: /* @__PURE__ */ (0,
|
|
2201
|
-
/* @__PURE__ */ (0,
|
|
2202
|
-
/* @__PURE__ */ (0,
|
|
2276
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex h-full", children: [
|
|
2277
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex flex-col min-w-0 w-[340px] shrink-0 border-r border-border", children: listPanel }),
|
|
2278
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
2203
2279
|
"div",
|
|
2204
2280
|
{
|
|
2205
2281
|
className: "h-full w-[340px] shrink-0 overflow-hidden flex flex-col",
|
|
2206
2282
|
onMouseEnter: rightPanel === "detail" ? handleDetailPanelMouseEnter : void 0,
|
|
2207
2283
|
onMouseLeave: rightPanel === "detail" ? handleDetailPanelMouseLeave : void 0,
|
|
2208
2284
|
children: [
|
|
2209
|
-
rightPanel === "detail" && hoveredAgent && /* @__PURE__ */ (0,
|
|
2285
|
+
rightPanel === "detail" && hoveredAgent && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "h-full matrx-agent-fade-in", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2210
2286
|
AgentDetailCard,
|
|
2211
2287
|
{
|
|
2212
2288
|
agent: hoveredAgent,
|
|
2213
2289
|
onSelect: () => handleSelectAgent(hoveredAgent)
|
|
2214
2290
|
}
|
|
2215
2291
|
) }, hoveredAgent.id),
|
|
2216
|
-
rightPanel === "sort" && /* @__PURE__ */ (0,
|
|
2292
|
+
rightPanel === "sort" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2217
2293
|
AgentSortPanel,
|
|
2218
2294
|
{
|
|
2219
2295
|
consumer,
|
|
2220
2296
|
onClose: () => setRightPanel(null)
|
|
2221
2297
|
}
|
|
2222
2298
|
),
|
|
2223
|
-
rightPanel === "categories" && /* @__PURE__ */ (0,
|
|
2299
|
+
rightPanel === "categories" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2224
2300
|
AgentCategoriesPanel,
|
|
2225
2301
|
{
|
|
2226
2302
|
consumer,
|
|
@@ -2233,7 +2309,7 @@ function AgentListDropdown({
|
|
|
2233
2309
|
}
|
|
2234
2310
|
}
|
|
2235
2311
|
),
|
|
2236
|
-
rightPanel === "tags" && /* @__PURE__ */ (0,
|
|
2312
|
+
rightPanel === "tags" && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
2237
2313
|
AgentTagsPanel,
|
|
2238
2314
|
{
|
|
2239
2315
|
consumer,
|
|
@@ -2246,9 +2322,9 @@ function AgentListDropdown({
|
|
|
2246
2322
|
}
|
|
2247
2323
|
}
|
|
2248
2324
|
),
|
|
2249
|
-
!hasRightPanel && /* @__PURE__ */ (0,
|
|
2250
|
-
/* @__PURE__ */ (0,
|
|
2251
|
-
/* @__PURE__ */ (0,
|
|
2325
|
+
!hasRightPanel && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 px-6 text-center", children: [
|
|
2326
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MousePointerClickIcon, { className: "h-6 w-6 text-muted-foreground/40" }),
|
|
2327
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-xs text-muted-foreground/70 leading-relaxed", children: labels.hoverHint })
|
|
2252
2328
|
] })
|
|
2253
2329
|
]
|
|
2254
2330
|
}
|
|
@@ -2261,8 +2337,8 @@ function AgentListDropdown({
|
|
|
2261
2337
|
|
|
2262
2338
|
// catalog/react/AgentListInlinePicker.tsx
|
|
2263
2339
|
var import_design_system7 = require("@ai-matrx/design-system");
|
|
2264
|
-
var
|
|
2265
|
-
var
|
|
2340
|
+
var import_react8 = require("react");
|
|
2341
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
2266
2342
|
function AgentListInlinePicker({
|
|
2267
2343
|
consumerId,
|
|
2268
2344
|
onSelect,
|
|
@@ -2278,11 +2354,11 @@ function AgentListInlinePicker({
|
|
|
2278
2354
|
excludeAgentIds,
|
|
2279
2355
|
defaultMandateKey
|
|
2280
2356
|
}) {
|
|
2281
|
-
const inputRef = (0,
|
|
2282
|
-
const [catSearch, setCatSearch] = (0,
|
|
2283
|
-
const [tagSearch, setTagSearch] = (0,
|
|
2284
|
-
const [mobileDetailAgent, setMobileDetailAgent] = (0,
|
|
2285
|
-
const [mobileSubView, setMobileSubView] = (0,
|
|
2357
|
+
const inputRef = (0, import_react8.useRef)(null);
|
|
2358
|
+
const [catSearch, setCatSearch] = (0, import_react8.useState)("");
|
|
2359
|
+
const [tagSearch, setTagSearch] = (0, import_react8.useState)("");
|
|
2360
|
+
const [mobileDetailAgent, setMobileDetailAgent] = (0, import_react8.useState)(null);
|
|
2361
|
+
const [mobileSubView, setMobileSubView] = (0, import_react8.useState)(null);
|
|
2286
2362
|
const {
|
|
2287
2363
|
agents,
|
|
2288
2364
|
isLoading,
|
|
@@ -2310,7 +2386,7 @@ function AgentListInlinePicker({
|
|
|
2310
2386
|
...excludeAgentIds ? { excludeAgentIds } : {},
|
|
2311
2387
|
...defaultMandateKey ? { defaultMandateKey } : {}
|
|
2312
2388
|
});
|
|
2313
|
-
(0,
|
|
2389
|
+
(0, import_react8.useEffect)(() => {
|
|
2314
2390
|
ensureLoaded();
|
|
2315
2391
|
if (!autoFocusSearch) return void 0;
|
|
2316
2392
|
const timer = setTimeout(() => inputRef.current?.focus(), 50);
|
|
@@ -2326,20 +2402,20 @@ function AgentListInlinePicker({
|
|
|
2326
2402
|
};
|
|
2327
2403
|
const isMobile = true;
|
|
2328
2404
|
if (mobileDetailAgent) {
|
|
2329
|
-
return /* @__PURE__ */ (0,
|
|
2330
|
-
/* @__PURE__ */ (0,
|
|
2405
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: (0, import_design_system7.cn)("flex h-full min-h-0 flex-col", className), children: [
|
|
2406
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
2331
2407
|
"button",
|
|
2332
2408
|
{
|
|
2333
2409
|
type: "button",
|
|
2334
2410
|
onClick: () => setMobileDetailAgent(null),
|
|
2335
2411
|
className: "flex shrink-0 items-center gap-1.5 border-b border-border px-3 py-2 text-sm font-medium text-primary transition-colors hover:bg-muted/30",
|
|
2336
2412
|
children: [
|
|
2337
|
-
/* @__PURE__ */ (0,
|
|
2413
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChevronRightIcon, { className: "h-4 w-4 rotate-180" }),
|
|
2338
2414
|
"Back"
|
|
2339
2415
|
]
|
|
2340
2416
|
}
|
|
2341
2417
|
),
|
|
2342
|
-
/* @__PURE__ */ (0,
|
|
2418
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2343
2419
|
AgentDetailCard,
|
|
2344
2420
|
{
|
|
2345
2421
|
agent: mobileDetailAgent,
|
|
@@ -2349,7 +2425,7 @@ function AgentListInlinePicker({
|
|
|
2349
2425
|
] });
|
|
2350
2426
|
}
|
|
2351
2427
|
if (mobileSubView) {
|
|
2352
|
-
return /* @__PURE__ */ (0,
|
|
2428
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: (0, import_design_system7.cn)("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2353
2429
|
AgentMobileSubView,
|
|
2354
2430
|
{
|
|
2355
2431
|
view: mobileSubView,
|
|
@@ -2368,7 +2444,7 @@ function AgentListInlinePicker({
|
|
|
2368
2444
|
}
|
|
2369
2445
|
) });
|
|
2370
2446
|
}
|
|
2371
|
-
return /* @__PURE__ */ (0,
|
|
2447
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: (0, import_design_system7.cn)("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
2372
2448
|
AgentListContent,
|
|
2373
2449
|
{
|
|
2374
2450
|
agents,
|