@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.
@@ -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 AgentCatalogProvider({
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/react: 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."
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 (binding.navigate) {
103
- binding.navigate(href);
109
+ if (hostNavigate) {
110
+ hostNavigate(href);
104
111
  return;
105
112
  }
106
- if (typeof window !== "undefined") window.location.assign(href);
113
+ platformNavigate(href);
107
114
  },
108
- [binding.navigate]
115
+ [hostNavigate, platformNavigate]
109
116
  );
110
117
  return {
111
118
  navigate,
112
- LinkComponent: binding.LinkComponent ?? DefaultLink,
113
- renderModelRef: binding.renderModelRef ?? defaultRenderModelRef,
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/useAgentConsumer.ts
137
- var import_react2 = require("react");
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/react/useAgentConsumer.ts
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, import_react2.useCallback)(
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, import_react2.useRef)(options);
212
+ const optionsRef = (0, import_react3.useRef)(options);
179
213
  optionsRef.current = options;
180
- (0, import_react2.useEffect)(() => {
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
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, import_react2.useCallback)(
300
+ const resetFilters = (0, import_react3.useCallback)(
267
301
  () => catalog.resetConsumerFilters(consumerId),
268
302
  [consumerId, catalog]
269
303
  );
270
- const [isSearching, setIsSearching] = (0, import_react2.useState)(false);
271
- const [matchedIds, setMatchedIds] = (0, import_react2.useState)(null);
272
- const requestSeq = (0, import_react2.useRef)(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, import_react2.useEffect)(() => {
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, import_react2.useEffect)(() => {
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/react/useAgentListCore.ts
343
- var import_react3 = require("react");
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/react/useAgentListCore.ts
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, import_react3.useRef)(false);
653
- const [hoveredAgent, setHoveredAgent] = (0, import_react3.useState)(null);
654
- const hoverLeaveTimerRef = (0, import_react3.useRef)(null);
655
- const defaultTabAppliedRef = (0, import_react3.useRef)(false);
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, import_react3.useMemo)(
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, import_react3.useMemo)(
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, import_react3.useCallback)(() => {
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, import_react3.useCallback)(
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, import_react3.useEffect)(() => {
730
+ (0, import_react4.useEffect)(() => {
697
731
  if (!defaultMandateKey) return;
698
732
  catalog.ensureDefaultRow(defaultMandateKey);
699
733
  }, [catalog, defaultMandateKey]);
700
- (0, import_react3.useEffect)(() => {
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, import_react3.useEffect)(() => {
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, import_react3.useEffect)(() => {
776
+ (0, import_react4.useEffect)(() => {
743
777
  ensureLoaded();
744
778
  }, [ensureLoaded]);
745
- const handleSelectAgent = (0, import_react3.useCallback)(
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, import_react3.useCallback)(
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, import_react3.useCallback)(
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, import_react3.useCallback)(() => {
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, import_react3.useCallback)((onClear) => {
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, import_react3.useEffect)(
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 import_react6 = require("react");
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 import_jsx_runtime2 = require("react/jsx-runtime");
963
+ var import_jsx_runtime3 = require("react/jsx-runtime");
834
964
  function Svg({ children, ...props }) {
835
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
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, import_jsx_runtime2.jsx)(Svg, { ...props, fill: filled ? "currentColor" : "none", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "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" }) });
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, import_jsx_runtime2.jsxs)(Svg, { ...props, children: [
906
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M14 4.1 12 6" }),
907
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m5.1 8-2.9-.8" }),
908
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "m6 12-1.9 2" }),
909
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M7.2 2.2 8 5.1" }),
910
- /* @__PURE__ */ (0, import_jsx_runtime2.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" })
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 import_jsx_runtime3 = require("react/jsx-runtime");
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, import_jsx_runtime3.jsxs)("div", { className: "flex items-center gap-1.5 h-7 px-2 rounded-md bg-muted/40 border border-border/50", children: [
976
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(SearchIcon, { className: "w-3 h-3 text-muted-foreground shrink-0" }),
977
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
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, import_jsx_runtime3.jsx)(
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, import_jsx_runtime3.jsx)(XIcon, { className: "w-3 h-3" })
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, import_jsx_runtime3.jsxs)(
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, import_jsx_runtime3.jsx)(Icon, { className: "w-3 h-3" }),
1018
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: label })
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, import_jsx_runtime3.jsxs)(
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, import_jsx_runtime3.jsx)("span", { className: "flex-1 text-left", children: label }),
1040
- selected && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(CheckIcon, { className: "w-3.5 h-3.5 text-primary shrink-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, import_jsx_runtime3.jsxs)(
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, import_jsx_runtime3.jsx)(
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, import_jsx_runtime3.jsx)(CheckIcon, { className: "w-2.5 h-2.5 text-primary-foreground" })
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, import_jsx_runtime3.jsx)("span", { className: "flex-1 text-left truncate", children: label })
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, import_jsx_runtime3.jsxs)("div", { className: "flex items-center justify-between px-3 py-2 border-b border-border shrink-0", children: [
1077
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-xs font-semibold text-foreground", children: title }),
1078
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
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, import_jsx_runtime3.jsx)(XIcon, { className: "w-3.5 h-3.5" })
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 import_jsx_runtime4 = require("react/jsx-runtime");
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, import_jsx_runtime4.jsxs)("div", { className: "flex flex-col h-full", children: [
1104
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SidePanelHeader, { title: "Categories", onClose }),
1105
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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, import_jsx_runtime4.jsxs)(
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, import_jsx_runtime4.jsx)("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No categories" }) : filtered.map((cat) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
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 import_react4 = require("react");
1144
- var import_jsx_runtime5 = require("react/jsx-runtime");
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, import_react4.useCallback)(
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, import_jsx_runtime5.jsx)(
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, import_jsx_runtime5.jsx)(
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, import_jsx_runtime5.jsx)(
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, import_jsx_runtime5.jsx)(StarIcon, { filled: isFavorite, className: "w-4 h-4 transition-all duration-150" })
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 import_jsx_runtime6 = require("react/jsx-runtime");
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, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col h-full", children: [
1254
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "px-4 pt-4 pb-3", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-start gap-3", children: [
1255
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "w-9 h-9 rounded-lg bg-primary/10 flex items-center justify-center shrink-0" }),
1256
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex-1 min-w-0", children: [
1257
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("h3", { className: "text-sm font-semibold text-foreground leading-tight truncate", children: agent.name || "Untitled" }),
1258
- agent.isFavorite && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex items-center gap-1 mt-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] matrx-agent-star-on", children: "Pinned to favorites" }) })
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, import_jsx_runtime6.jsx)(FavoriteAgentButton, { id: agent.id, variant: "list" })
1336
+ !isDefaultRow && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FavoriteAgentButton, { id: agent.id, variant: "list" })
1261
1337
  ] }) }),
1262
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "h-px bg-border mx-3" }),
1263
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex-1 overflow-y-auto px-4 py-3 space-y-3", children: [
1264
- agent.orchestra && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "rounded-md border border-primary/20 bg-primary/5 px-2.5 py-2", children: [
1265
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5", children: [
1266
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Music4Icon, { className: "w-3.5 h-3.5 text-primary shrink-0" }),
1267
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] font-medium text-primary", children: orchestraLabel(agent.orchestra) })
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, import_jsx_runtime6.jsx)("p", { className: "mt-1 text-xs text-foreground/80 leading-relaxed", children: agent.orchestra.tagline }),
1270
- orchestraDelegatesLine(agent.orchestra) && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)("p", { className: "mt-0.5 text-[11px] text-muted-foreground", children: orchestraDepthLine(agent.orchestra) })
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, import_jsx_runtime6.jsxs)("div", { children: [
1281
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Description" }),
1282
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-xs text-foreground/80 leading-relaxed", children: agent.description })
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, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
1285
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(FolderIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1286
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-xs text-foreground/80", children: agent.category })
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, import_jsx_runtime6.jsxs)("div", { children: [
1289
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
1290
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(TagIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1291
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[11px] font-medium text-muted-foreground", children: "Tags" })
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, import_jsx_runtime6.jsx)("div", { className: "flex flex-wrap gap-1", children: agent.tags.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
1303
- agent.isOwner === false ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(UsersIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GlobeIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1304
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col", children: [
1305
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-xs text-foreground/80 capitalize", children: agent.accessLevel === "owner" ? "You own this" : `Shared \u2014 ${agent.accessLevel}` }),
1306
- agent.sharedByEmail && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "text-[10px] text-muted-foreground", children: [
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, import_jsx_runtime6.jsx)("div", { className: "flex items-center gap-2", children: renderModelRef({
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, import_jsx_runtime6.jsxs)("div", { className: "pt-1 space-y-1", children: [
1317
- updatedDate && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
1318
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1319
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "text-[11px] text-muted-foreground", children: [
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, import_jsx_runtime6.jsxs)("div", { className: "flex items-center gap-2", children: [
1325
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground/50 shrink-0" }),
1326
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "text-[11px] text-muted-foreground/70", children: [
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, import_jsx_runtime6.jsx)("div", { className: "h-px bg-border mx-3 mt-auto" }),
1334
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "px-3 py-2 shrink-0 flex items-center gap-1.5", children: [
1335
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(RocketIcon, { className: "w-3.5 h-3.5" })
1431
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RocketIcon, { className: "w-3.5 h-3.5" })
1356
1432
  }
1357
1433
  ),
1358
- !isDefaultRow && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
1359
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(MessageCircleIcon, { className: "w-3.5 h-3.5" })
1443
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MessageCircleIcon, { className: "w-3.5 h-3.5" })
1368
1444
  }
1369
1445
  ),
1370
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
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, import_jsx_runtime6.jsx)(ExternalLinkIcon, { className: "w-3.5 h-3.5" })
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 import_react5 = require("react");
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 import_jsx_runtime7 = require("react/jsx-runtime");
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, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-1 px-2 pb-1.5 overflow-x-auto matrx-agent-scrollbar-none shrink-0", children: [
1412
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
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, import_jsx_runtime7.jsx)(
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, import_jsx_runtime7.jsx)(
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, import_jsx_runtime7.jsx)(
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, import_jsx_runtime7.jsx)(
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, import_jsx_runtime7.jsx)(RotateCcwIcon, { className: "w-3 h-3" })
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 import_jsx_runtime8 = require("react/jsx-runtime");
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, import_jsx_runtime8.jsx)(
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, import_jsx_runtime8.jsxs)(
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, import_jsx_runtime8.jsx)("span", { children: label }),
1506
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
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 import_jsx_runtime9 = require("react/jsx-runtime");
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, import_jsx_runtime9.jsxs)(
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, import_jsx_runtime9.jsxs)(
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, import_jsx_runtime9.jsx)(StarIcon, { filled: true, className: "w-3 h-3 matrx-agent-star-on shrink-0" }),
1563
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
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, import_jsx_runtime9.jsxs)(
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, import_jsx_runtime9.jsx)(Music4Icon, { className: "w-2.5 h-2.5" }),
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, import_jsx_runtime9.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_runtime9.jsx)("span", { className: "text-[9px] text-muted-foreground bg-muted px-1 py-px rounded shrink-0 ml-auto", children: "shared" }) : null
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, import_jsx_runtime9.jsx)(
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, import_jsx_runtime9.jsx)(ChevronRightIcon, { className: "w-4 h-4" })
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 import_jsx_runtime10 = require("react/jsx-runtime");
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, import_react5.useRef)(null);
1636
- (0, import_react5.useEffect)(() => {
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, import_jsx_runtime10.jsxs)("div", { className: "flex flex-col h-full", children: [
1645
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsxs)(
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, import_jsx_runtime10.jsx)(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
1683
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.drift }),
1684
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)(XIcon, { className: "w-3 h-3" })
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, import_jsx_runtime10.jsxs)(
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, import_jsx_runtime10.jsx)(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
1704
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.error })
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, import_jsx_runtime10.jsx)("div", { className: "h-px bg-border shrink-0" }),
1709
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { ref: listScrollRef, className: "overflow-y-auto flex-1 min-h-0", children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-center py-8 gap-2 text-muted-foreground", children: [
1710
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(LoaderIcon, { className: "w-4 h-4 matrx-agent-spin" }),
1711
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-xs", children: labels.loading })
1712
- ] }) : agents.length === 0 && !pinnedAgent && !defaultAgent ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex flex-col items-center py-8 text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-xs", children: emptyLabel }) }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "py-0.5", children: [
1713
- defaultAgent && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1714
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Default" }) }),
1715
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)("div", { className: "mx-2 my-0.5 h-px bg-border" })
1806
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mx-2 my-0.5 h-px bg-border" })
1731
1807
  ] }),
1732
- pinnedAgent && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
1733
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: labels.currentAgentHeading }) }),
1734
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)("div", { className: "mx-2 my-0.5 h-px bg-border" })
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, import_jsx_runtime10.jsx)(
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, import_jsx_runtime10.jsx)("div", { className: "flex flex-col items-center py-4 text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-xs", children: emptyLabel }) })
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, import_jsx_runtime10.jsx)("div", { className: "h-px bg-border shrink-0" }),
1769
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between px-2.5 py-1.5 shrink-0", children: [
1770
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "text-[10px] text-muted-foreground tabular-nums", children: [
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, import_jsx_runtime10.jsx)(
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 import_jsx_runtime11 = require("react/jsx-runtime");
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, import_jsx_runtime11.jsxs)("div", { className: "flex flex-col", children: [
1803
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
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, import_jsx_runtime11.jsx)(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
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, import_jsx_runtime11.jsx)(
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, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
1828
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
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, import_jsx_runtime11.jsxs)(
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, import_jsx_runtime11.jsx)("div", { className: "overflow-y-auto max-h-[300px]", children: allCategories.filter(
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, import_jsx_runtime11.jsx)(
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, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
1862
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
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, import_jsx_runtime11.jsxs)(
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, import_jsx_runtime11.jsx)("div", { className: "overflow-y-auto max-h-[300px]", children: allTags.filter(
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, import_jsx_runtime11.jsx)(
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 import_jsx_runtime12 = require("react/jsx-runtime");
1975
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1900
1976
  function AgentSortPanel({ consumer, onClose }) {
1901
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex flex-col h-full", children: [
1902
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SidePanelHeader, { title: "Sort By", onClose }),
1903
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "overflow-y-auto flex-1", children: SORT_OPTIONS.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
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 import_jsx_runtime13 = require("react/jsx-runtime");
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, import_jsx_runtime13.jsxs)("div", { className: "flex flex-col h-full", children: [
1928
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SidePanelHeader, { title: "Tags", onClose }),
1929
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
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, import_jsx_runtime13.jsxs)(
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, import_jsx_runtime13.jsx)("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No tags" }) : filtered.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
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 import_jsx_runtime14 = require("react/jsx-runtime");
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, import_react6.useState)(false);
1989
- const [rightPanel, setRightPanel] = (0, import_react6.useState)(null);
1990
- const [catSearch, setCatSearch] = (0, import_react6.useState)("");
1991
- const [tagSearch, setTagSearch] = (0, import_react6.useState)("");
1992
- const [mobileDetailAgent, setMobileDetailAgent] = (0, import_react6.useState)(null);
1993
- const [mobileSubView, setMobileSubView] = (0, import_react6.useState)(null);
1994
- const inputRef = (0, import_react6.useRef)(null);
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, import_react6.useCallback)(
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, import_react6.useCallback)(
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, import_react6.useCallback)(() => {
2150
+ const handleDetailPanelMouseLeave = (0, import_react7.useCallback)(() => {
2075
2151
  coreDetailMouseLeave(() => setRightPanel(null));
2076
2152
  }, [coreDetailMouseLeave]);
2077
- const resolveAgentHref = (0, import_react6.useMemo)(() => {
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, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)("span", { className: "min-w-0 max-w-[200px] flex-1 truncate text-left", children: displayLabel }),
2096
- activeFilterCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "flex items-center justify-center w-4 h-4 rounded-md bg-primary text-primary-foreground text-[10px]", children: activeFilterCount }),
2097
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChevronDownIcon, { className: "w-3 h-3 text-muted-foreground/60" })
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, import_jsx_runtime14.jsx)(Trigger, { asChild: true, children: triggerButton });
2179
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Trigger, { asChild: true, children: triggerButton });
2104
2180
  }
2105
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_design_system6.Tooltip, { ...open ? { open: false } : {}, children: [
2106
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Trigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system6.TooltipTrigger, { asChild: true, children: triggerButton }) }),
2107
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system6.TooltipContent, { side: "bottom", className: "max-w-xs", children: displayLabel })
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsxs)(import_design_system6.Drawer, { open, onOpenChange: handleOpen, children: [
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, import_jsx_runtime14.jsxs)(import_design_system6.DrawerContent, { className: "h-[85dvh]", children: [
2145
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system6.DrawerTitle, { className: "sr-only", children: "Select Agent" }),
2146
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-col overflow-hidden flex-1 min-h-0", children: mobileDetailAgent ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-col overflow-hidden", children: [
2147
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
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, import_jsx_runtime14.jsx)("div", { className: "overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsxs)(import_design_system6.Popover, { open, onOpenChange: handleOpen, modal: false, children: [
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsxs)("div", { className: "flex h-full", children: [
2201
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-col min-w-0 w-[340px] shrink-0 border-r border-border", children: listPanel }),
2202
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
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, import_jsx_runtime14.jsx)("div", { className: "h-full matrx-agent-fade-in", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsx)(
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, import_jsx_runtime14.jsxs)("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 px-6 text-center", children: [
2250
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(MousePointerClickIcon, { className: "h-6 w-6 text-muted-foreground/40" }),
2251
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "text-xs text-muted-foreground/70 leading-relaxed", children: labels.hoverHint })
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 import_react7 = require("react");
2265
- var import_jsx_runtime15 = require("react/jsx-runtime");
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, import_react7.useRef)(null);
2282
- const [catSearch, setCatSearch] = (0, import_react7.useState)("");
2283
- const [tagSearch, setTagSearch] = (0, import_react7.useState)("");
2284
- const [mobileDetailAgent, setMobileDetailAgent] = (0, import_react7.useState)(null);
2285
- const [mobileSubView, setMobileSubView] = (0, import_react7.useState)(null);
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, import_react7.useEffect)(() => {
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, import_jsx_runtime15.jsxs)("div", { className: (0, import_design_system7.cn)("flex h-full min-h-0 flex-col", className), children: [
2330
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
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, import_jsx_runtime15.jsx)(ChevronRightIcon, { className: "h-4 w-4 rotate-180" }),
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, import_jsx_runtime15.jsx)("div", { className: "min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)("div", { className: (0, import_design_system7.cn)("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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, import_jsx_runtime15.jsx)("div", { className: (0, import_design_system7.cn)("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
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,