@ai-matrx/agents 0.7.1 → 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.
@@ -2,6 +2,9 @@
2
2
  "use client";
3
3
 
4
4
  // catalog/react/context.tsx
5
+ import { useMemo as useMemo2 } from "react";
6
+
7
+ // catalog/shared/context.tsx
5
8
  import {
6
9
  createContext,
7
10
  useCallback,
@@ -11,17 +14,19 @@ import {
11
14
  } from "react";
12
15
  import { jsx } from "react/jsx-runtime";
13
16
  var AgentCatalogContext = createContext(null);
14
- function AgentCatalogProvider({
17
+ function AgentCatalogProviderCore({
15
18
  catalog,
19
+ platform,
16
20
  children,
17
21
  ...ports
18
22
  }) {
19
23
  const value = useMemo(
20
- () => ({ catalog, ...ports }),
24
+ () => ({ catalog, platform, ...ports }),
21
25
  // The ports are plain values a host declares once; re-binding on identity
22
26
  // change is correct and cheap.
23
27
  [
24
28
  catalog,
29
+ platform,
25
30
  ports.navigate,
26
31
  ports.LinkComponent,
27
32
  ports.renderModelRef,
@@ -35,7 +40,7 @@ function useBinding() {
35
40
  const binding = useContext(AgentCatalogContext);
36
41
  if (!binding) {
37
42
  throw new Error(
38
- "@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."
43
+ "@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."
39
44
  );
40
45
  }
41
46
  return binding;
@@ -45,29 +50,26 @@ function useAgentCatalog() {
45
50
  }
46
51
  function useAgentCatalogUiPorts() {
47
52
  const binding = useBinding();
53
+ const hostNavigate = binding.navigate;
54
+ const platformNavigate = binding.platform.navigate;
48
55
  const navigate = useCallback(
49
56
  (href) => {
50
- if (binding.navigate) {
51
- binding.navigate(href);
57
+ if (hostNavigate) {
58
+ hostNavigate(href);
52
59
  return;
53
60
  }
54
- if (typeof window !== "undefined") window.location.assign(href);
61
+ platformNavigate(href);
55
62
  },
56
- [binding.navigate]
63
+ [hostNavigate, platformNavigate]
57
64
  );
58
65
  return {
59
66
  navigate,
60
- LinkComponent: binding.LinkComponent ?? DefaultLink,
61
- renderModelRef: binding.renderModelRef ?? defaultRenderModelRef,
67
+ LinkComponent: binding.LinkComponent ?? binding.platform.LinkComponent,
68
+ renderModelRef: binding.renderModelRef ?? binding.platform.renderModelRef,
62
69
  openPeek: binding.openPeek,
63
70
  popoverContainer: binding.popoverContainer
64
71
  };
65
72
  }
66
- var DefaultLink = ({ children, ...props }) => /* @__PURE__ */ jsx("a", { ...props, children });
67
- var defaultRenderModelRef = ({
68
- modelId,
69
- className
70
- }) => /* @__PURE__ */ jsx("span", { className, children: modelId });
71
73
  function useAgentCatalogState(select) {
72
74
  const catalog = useAgentCatalog();
73
75
  const getSnapshot = useCallback(
@@ -81,13 +83,52 @@ function useAgentCatalogRows() {
81
83
  }
82
84
  var selectRows = (state) => state.rows;
83
85
 
84
- // catalog/react/useAgentConsumer.ts
86
+ // catalog/react/context.tsx
87
+ import { jsx as jsx2 } from "react/jsx-runtime";
88
+ var DefaultLink = ({ children, ...props }) => /* @__PURE__ */ jsx2("a", { ...props, children });
89
+ var defaultRenderModelRef = ({
90
+ modelId,
91
+ className
92
+ }) => /* @__PURE__ */ jsx2("span", { className, children: modelId });
93
+ var webNavigate = (href) => {
94
+ if (typeof window !== "undefined") window.location.assign(href);
95
+ };
96
+ var WEB_PLATFORM_DEFAULTS = {
97
+ navigate: webNavigate,
98
+ LinkComponent: DefaultLink,
99
+ renderModelRef: defaultRenderModelRef
100
+ };
101
+ function AgentCatalogProvider({
102
+ catalog,
103
+ children,
104
+ ...ports
105
+ }) {
106
+ const platform = useMemo2(() => WEB_PLATFORM_DEFAULTS, []);
107
+ return /* @__PURE__ */ jsx2(
108
+ AgentCatalogProviderCore,
109
+ {
110
+ catalog,
111
+ platform,
112
+ ...ports,
113
+ children
114
+ }
115
+ );
116
+ }
117
+
118
+ // catalog/shared/useAgentConsumer.ts
85
119
  import { useCallback as useCallback2, useEffect, useRef, useState } from "react";
86
120
 
87
121
  // catalog/types.ts
88
122
  function isMandateAgentId(id) {
89
123
  return id.startsWith("mandate:");
90
124
  }
125
+ var SORT_OPTIONS = [
126
+ { value: "updated-desc", label: "Recent" },
127
+ { value: "created-desc", label: "Created" },
128
+ { value: "name-asc", label: "A \u2192 Z" },
129
+ { value: "name-desc", label: "Z \u2192 A" },
130
+ { value: "category-asc", label: "Category" }
131
+ ];
91
132
  var AGENT_NONE_SENTINEL = "__none__";
92
133
  var DEFAULT_AGENT_CONSUMER_STATE = {
93
134
  tab: "mine",
@@ -106,7 +147,7 @@ var DEFAULT_AGENT_CONSUMER_STATE = {
106
147
  deepSearch: false
107
148
  };
108
149
 
109
- // catalog/react/useAgentConsumer.ts
150
+ // catalog/shared/useAgentConsumer.ts
110
151
  var DEBOUNCE_MS = 250;
111
152
  var MIN_QUERY_LENGTH = 2;
112
153
  function useAgentConsumer(consumerId, options) {
@@ -280,11 +321,11 @@ function useAgentConsumer(consumerId, options) {
280
321
  };
281
322
  }
282
323
 
283
- // catalog/react/useAgentListCore.ts
324
+ // catalog/shared/useAgentListCore.ts
284
325
  import {
285
326
  useCallback as useCallback3,
286
327
  useEffect as useEffect2,
287
- useMemo as useMemo2,
328
+ useMemo as useMemo3,
288
329
  useRef as useRef2,
289
330
  useState as useState2
290
331
  } from "react";
@@ -575,7 +616,7 @@ var selectTotalFavoriteAgentsCount = memoize1(
575
616
  (agents) => selectUserTypeAgents(agents).filter((a) => a.isFavorite).length
576
617
  );
577
618
 
578
- // catalog/react/useAgentListCore.ts
619
+ // catalog/shared/useAgentListCore.ts
579
620
  var HOVER_GRACE_MS = 900;
580
621
  function coerceVisibleTab(current, allowed, initialTab) {
581
622
  if (allowed.length === 0) return null;
@@ -604,12 +645,12 @@ function useAgentListCore({
604
645
  const rows = useAgentCatalogRows();
605
646
  const userId = catalog.getUserIdOrNull();
606
647
  const ownedCount = selectTotalOwnedAgentsCount(rows);
607
- const selectFiltered = useMemo2(
648
+ const selectFiltered = useMemo3(
608
649
  () => makeSelectFilteredAgents(includeSystemInAll),
609
650
  [includeSystemInAll]
610
651
  );
611
652
  const filteredAgents = selectFiltered(rows, consumer.state);
612
- const excludedAgentIds = useMemo2(
653
+ const excludedAgentIds = useMemo3(
613
654
  () => new Set(excludeAgentIds),
614
655
  [excludeAgentIds]
615
656
  );
@@ -784,15 +825,111 @@ import {
784
825
  TooltipTrigger,
785
826
  useIsMobile
786
827
  } from "@ai-matrx/design-system";
787
- import { useCallback as useCallback5, useMemo as useMemo3, useRef as useRef4, useState as useState3 } from "react";
828
+ import { useCallback as useCallback5, useMemo as useMemo4, useRef as useRef4, useState as useState3 } from "react";
788
829
 
789
830
  // catalog/react/primitives.tsx
790
831
  import { cn } from "@ai-matrx/design-system";
791
832
 
833
+ // catalog/shared/icon-paths.ts
834
+ var SHAPES = {
835
+ star: {
836
+ paths: [
837
+ "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"
838
+ ],
839
+ fillable: true
840
+ },
841
+ chevronRight: { paths: ["m9 18 6-6-6-6"] },
842
+ chevronDown: { paths: ["m6 9 6 6 6-6"] },
843
+ search: {
844
+ paths: ["m21 21-4.3-4.3"],
845
+ circles: [{ cx: 11, cy: 11, r: 8 }]
846
+ },
847
+ x: { paths: ["M18 6 6 18", "m6 6 12 12"] },
848
+ check: { paths: ["M20 6 9 17l-5-5"] },
849
+ arrowUpDown: {
850
+ paths: ["m21 16-4 4-4-4", "M17 20V4", "m3 8 4-4 4 4", "M7 4v16"]
851
+ },
852
+ folder: {
853
+ paths: [
854
+ "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"
855
+ ]
856
+ },
857
+ tag: {
858
+ paths: [
859
+ "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"
860
+ ],
861
+ circles: [{ cx: 7.5, cy: 7.5, r: 0.5, filled: true }]
862
+ },
863
+ rotateCcw: {
864
+ paths: [
865
+ "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",
866
+ "M3 3v5h5"
867
+ ]
868
+ },
869
+ loader: { paths: ["M21 12a9 9 0 1 1-6.219-8.56"] },
870
+ alertTriangle: {
871
+ paths: [
872
+ "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",
873
+ "M12 9v4",
874
+ "M12 17h.01"
875
+ ]
876
+ },
877
+ /**
878
+ * The Orchestra marker (Lucide `music-4`): the glyph the Workflow Studio's
879
+ * picker used for a conductor, kept identical so the same agent wears the
880
+ * same mark in every client.
881
+ */
882
+ music4: {
883
+ paths: ["M9 18V5l12-2v13", "m9 9 12-2"],
884
+ circles: [
885
+ { cx: 6, cy: 18, r: 3 },
886
+ { cx: 18, cy: 16, r: 3 }
887
+ ]
888
+ },
889
+ clock: {
890
+ paths: ["M12 6v6l4 2"],
891
+ circles: [{ cx: 12, cy: 12, r: 10 }]
892
+ },
893
+ globe: {
894
+ paths: ["M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", "M2 12h20"],
895
+ circles: [{ cx: 12, cy: 12, r: 10 }]
896
+ },
897
+ users: {
898
+ paths: [
899
+ "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",
900
+ "M22 21v-2a4 4 0 0 0-3-3.87",
901
+ "M16 3.13a4 4 0 0 1 0 7.75"
902
+ ],
903
+ circles: [{ cx: 9, cy: 7, r: 4 }]
904
+ },
905
+ externalLink: {
906
+ paths: [
907
+ "M15 3h6v6",
908
+ "M10 14 21 3",
909
+ "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
910
+ ]
911
+ },
912
+ messageCircle: { paths: ["M7.9 20A9 9 0 1 0 4 16.1L2 22Z"] },
913
+ rocket: {
914
+ paths: [
915
+ "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",
916
+ "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",
917
+ "M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",
918
+ "M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"
919
+ ]
920
+ },
921
+ circleCheck: {
922
+ paths: ["m9 12 2 2 4-4"],
923
+ circles: [{ cx: 12, cy: 12, r: 10 }]
924
+ }
925
+ };
926
+ var ICON_PATHS = SHAPES;
927
+ var ICON_NAMES = Object.keys(ICON_PATHS);
928
+
792
929
  // catalog/react/icons.tsx
793
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
930
+ import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
794
931
  function Svg({ children, ...props }) {
795
- return /* @__PURE__ */ jsx2(
932
+ return /* @__PURE__ */ jsx3(
796
933
  "svg",
797
934
  {
798
935
  xmlns: "http://www.w3.org/2000/svg",
@@ -808,125 +945,79 @@ function Svg({ children, ...props }) {
808
945
  }
809
946
  );
810
947
  }
948
+ function Shape({ name, filled }) {
949
+ const shape = ICON_PATHS[name];
950
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
951
+ shape.paths.map((d, index) => /* @__PURE__ */ jsx3(
952
+ "path",
953
+ {
954
+ d,
955
+ ...filled && shape.fillable ? { fill: "currentColor" } : {}
956
+ },
957
+ `p${index}`
958
+ )),
959
+ (shape.circles ?? []).map((circle, index) => /* @__PURE__ */ jsx3(
960
+ "circle",
961
+ {
962
+ cx: circle.cx,
963
+ cy: circle.cy,
964
+ r: circle.r,
965
+ ...circle.filled ? { fill: "currentColor" } : {}
966
+ },
967
+ `c${index}`
968
+ ))
969
+ ] });
970
+ }
971
+ function makeIcon(name) {
972
+ return function Icon(props) {
973
+ return /* @__PURE__ */ jsx3(Svg, { ...props, children: /* @__PURE__ */ jsx3(Shape, { name, filled: false }) });
974
+ };
975
+ }
811
976
  function StarIcon({
812
977
  filled = false,
813
978
  ...props
814
979
  }) {
815
- return /* @__PURE__ */ jsx2(Svg, { ...props, fill: filled ? "currentColor" : "none", children: /* @__PURE__ */ jsx2("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" }) });
816
- }
817
- function ChevronRightIcon(props) {
818
- return /* @__PURE__ */ jsx2(Svg, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "m9 18 6-6-6-6" }) });
819
- }
820
- function ChevronDownIcon(props) {
821
- return /* @__PURE__ */ jsx2(Svg, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "m6 9 6 6 6-6" }) });
822
- }
823
- function SearchIcon(props) {
824
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
825
- /* @__PURE__ */ jsx2("circle", { cx: "11", cy: "11", r: "8" }),
826
- /* @__PURE__ */ jsx2("path", { d: "m21 21-4.3-4.3" })
827
- ] });
828
- }
829
- function XIcon(props) {
830
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
831
- /* @__PURE__ */ jsx2("path", { d: "M18 6 6 18" }),
832
- /* @__PURE__ */ jsx2("path", { d: "m6 6 12 12" })
833
- ] });
834
- }
835
- function CheckIcon(props) {
836
- return /* @__PURE__ */ jsx2(Svg, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M20 6 9 17l-5-5" }) });
837
- }
838
- function ArrowUpDownIcon(props) {
839
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
840
- /* @__PURE__ */ jsx2("path", { d: "m21 16-4 4-4-4" }),
841
- /* @__PURE__ */ jsx2("path", { d: "M17 20V4" }),
842
- /* @__PURE__ */ jsx2("path", { d: "m3 8 4-4 4 4" }),
843
- /* @__PURE__ */ jsx2("path", { d: "M7 4v16" })
844
- ] });
845
- }
846
- function FolderIcon(props) {
847
- return /* @__PURE__ */ jsx2(Svg, { ...props, children: /* @__PURE__ */ jsx2("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" }) });
848
- }
849
- function TagIcon(props) {
850
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
851
- /* @__PURE__ */ jsx2("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" }),
852
- /* @__PURE__ */ jsx2("circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor" })
853
- ] });
854
- }
855
- function RotateCcwIcon(props) {
856
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
857
- /* @__PURE__ */ jsx2("path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }),
858
- /* @__PURE__ */ jsx2("path", { d: "M3 3v5h5" })
859
- ] });
860
- }
861
- function LoaderIcon(props) {
862
- return /* @__PURE__ */ jsx2(Svg, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) });
980
+ return /* @__PURE__ */ jsx3(Svg, { ...props, fill: filled ? "currentColor" : "none", children: /* @__PURE__ */ jsx3(Shape, { name: "star", filled }) });
863
981
  }
982
+ var ChevronRightIcon = makeIcon("chevronRight");
983
+ var ChevronDownIcon = makeIcon("chevronDown");
984
+ var SearchIcon = makeIcon("search");
985
+ var XIcon = makeIcon("x");
986
+ var CheckIcon = makeIcon("check");
987
+ var ArrowUpDownIcon = makeIcon("arrowUpDown");
988
+ var FolderIcon = makeIcon("folder");
989
+ var TagIcon = makeIcon("tag");
990
+ var RotateCcwIcon = makeIcon("rotateCcw");
991
+ var LoaderIcon = makeIcon("loader");
992
+ var UsersIcon = makeIcon("users");
993
+ var ClockIcon = makeIcon("clock");
994
+ var GlobeIcon = makeIcon("globe");
995
+ var ExternalLinkIcon = makeIcon("externalLink");
996
+ var MessageCircleIcon = makeIcon("messageCircle");
997
+ var RocketIcon = makeIcon("rocket");
998
+ var CircleCheckIcon = makeIcon("circleCheck");
999
+ var AlertTriangleIcon = makeIcon("alertTriangle");
1000
+ var Music4Icon = makeIcon("music4");
864
1001
  function MousePointerClickIcon(props) {
865
1002
  return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
866
- /* @__PURE__ */ jsx2("path", { d: "M14 4.1 12 6" }),
867
- /* @__PURE__ */ jsx2("path", { d: "m5.1 8-2.9-.8" }),
868
- /* @__PURE__ */ jsx2("path", { d: "m6 12-1.9 2" }),
869
- /* @__PURE__ */ jsx2("path", { d: "M7.2 2.2 8 5.1" }),
870
- /* @__PURE__ */ jsx2("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" })
871
- ] });
872
- }
873
- function UsersIcon(props) {
874
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
875
- /* @__PURE__ */ jsx2("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
876
- /* @__PURE__ */ jsx2("circle", { cx: "9", cy: "7", r: "4" }),
877
- /* @__PURE__ */ jsx2("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }),
878
- /* @__PURE__ */ jsx2("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
879
- ] });
880
- }
881
- function ClockIcon(props) {
882
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
883
- /* @__PURE__ */ jsx2("circle", { cx: "12", cy: "12", r: "10" }),
884
- /* @__PURE__ */ jsx2("path", { d: "M12 6v6l4 2" })
885
- ] });
886
- }
887
- function GlobeIcon(props) {
888
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
889
- /* @__PURE__ */ jsx2("circle", { cx: "12", cy: "12", r: "10" }),
890
- /* @__PURE__ */ jsx2("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
891
- /* @__PURE__ */ jsx2("path", { d: "M2 12h20" })
892
- ] });
893
- }
894
- function ExternalLinkIcon(props) {
895
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
896
- /* @__PURE__ */ jsx2("path", { d: "M15 3h6v6" }),
897
- /* @__PURE__ */ jsx2("path", { d: "M10 14 21 3" }),
898
- /* @__PURE__ */ jsx2("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" })
899
- ] });
900
- }
901
- function MessageCircleIcon(props) {
902
- return /* @__PURE__ */ jsx2(Svg, { ...props, children: /* @__PURE__ */ jsx2("path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z" }) });
903
- }
904
- function RocketIcon(props) {
905
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
906
- /* @__PURE__ */ jsx2("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" }),
907
- /* @__PURE__ */ jsx2("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" }),
908
- /* @__PURE__ */ jsx2("path", { d: "M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" }),
909
- /* @__PURE__ */ jsx2("path", { d: "M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" })
910
- ] });
911
- }
912
- function AlertTriangleIcon(props) {
913
- return /* @__PURE__ */ jsxs(Svg, { ...props, children: [
914
- /* @__PURE__ */ jsx2("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" }),
915
- /* @__PURE__ */ jsx2("path", { d: "M12 9v4" }),
916
- /* @__PURE__ */ jsx2("path", { d: "M12 17h.01" })
1003
+ /* @__PURE__ */ jsx3("path", { d: "M14 4.1 12 6" }),
1004
+ /* @__PURE__ */ jsx3("path", { d: "m5.1 8-2.9-.8" }),
1005
+ /* @__PURE__ */ jsx3("path", { d: "m6 12-1.9 2" }),
1006
+ /* @__PURE__ */ jsx3("path", { d: "M7.2 2.2 8 5.1" }),
1007
+ /* @__PURE__ */ jsx3("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" })
917
1008
  ] });
918
1009
  }
919
1010
 
920
1011
  // catalog/react/primitives.tsx
921
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1012
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
922
1013
  var SearchInput = ({
923
1014
  ref,
924
1015
  value,
925
1016
  onChange,
926
1017
  placeholder
927
1018
  }) => /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-1.5 h-7 px-2 rounded-md bg-muted/40 border border-border/50", children: [
928
- /* @__PURE__ */ jsx3(SearchIcon, { className: "w-3 h-3 text-muted-foreground shrink-0" }),
929
- /* @__PURE__ */ jsx3(
1019
+ /* @__PURE__ */ jsx4(SearchIcon, { className: "w-3 h-3 text-muted-foreground shrink-0" }),
1020
+ /* @__PURE__ */ jsx4(
930
1021
  "input",
931
1022
  {
932
1023
  ref,
@@ -938,14 +1029,14 @@ var SearchInput = ({
938
1029
  style: { fontSize: "16px" }
939
1030
  }
940
1031
  ),
941
- value && /* @__PURE__ */ jsx3(
1032
+ value && /* @__PURE__ */ jsx4(
942
1033
  "button",
943
1034
  {
944
1035
  type: "button",
945
1036
  onClick: () => onChange(""),
946
1037
  className: "text-muted-foreground hover:text-foreground",
947
1038
  "aria-label": "Clear search",
948
- children: /* @__PURE__ */ jsx3(XIcon, { className: "w-3 h-3" })
1039
+ children: /* @__PURE__ */ jsx4(XIcon, { className: "w-3 h-3" })
949
1040
  }
950
1041
  )
951
1042
  ] });
@@ -966,8 +1057,8 @@ function FilterChip({
966
1057
  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"
967
1058
  ),
968
1059
  children: [
969
- /* @__PURE__ */ jsx3(Icon, { className: "w-3 h-3" }),
970
- /* @__PURE__ */ jsx3("span", { children: label })
1060
+ /* @__PURE__ */ jsx4(Icon, { className: "w-3 h-3" }),
1061
+ /* @__PURE__ */ jsx4("span", { children: label })
971
1062
  ]
972
1063
  }
973
1064
  );
@@ -988,8 +1079,8 @@ function OptionRow({
988
1079
  selected && "text-primary font-medium"
989
1080
  ),
990
1081
  children: [
991
- /* @__PURE__ */ jsx3("span", { className: "flex-1 text-left", children: label }),
992
- selected && /* @__PURE__ */ jsx3(CheckIcon, { className: "w-3.5 h-3.5 text-primary shrink-0" })
1082
+ /* @__PURE__ */ jsx4("span", { className: "flex-1 text-left", children: label }),
1083
+ selected && /* @__PURE__ */ jsx4(CheckIcon, { className: "w-3.5 h-3.5 text-primary shrink-0" })
993
1084
  ]
994
1085
  }
995
1086
  );
@@ -1006,17 +1097,17 @@ function CheckRow({
1006
1097
  onClick,
1007
1098
  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",
1008
1099
  children: [
1009
- /* @__PURE__ */ jsx3(
1100
+ /* @__PURE__ */ jsx4(
1010
1101
  "div",
1011
1102
  {
1012
1103
  className: cn(
1013
1104
  "w-3.5 h-3.5 rounded-sm border flex items-center justify-center shrink-0 transition-colors",
1014
1105
  checked ? "bg-primary border-primary" : "border-muted-foreground/30"
1015
1106
  ),
1016
- children: checked && /* @__PURE__ */ jsx3(CheckIcon, { className: "w-2.5 h-2.5 text-primary-foreground" })
1107
+ children: checked && /* @__PURE__ */ jsx4(CheckIcon, { className: "w-2.5 h-2.5 text-primary-foreground" })
1017
1108
  }
1018
1109
  ),
1019
- /* @__PURE__ */ jsx3("span", { className: "flex-1 text-left truncate", children: label })
1110
+ /* @__PURE__ */ jsx4("span", { className: "flex-1 text-left truncate", children: label })
1020
1111
  ]
1021
1112
  }
1022
1113
  );
@@ -1026,22 +1117,22 @@ function SidePanelHeader({
1026
1117
  onClose
1027
1118
  }) {
1028
1119
  return /* @__PURE__ */ jsxs2("div", { className: "flex items-center justify-between px-3 py-2 border-b border-border shrink-0", children: [
1029
- /* @__PURE__ */ jsx3("span", { className: "text-xs font-semibold text-foreground", children: title }),
1030
- /* @__PURE__ */ jsx3(
1120
+ /* @__PURE__ */ jsx4("span", { className: "text-xs font-semibold text-foreground", children: title }),
1121
+ /* @__PURE__ */ jsx4(
1031
1122
  "button",
1032
1123
  {
1033
1124
  type: "button",
1034
1125
  onClick: onClose,
1035
1126
  className: "w-5 h-5 rounded flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors",
1036
1127
  "aria-label": "Close",
1037
- children: /* @__PURE__ */ jsx3(XIcon, { className: "w-3.5 h-3.5" })
1128
+ children: /* @__PURE__ */ jsx4(XIcon, { className: "w-3.5 h-3.5" })
1038
1129
  }
1039
1130
  )
1040
1131
  ] });
1041
1132
  }
1042
1133
 
1043
1134
  // catalog/react/AgentCategoriesPanel.tsx
1044
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1135
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
1045
1136
  function AgentCategoriesPanel({
1046
1137
  consumer,
1047
1138
  allCategories,
@@ -1053,8 +1144,8 @@ function AgentCategoriesPanel({
1053
1144
  (c) => !search || c.toLowerCase().includes(search.toLowerCase())
1054
1145
  );
1055
1146
  return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col h-full", children: [
1056
- /* @__PURE__ */ jsx4(SidePanelHeader, { title: "Categories", onClose }),
1057
- /* @__PURE__ */ jsx4("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ jsx4(
1147
+ /* @__PURE__ */ jsx5(SidePanelHeader, { title: "Categories", onClose }),
1148
+ /* @__PURE__ */ jsx5("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ jsx5(
1058
1149
  SearchInput,
1059
1150
  {
1060
1151
  value: search,
@@ -1075,7 +1166,7 @@ function AgentCategoriesPanel({
1075
1166
  ]
1076
1167
  }
1077
1168
  ),
1078
- /* @__PURE__ */ jsx4("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx4("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No categories" }) : filtered.map((cat) => /* @__PURE__ */ jsx4(
1169
+ /* @__PURE__ */ jsx5("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx5("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No categories" }) : filtered.map((cat) => /* @__PURE__ */ jsx5(
1079
1170
  CheckRow,
1080
1171
  {
1081
1172
  label: cat,
@@ -1093,7 +1184,7 @@ import { cn as cn3 } from "@ai-matrx/design-system";
1093
1184
  // catalog/react/FavoriteAgentButton.tsx
1094
1185
  import { cn as cn2 } from "@ai-matrx/design-system";
1095
1186
  import { useCallback as useCallback4 } from "react";
1096
- import { jsx as jsx5 } from "react/jsx-runtime";
1187
+ import { jsx as jsx6 } from "react/jsx-runtime";
1097
1188
  function FavoriteAgentButton({
1098
1189
  id,
1099
1190
  variant = "card",
@@ -1115,7 +1206,7 @@ function FavoriteAgentButton({
1115
1206
  };
1116
1207
  const title = isOwner ? isFavorite ? "Remove from favorites" : "Add to favorites" : "Shared \u2014 cannot favorite";
1117
1208
  if (variant === "list") {
1118
- return /* @__PURE__ */ jsx5(
1209
+ return /* @__PURE__ */ jsx6(
1119
1210
  "button",
1120
1211
  {
1121
1212
  type: "button",
@@ -1128,7 +1219,7 @@ function FavoriteAgentButton({
1128
1219
  disabled: disabled || !isOwner,
1129
1220
  title,
1130
1221
  "aria-label": isFavorite ? "Remove from favorites" : "Add to favorites",
1131
- children: /* @__PURE__ */ jsx5(
1222
+ children: /* @__PURE__ */ jsx6(
1132
1223
  StarIcon,
1133
1224
  {
1134
1225
  filled: isFavorite,
@@ -1141,7 +1232,7 @@ function FavoriteAgentButton({
1141
1232
  }
1142
1233
  );
1143
1234
  }
1144
- return /* @__PURE__ */ jsx5(
1235
+ return /* @__PURE__ */ jsx6(
1145
1236
  "button",
1146
1237
  {
1147
1238
  type: "button",
@@ -1155,13 +1246,40 @@ function FavoriteAgentButton({
1155
1246
  disabled: disabled || !isOwner,
1156
1247
  title,
1157
1248
  "aria-label": isFavorite ? "Remove from favorites" : "Add to favorites",
1158
- children: /* @__PURE__ */ jsx5(StarIcon, { filled: isFavorite, className: "w-4 h-4 transition-all duration-150" })
1249
+ children: /* @__PURE__ */ jsx6(StarIcon, { filled: isFavorite, className: "w-4 h-4 transition-all duration-150" })
1159
1250
  }
1160
1251
  );
1161
1252
  }
1162
1253
 
1254
+ // catalog/orchestra.ts
1255
+ var ORCHESTRA_MODE_LABEL = {
1256
+ supervisor: "supervisor",
1257
+ sequential: "in order",
1258
+ parallel: "together",
1259
+ dag: "custom flow"
1260
+ };
1261
+ function orchestraModeLabel(mode) {
1262
+ return ORCHESTRA_MODE_LABEL[mode] ?? mode;
1263
+ }
1264
+ function orchestraLabel(badge) {
1265
+ const n = badge.memberCount;
1266
+ return `Orchestra \xB7 ${orchestraModeLabel(badge.mode)} \xB7 ${n} ${n === 1 ? "member" : "members"}`;
1267
+ }
1268
+ function orchestraDepthLine(badge) {
1269
+ const n = badge.depthBudget;
1270
+ if (typeof n !== "number" || n <= 0) return null;
1271
+ return `Team members can call helpers up to ${n} ${n === 1 ? "level" : "levels"} deep`;
1272
+ }
1273
+ function orchestraDelegatesLine(badge, limit = 3) {
1274
+ const titles = badge.memberTitles;
1275
+ if (titles.length === 0) return null;
1276
+ const shown = titles.slice(0, limit);
1277
+ const extra = titles.length - shown.length;
1278
+ return `Delegates to: ${shown.join(", ")}${extra > 0 ? ` +${extra} more` : ""}`;
1279
+ }
1280
+
1163
1281
  // catalog/react/AgentDetailCard.tsx
1164
- import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
1282
+ import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
1165
1283
  function AgentDetailCard({ agent, onSelect }) {
1166
1284
  const { LinkComponent, renderModelRef, openPeek } = useAgentCatalogUiPorts();
1167
1285
  const updatedDate = agent.updatedAt ? new Date(agent.updatedAt) : null;
@@ -1176,30 +1294,46 @@ function AgentDetailCard({ agent, onSelect }) {
1176
1294
  });
1177
1295
  };
1178
1296
  return /* @__PURE__ */ jsxs4("div", { className: "flex flex-col h-full", children: [
1179
- /* @__PURE__ */ jsx6("div", { className: "px-4 pt-4 pb-3", children: /* @__PURE__ */ jsxs4("div", { className: "flex items-start gap-3", children: [
1180
- /* @__PURE__ */ jsx6("div", { className: "w-9 h-9 rounded-lg bg-primary/10 flex items-center justify-center shrink-0" }),
1297
+ /* @__PURE__ */ jsx7("div", { className: "px-4 pt-4 pb-3", children: /* @__PURE__ */ jsxs4("div", { className: "flex items-start gap-3", children: [
1298
+ /* @__PURE__ */ jsx7("div", { className: "w-9 h-9 rounded-lg bg-primary/10 flex items-center justify-center shrink-0" }),
1181
1299
  /* @__PURE__ */ jsxs4("div", { className: "flex-1 min-w-0", children: [
1182
- /* @__PURE__ */ jsx6("h3", { className: "text-sm font-semibold text-foreground leading-tight truncate", children: agent.name || "Untitled" }),
1183
- agent.isFavorite && /* @__PURE__ */ jsx6("div", { className: "flex items-center gap-1 mt-0.5", children: /* @__PURE__ */ jsx6("span", { className: "text-[11px] matrx-agent-star-on", children: "Pinned to favorites" }) })
1300
+ /* @__PURE__ */ jsx7("h3", { className: "text-sm font-semibold text-foreground leading-tight truncate", children: agent.name || "Untitled" }),
1301
+ agent.isFavorite && /* @__PURE__ */ jsx7("div", { className: "flex items-center gap-1 mt-0.5", children: /* @__PURE__ */ jsx7("span", { className: "text-[11px] matrx-agent-star-on", children: "Pinned to favorites" }) })
1184
1302
  ] }),
1185
- !isDefaultRow && /* @__PURE__ */ jsx6(FavoriteAgentButton, { id: agent.id, variant: "list" })
1303
+ !isDefaultRow && /* @__PURE__ */ jsx7(FavoriteAgentButton, { id: agent.id, variant: "list" })
1186
1304
  ] }) }),
1187
- /* @__PURE__ */ jsx6("div", { className: "h-px bg-border mx-3" }),
1305
+ /* @__PURE__ */ jsx7("div", { className: "h-px bg-border mx-3" }),
1188
1306
  /* @__PURE__ */ jsxs4("div", { className: "flex-1 overflow-y-auto px-4 py-3 space-y-3", children: [
1307
+ agent.orchestra && /* @__PURE__ */ jsxs4("div", { className: "rounded-md border border-primary/20 bg-primary/5 px-2.5 py-2", children: [
1308
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-1.5", children: [
1309
+ /* @__PURE__ */ jsx7(Music4Icon, { className: "w-3.5 h-3.5 text-primary shrink-0" }),
1310
+ /* @__PURE__ */ jsx7("span", { className: "text-[11px] font-medium text-primary", children: orchestraLabel(agent.orchestra) })
1311
+ ] }),
1312
+ agent.orchestra.tagline && /* @__PURE__ */ jsx7("p", { className: "mt-1 text-xs text-foreground/80 leading-relaxed", children: agent.orchestra.tagline }),
1313
+ orchestraDelegatesLine(agent.orchestra) && /* @__PURE__ */ jsx7(
1314
+ "p",
1315
+ {
1316
+ className: "mt-1 text-[11px] text-muted-foreground",
1317
+ title: `Delegates to: ${agent.orchestra.memberTitles.join(", ")}`,
1318
+ children: orchestraDelegatesLine(agent.orchestra)
1319
+ }
1320
+ ),
1321
+ orchestraDepthLine(agent.orchestra) && /* @__PURE__ */ jsx7("p", { className: "mt-0.5 text-[11px] text-muted-foreground", children: orchestraDepthLine(agent.orchestra) })
1322
+ ] }),
1189
1323
  agent.description && /* @__PURE__ */ jsxs4("div", { children: [
1190
- /* @__PURE__ */ jsx6("p", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Description" }),
1191
- /* @__PURE__ */ jsx6("p", { className: "text-xs text-foreground/80 leading-relaxed", children: agent.description })
1324
+ /* @__PURE__ */ jsx7("p", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Description" }),
1325
+ /* @__PURE__ */ jsx7("p", { className: "text-xs text-foreground/80 leading-relaxed", children: agent.description })
1192
1326
  ] }),
1193
1327
  agent.category && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1194
- /* @__PURE__ */ jsx6(FolderIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1195
- /* @__PURE__ */ jsx6("span", { className: "text-xs text-foreground/80", children: agent.category })
1328
+ /* @__PURE__ */ jsx7(FolderIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1329
+ /* @__PURE__ */ jsx7("span", { className: "text-xs text-foreground/80", children: agent.category })
1196
1330
  ] }),
1197
1331
  agent.tags && agent.tags.length > 0 && /* @__PURE__ */ jsxs4("div", { children: [
1198
1332
  /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
1199
- /* @__PURE__ */ jsx6(TagIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1200
- /* @__PURE__ */ jsx6("span", { className: "text-[11px] font-medium text-muted-foreground", children: "Tags" })
1333
+ /* @__PURE__ */ jsx7(TagIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1334
+ /* @__PURE__ */ jsx7("span", { className: "text-[11px] font-medium text-muted-foreground", children: "Tags" })
1201
1335
  ] }),
1202
- /* @__PURE__ */ jsx6("div", { className: "flex flex-wrap gap-1", children: agent.tags.map((tag) => /* @__PURE__ */ jsx6(
1336
+ /* @__PURE__ */ jsx7("div", { className: "flex flex-wrap gap-1", children: agent.tags.map((tag) => /* @__PURE__ */ jsx7(
1203
1337
  "span",
1204
1338
  {
1205
1339
  className: "inline-flex items-center h-5 px-1.5 rounded text-[10px] font-medium bg-muted text-muted-foreground",
@@ -1209,29 +1343,29 @@ function AgentDetailCard({ agent, onSelect }) {
1209
1343
  )) })
1210
1344
  ] }),
1211
1345
  agent.accessLevel && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1212
- agent.isOwner === false ? /* @__PURE__ */ jsx6(UsersIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsx6(GlobeIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1346
+ agent.isOwner === false ? /* @__PURE__ */ jsx7(UsersIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsx7(GlobeIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1213
1347
  /* @__PURE__ */ jsxs4("div", { className: "flex flex-col", children: [
1214
- /* @__PURE__ */ jsx6("span", { className: "text-xs text-foreground/80 capitalize", children: agent.accessLevel === "owner" ? "You own this" : `Shared \u2014 ${agent.accessLevel}` }),
1348
+ /* @__PURE__ */ jsx7("span", { className: "text-xs text-foreground/80 capitalize", children: agent.accessLevel === "owner" ? "You own this" : `Shared \u2014 ${agent.accessLevel}` }),
1215
1349
  agent.sharedByEmail && /* @__PURE__ */ jsxs4("span", { className: "text-[10px] text-muted-foreground", children: [
1216
1350
  "by ",
1217
1351
  agent.sharedByEmail
1218
1352
  ] })
1219
1353
  ] })
1220
1354
  ] }),
1221
- agent.modelId && /* @__PURE__ */ jsx6("div", { className: "flex items-center gap-2", children: renderModelRef({
1355
+ agent.modelId && /* @__PURE__ */ jsx7("div", { className: "flex items-center gap-2", children: renderModelRef({
1222
1356
  modelId: agent.modelId,
1223
1357
  className: "max-w-full text-xs text-foreground/80"
1224
1358
  }) }),
1225
1359
  (updatedDate || createdDate) && /* @__PURE__ */ jsxs4("div", { className: "pt-1 space-y-1", children: [
1226
1360
  updatedDate && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1227
- /* @__PURE__ */ jsx6(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1361
+ /* @__PURE__ */ jsx7(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground shrink-0" }),
1228
1362
  /* @__PURE__ */ jsxs4("span", { className: "text-[11px] text-muted-foreground", children: [
1229
1363
  "Updated ",
1230
1364
  formatDate(updatedDate)
1231
1365
  ] })
1232
1366
  ] }),
1233
1367
  createdDate && /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
1234
- /* @__PURE__ */ jsx6(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground/50 shrink-0" }),
1368
+ /* @__PURE__ */ jsx7(ClockIcon, { className: "w-3.5 h-3.5 text-muted-foreground/50 shrink-0" }),
1235
1369
  /* @__PURE__ */ jsxs4("span", { className: "text-[11px] text-muted-foreground/70", children: [
1236
1370
  "Created ",
1237
1371
  formatDate(createdDate)
@@ -1239,9 +1373,9 @@ function AgentDetailCard({ agent, onSelect }) {
1239
1373
  ] })
1240
1374
  ] })
1241
1375
  ] }),
1242
- /* @__PURE__ */ jsx6("div", { className: "h-px bg-border mx-3 mt-auto" }),
1376
+ /* @__PURE__ */ jsx7("div", { className: "h-px bg-border mx-3 mt-auto" }),
1243
1377
  /* @__PURE__ */ jsxs4("div", { className: "px-3 py-2 shrink-0 flex items-center gap-1.5", children: [
1244
- /* @__PURE__ */ jsx6(
1378
+ /* @__PURE__ */ jsx7(
1245
1379
  "button",
1246
1380
  {
1247
1381
  type: "button",
@@ -1250,7 +1384,7 @@ function AgentDetailCard({ agent, onSelect }) {
1250
1384
  children: "Select"
1251
1385
  }
1252
1386
  ),
1253
- openPeek && /* @__PURE__ */ jsx6(
1387
+ openPeek && /* @__PURE__ */ jsx7(
1254
1388
  "button",
1255
1389
  {
1256
1390
  type: "button",
@@ -1261,11 +1395,11 @@ function AgentDetailCard({ agent, onSelect }) {
1261
1395
  title: "Sneak Peek",
1262
1396
  "aria-label": "Sneak Peek",
1263
1397
  className: iconButtonClass,
1264
- children: /* @__PURE__ */ jsx6(RocketIcon, { className: "w-3.5 h-3.5" })
1398
+ children: /* @__PURE__ */ jsx7(RocketIcon, { className: "w-3.5 h-3.5" })
1265
1399
  }
1266
1400
  ),
1267
- !isDefaultRow && /* @__PURE__ */ jsxs4(Fragment, { children: [
1268
- /* @__PURE__ */ jsx6(
1401
+ !isDefaultRow && /* @__PURE__ */ jsxs4(Fragment2, { children: [
1402
+ /* @__PURE__ */ jsx7(
1269
1403
  LinkComponent,
1270
1404
  {
1271
1405
  href: `/chat/a/${agent.id}`,
@@ -1273,10 +1407,10 @@ function AgentDetailCard({ agent, onSelect }) {
1273
1407
  title: "Open in chat",
1274
1408
  "aria-label": "Open in chat",
1275
1409
  className: iconButtonClass,
1276
- children: /* @__PURE__ */ jsx6(MessageCircleIcon, { className: "w-3.5 h-3.5" })
1410
+ children: /* @__PURE__ */ jsx7(MessageCircleIcon, { className: "w-3.5 h-3.5" })
1277
1411
  }
1278
1412
  ),
1279
- /* @__PURE__ */ jsx6(
1413
+ /* @__PURE__ */ jsx7(
1280
1414
  LinkComponent,
1281
1415
  {
1282
1416
  href: `/agents/go/${agent.id}`,
@@ -1289,7 +1423,7 @@ function AgentDetailCard({ agent, onSelect }) {
1289
1423
  iconButtonClass,
1290
1424
  "hover:text-foreground"
1291
1425
  ),
1292
- children: /* @__PURE__ */ jsx6(ExternalLinkIcon, { className: "w-3.5 h-3.5" })
1426
+ children: /* @__PURE__ */ jsx7(ExternalLinkIcon, { className: "w-3.5 h-3.5" })
1293
1427
  }
1294
1428
  )
1295
1429
  ] })
@@ -1302,18 +1436,11 @@ var iconButtonClass = "flex items-center justify-center h-7 w-7 rounded-md borde
1302
1436
  import { useEffect as useEffect3, useRef as useRef3 } from "react";
1303
1437
 
1304
1438
  // catalog/react/types.ts
1305
- var SORT_OPTIONS = [
1306
- { value: "updated-desc", label: "Recent" },
1307
- { value: "created-desc", label: "Created" },
1308
- { value: "name-asc", label: "A \u2192 Z" },
1309
- { value: "name-desc", label: "Z \u2192 A" },
1310
- { value: "category-asc", label: "Category" }
1311
- ];
1312
1439
  var PANEL_HEIGHT = "528px";
1313
1440
  var LIST_MAX_HEIGHT = "min(528px, var(--radix-popper-available-height, 528px))";
1314
1441
 
1315
1442
  // catalog/react/AgentFilterBar.tsx
1316
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
1443
+ import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
1317
1444
  function AgentFilterBar({
1318
1445
  consumer,
1319
1446
  allCategories,
@@ -1325,7 +1452,7 @@ function AgentFilterBar({
1325
1452
  onReset
1326
1453
  }) {
1327
1454
  return /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-1 px-2 pb-1.5 overflow-x-auto matrx-agent-scrollbar-none shrink-0", children: [
1328
- /* @__PURE__ */ jsx7(
1455
+ /* @__PURE__ */ jsx8(
1329
1456
  FilterChip,
1330
1457
  {
1331
1458
  icon: ArrowUpDownIcon,
@@ -1335,7 +1462,7 @@ function AgentFilterBar({
1335
1462
  onClick: () => onFilterChipClick("sort")
1336
1463
  }
1337
1464
  ),
1338
- /* @__PURE__ */ jsx7(
1465
+ /* @__PURE__ */ jsx8(
1339
1466
  FilterChip,
1340
1467
  {
1341
1468
  icon: StarIcon,
@@ -1347,7 +1474,7 @@ function AgentFilterBar({
1347
1474
  }
1348
1475
  }
1349
1476
  ),
1350
- allCategories.length > 0 && /* @__PURE__ */ jsx7(
1477
+ allCategories.length > 0 && /* @__PURE__ */ jsx8(
1351
1478
  FilterChip,
1352
1479
  {
1353
1480
  icon: FolderIcon,
@@ -1357,7 +1484,7 @@ function AgentFilterBar({
1357
1484
  onClick: () => onFilterChipClick("categories")
1358
1485
  }
1359
1486
  ),
1360
- allTags.length > 0 && /* @__PURE__ */ jsx7(
1487
+ allTags.length > 0 && /* @__PURE__ */ jsx8(
1361
1488
  FilterChip,
1362
1489
  {
1363
1490
  icon: TagIcon,
@@ -1367,14 +1494,14 @@ function AgentFilterBar({
1367
1494
  onClick: () => onFilterChipClick("tags")
1368
1495
  }
1369
1496
  ),
1370
- activeFilterCount > 0 && /* @__PURE__ */ jsx7(
1497
+ activeFilterCount > 0 && /* @__PURE__ */ jsx8(
1371
1498
  "button",
1372
1499
  {
1373
1500
  type: "button",
1374
1501
  onClick: onReset,
1375
1502
  "aria-label": "Reset filters",
1376
1503
  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",
1377
- children: /* @__PURE__ */ jsx7(RotateCcwIcon, { className: "w-3 h-3" })
1504
+ children: /* @__PURE__ */ jsx8(RotateCcwIcon, { className: "w-3 h-3" })
1378
1505
  }
1379
1506
  )
1380
1507
  ] });
@@ -1382,7 +1509,7 @@ function AgentFilterBar({
1382
1509
 
1383
1510
  // catalog/react/AgentListTabs.tsx
1384
1511
  import { cn as cn4 } from "@ai-matrx/design-system";
1385
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1512
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
1386
1513
  function AgentListTabs({
1387
1514
  consumer,
1388
1515
  tabCounts,
@@ -1396,7 +1523,7 @@ function AgentListTabs({
1396
1523
  { value: "all", label: "All", countKey: "all" },
1397
1524
  { value: "system", label: labels.publicTab, countKey: "system" }
1398
1525
  ];
1399
- return /* @__PURE__ */ jsx8(
1526
+ return /* @__PURE__ */ jsx9(
1400
1527
  "div",
1401
1528
  {
1402
1529
  className: "flex items-center gap-0.5 px-2 pb-1 overflow-x-auto matrx-agent-scrollbar-none shrink-0",
@@ -1418,8 +1545,8 @@ function AgentListTabs({
1418
1545
  active ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:text-foreground hover:bg-muted/50"
1419
1546
  ),
1420
1547
  children: [
1421
- /* @__PURE__ */ jsx8("span", { children: label }),
1422
- /* @__PURE__ */ jsx8(
1548
+ /* @__PURE__ */ jsx9("span", { children: label }),
1549
+ /* @__PURE__ */ jsx9(
1423
1550
  "span",
1424
1551
  {
1425
1552
  className: cn4("tabular-nums opacity-70", active && "opacity-90"),
@@ -1437,7 +1564,7 @@ function AgentListTabs({
1437
1564
 
1438
1565
  // catalog/react/AgentRow.tsx
1439
1566
  import { cn as cn5 } from "@ai-matrx/design-system";
1440
- import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1567
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
1441
1568
  function AgentRow({
1442
1569
  agent,
1443
1570
  isActive,
@@ -1475,8 +1602,8 @@ function AgentRow({
1475
1602
  },
1476
1603
  className: "flex items-center gap-2 flex-1 min-w-0 px-3 py-2",
1477
1604
  children: [
1478
- agent.isFavorite && /* @__PURE__ */ jsx9(StarIcon, { filled: true, className: "w-3 h-3 matrx-agent-star-on shrink-0" }),
1479
- /* @__PURE__ */ jsx9(
1605
+ agent.isFavorite && /* @__PURE__ */ jsx10(StarIcon, { filled: true, className: "w-3 h-3 matrx-agent-star-on shrink-0" }),
1606
+ /* @__PURE__ */ jsx10(
1480
1607
  "span",
1481
1608
  {
1482
1609
  className: cn5(
@@ -1486,11 +1613,22 @@ function AgentRow({
1486
1613
  children: agent.name || "Untitled"
1487
1614
  }
1488
1615
  ),
1489
- agent.agentType === "builtin" ? /* @__PURE__ */ jsx9("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__ */ jsx9("span", { className: "text-[9px] text-muted-foreground bg-muted px-1 py-px rounded shrink-0 ml-auto", children: "shared" }) : null
1616
+ agent.orchestra && /* @__PURE__ */ jsxs7(
1617
+ "span",
1618
+ {
1619
+ className: "flex shrink-0 items-center gap-0.5 rounded-sm bg-primary/10 px-1 py-px text-[9px] font-medium text-primary",
1620
+ title: orchestraDelegatesLine(agent.orchestra) ?? orchestraLabel(agent.orchestra),
1621
+ children: [
1622
+ /* @__PURE__ */ jsx10(Music4Icon, { className: "w-2.5 h-2.5" }),
1623
+ agent.orchestra.memberCount
1624
+ ]
1625
+ }
1626
+ ),
1627
+ agent.agentType === "builtin" ? /* @__PURE__ */ jsx10("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__ */ jsx10("span", { className: "text-[9px] text-muted-foreground bg-muted px-1 py-px rounded shrink-0 ml-auto", children: "shared" }) : null
1490
1628
  ]
1491
1629
  }
1492
1630
  ),
1493
- isMobile && /* @__PURE__ */ jsx9(
1631
+ isMobile && /* @__PURE__ */ jsx10(
1494
1632
  "button",
1495
1633
  {
1496
1634
  type: "button",
@@ -1500,7 +1638,7 @@ function AgentRow({
1500
1638
  onDetailPress();
1501
1639
  },
1502
1640
  className: "flex items-center justify-center w-10 h-full shrink-0 text-muted-foreground/40 active:text-muted-foreground",
1503
- children: /* @__PURE__ */ jsx9(ChevronRightIcon, { className: "w-4 h-4" })
1641
+ children: /* @__PURE__ */ jsx10(ChevronRightIcon, { className: "w-4 h-4" })
1504
1642
  }
1505
1643
  )
1506
1644
  ]
@@ -1509,7 +1647,7 @@ function AgentRow({
1509
1647
  }
1510
1648
 
1511
1649
  // catalog/react/AgentListContent.tsx
1512
- import { Fragment as Fragment2, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
1650
+ import { Fragment as Fragment3, jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
1513
1651
  function AgentListContent({
1514
1652
  agents,
1515
1653
  isLoading,
@@ -1547,7 +1685,7 @@ function AgentListContent({
1547
1685
  const emptyLabel = agentListEmptyLabel(consumer.tab, labels);
1548
1686
  const defaultAgent = defaultRow?.row ?? null;
1549
1687
  return /* @__PURE__ */ jsxs8("div", { className: "flex flex-col h-full", children: [
1550
- /* @__PURE__ */ jsx10("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ jsx10(
1688
+ /* @__PURE__ */ jsx11("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ jsx11(
1551
1689
  SearchInput,
1552
1690
  {
1553
1691
  ref: inputRef,
@@ -1556,7 +1694,7 @@ function AgentListContent({
1556
1694
  placeholder: labels.searchPlaceholder
1557
1695
  }
1558
1696
  ) }),
1559
- /* @__PURE__ */ jsx10(
1697
+ /* @__PURE__ */ jsx11(
1560
1698
  AgentListTabs,
1561
1699
  {
1562
1700
  consumer,
@@ -1565,7 +1703,7 @@ function AgentListContent({
1565
1703
  visibleTabs
1566
1704
  }
1567
1705
  ),
1568
- /* @__PURE__ */ jsx10(
1706
+ /* @__PURE__ */ jsx11(
1569
1707
  AgentFilterBar,
1570
1708
  {
1571
1709
  consumer,
@@ -1584,16 +1722,16 @@ function AgentListContent({
1584
1722
  role: "status",
1585
1723
  className: "matrx-agent-drift-banner mx-2 mb-1.5 flex items-start gap-2 rounded-md px-2 py-1.5 shrink-0",
1586
1724
  children: [
1587
- /* @__PURE__ */ jsx10(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
1588
- /* @__PURE__ */ jsx10("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.drift }),
1589
- /* @__PURE__ */ jsx10(
1725
+ /* @__PURE__ */ jsx11(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
1726
+ /* @__PURE__ */ jsx11("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.drift }),
1727
+ /* @__PURE__ */ jsx11(
1590
1728
  "button",
1591
1729
  {
1592
1730
  type: "button",
1593
1731
  "aria-label": "Dismiss",
1594
1732
  onClick: () => catalog.dismissDefaultRowDrift(defaultRow.mandateKey),
1595
1733
  className: "shrink-0 opacity-70 hover:opacity-100",
1596
- children: /* @__PURE__ */ jsx10(XIcon, { className: "w-3 h-3" })
1734
+ children: /* @__PURE__ */ jsx11(XIcon, { className: "w-3 h-3" })
1597
1735
  }
1598
1736
  )
1599
1737
  ]
@@ -1605,19 +1743,19 @@ function AgentListContent({
1605
1743
  role: "alert",
1606
1744
  className: "matrx-agent-drift-banner mx-2 mb-1.5 flex items-start gap-2 rounded-md px-2 py-1.5 shrink-0",
1607
1745
  children: [
1608
- /* @__PURE__ */ jsx10(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
1609
- /* @__PURE__ */ jsx10("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.error })
1746
+ /* @__PURE__ */ jsx11(AlertTriangleIcon, { className: "w-3.5 h-3.5 shrink-0 mt-px" }),
1747
+ /* @__PURE__ */ jsx11("span", { className: "text-[11px] leading-snug flex-1", children: defaultRow.error })
1610
1748
  ]
1611
1749
  }
1612
1750
  ),
1613
- /* @__PURE__ */ jsx10("div", { className: "h-px bg-border shrink-0" }),
1614
- /* @__PURE__ */ jsx10("div", { ref: listScrollRef, className: "overflow-y-auto flex-1 min-h-0", children: isLoading ? /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-center py-8 gap-2 text-muted-foreground", children: [
1615
- /* @__PURE__ */ jsx10(LoaderIcon, { className: "w-4 h-4 matrx-agent-spin" }),
1616
- /* @__PURE__ */ jsx10("span", { className: "text-xs", children: labels.loading })
1617
- ] }) : agents.length === 0 && !pinnedAgent && !defaultAgent ? /* @__PURE__ */ jsx10("div", { className: "flex flex-col items-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx10("span", { className: "text-xs", children: emptyLabel }) }) : /* @__PURE__ */ jsxs8("div", { className: "py-0.5", children: [
1618
- defaultAgent && /* @__PURE__ */ jsxs8(Fragment2, { children: [
1619
- /* @__PURE__ */ jsx10("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ jsx10("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Default" }) }),
1620
- /* @__PURE__ */ jsx10(
1751
+ /* @__PURE__ */ jsx11("div", { className: "h-px bg-border shrink-0" }),
1752
+ /* @__PURE__ */ jsx11("div", { ref: listScrollRef, className: "overflow-y-auto flex-1 min-h-0", children: isLoading ? /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-center py-8 gap-2 text-muted-foreground", children: [
1753
+ /* @__PURE__ */ jsx11(LoaderIcon, { className: "w-4 h-4 matrx-agent-spin" }),
1754
+ /* @__PURE__ */ jsx11("span", { className: "text-xs", children: labels.loading })
1755
+ ] }) : agents.length === 0 && !pinnedAgent && !defaultAgent ? /* @__PURE__ */ jsx11("div", { className: "flex flex-col items-center py-8 text-muted-foreground", children: /* @__PURE__ */ jsx11("span", { className: "text-xs", children: emptyLabel }) }) : /* @__PURE__ */ jsxs8("div", { className: "py-0.5", children: [
1756
+ defaultAgent && /* @__PURE__ */ jsxs8(Fragment3, { children: [
1757
+ /* @__PURE__ */ jsx11("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ jsx11("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Default" }) }),
1758
+ /* @__PURE__ */ jsx11(
1621
1759
  AgentRow,
1622
1760
  {
1623
1761
  agent: defaultAgent,
@@ -1632,11 +1770,11 @@ function AgentListContent({
1632
1770
  },
1633
1771
  `default-${defaultAgent.id}`
1634
1772
  ),
1635
- /* @__PURE__ */ jsx10("div", { className: "mx-2 my-0.5 h-px bg-border" })
1773
+ /* @__PURE__ */ jsx11("div", { className: "mx-2 my-0.5 h-px bg-border" })
1636
1774
  ] }),
1637
- pinnedAgent && /* @__PURE__ */ jsxs8(Fragment2, { children: [
1638
- /* @__PURE__ */ jsx10("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ jsx10("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: labels.currentAgentHeading }) }),
1639
- /* @__PURE__ */ jsx10(
1775
+ pinnedAgent && /* @__PURE__ */ jsxs8(Fragment3, { children: [
1776
+ /* @__PURE__ */ jsx11("div", { className: "px-3 pt-1.5 pb-0.5", children: /* @__PURE__ */ jsx11("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: labels.currentAgentHeading }) }),
1777
+ /* @__PURE__ */ jsx11(
1640
1778
  AgentRow,
1641
1779
  {
1642
1780
  agent: pinnedAgent,
@@ -1651,9 +1789,9 @@ function AgentListContent({
1651
1789
  },
1652
1790
  `pinned-${pinnedAgent.id}`
1653
1791
  ),
1654
- /* @__PURE__ */ jsx10("div", { className: "mx-2 my-0.5 h-px bg-border" })
1792
+ /* @__PURE__ */ jsx11("div", { className: "mx-2 my-0.5 h-px bg-border" })
1655
1793
  ] }),
1656
- agents.map((agent) => /* @__PURE__ */ jsx10(
1794
+ agents.map((agent) => /* @__PURE__ */ jsx11(
1657
1795
  AgentRow,
1658
1796
  {
1659
1797
  agent,
@@ -1668,16 +1806,16 @@ function AgentListContent({
1668
1806
  },
1669
1807
  agent.id
1670
1808
  )),
1671
- agents.length === 0 && (pinnedAgent || defaultAgent) && /* @__PURE__ */ jsx10("div", { className: "flex flex-col items-center py-4 text-muted-foreground", children: /* @__PURE__ */ jsx10("span", { className: "text-xs", children: emptyLabel }) })
1809
+ agents.length === 0 && (pinnedAgent || defaultAgent) && /* @__PURE__ */ jsx11("div", { className: "flex flex-col items-center py-4 text-muted-foreground", children: /* @__PURE__ */ jsx11("span", { className: "text-xs", children: emptyLabel }) })
1672
1810
  ] }) }),
1673
- /* @__PURE__ */ jsx10("div", { className: "h-px bg-border shrink-0" }),
1811
+ /* @__PURE__ */ jsx11("div", { className: "h-px bg-border shrink-0" }),
1674
1812
  /* @__PURE__ */ jsxs8("div", { className: "flex items-center justify-between px-2.5 py-1.5 shrink-0", children: [
1675
1813
  /* @__PURE__ */ jsxs8("span", { className: "text-[10px] text-muted-foreground tabular-nums", children: [
1676
1814
  agents.length,
1677
1815
  " agent",
1678
1816
  agents.length !== 1 ? "s" : ""
1679
1817
  ] }),
1680
- consumer.searchTerm && /* @__PURE__ */ jsx10(
1818
+ consumer.searchTerm && /* @__PURE__ */ jsx11(
1681
1819
  "button",
1682
1820
  {
1683
1821
  type: "button",
@@ -1691,7 +1829,7 @@ function AgentListContent({
1691
1829
  }
1692
1830
 
1693
1831
  // catalog/react/AgentMobileSubView.tsx
1694
- import { Fragment as Fragment3, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
1832
+ import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
1695
1833
  function AgentMobileSubView({
1696
1834
  view,
1697
1835
  consumer,
@@ -1712,12 +1850,12 @@ function AgentMobileSubView({
1712
1850
  onClick: onBack,
1713
1851
  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",
1714
1852
  children: [
1715
- /* @__PURE__ */ jsx11(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
1853
+ /* @__PURE__ */ jsx12(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
1716
1854
  title
1717
1855
  ]
1718
1856
  }
1719
1857
  ),
1720
- view === "sort" && SORT_OPTIONS.map((opt) => /* @__PURE__ */ jsx11(
1858
+ view === "sort" && SORT_OPTIONS.map((opt) => /* @__PURE__ */ jsx12(
1721
1859
  OptionRow,
1722
1860
  {
1723
1861
  label: opt.label,
@@ -1729,8 +1867,8 @@ function AgentMobileSubView({
1729
1867
  },
1730
1868
  opt.value
1731
1869
  )),
1732
- view === "categories" && /* @__PURE__ */ jsxs9(Fragment3, { children: [
1733
- /* @__PURE__ */ jsx11("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx11(
1870
+ view === "categories" && /* @__PURE__ */ jsxs9(Fragment4, { children: [
1871
+ /* @__PURE__ */ jsx12("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx12(
1734
1872
  SearchInput,
1735
1873
  {
1736
1874
  value: catSearch,
@@ -1751,9 +1889,9 @@ function AgentMobileSubView({
1751
1889
  ]
1752
1890
  }
1753
1891
  ),
1754
- /* @__PURE__ */ jsx11("div", { className: "overflow-y-auto max-h-[300px]", children: allCategories.filter(
1892
+ /* @__PURE__ */ jsx12("div", { className: "overflow-y-auto max-h-[300px]", children: allCategories.filter(
1755
1893
  (c) => !catSearch || c.toLowerCase().includes(catSearch.toLowerCase())
1756
- ).map((cat) => /* @__PURE__ */ jsx11(
1894
+ ).map((cat) => /* @__PURE__ */ jsx12(
1757
1895
  CheckRow,
1758
1896
  {
1759
1897
  label: cat,
@@ -1763,8 +1901,8 @@ function AgentMobileSubView({
1763
1901
  cat
1764
1902
  )) })
1765
1903
  ] }),
1766
- view === "tags" && /* @__PURE__ */ jsxs9(Fragment3, { children: [
1767
- /* @__PURE__ */ jsx11("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx11(
1904
+ view === "tags" && /* @__PURE__ */ jsxs9(Fragment4, { children: [
1905
+ /* @__PURE__ */ jsx12("div", { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx12(
1768
1906
  SearchInput,
1769
1907
  {
1770
1908
  value: tagSearch,
@@ -1785,9 +1923,9 @@ function AgentMobileSubView({
1785
1923
  ]
1786
1924
  }
1787
1925
  ),
1788
- /* @__PURE__ */ jsx11("div", { className: "overflow-y-auto max-h-[300px]", children: allTags.filter(
1926
+ /* @__PURE__ */ jsx12("div", { className: "overflow-y-auto max-h-[300px]", children: allTags.filter(
1789
1927
  (t) => !tagSearch || t.toLowerCase().includes(tagSearch.toLowerCase())
1790
- ).map((tag) => /* @__PURE__ */ jsx11(
1928
+ ).map((tag) => /* @__PURE__ */ jsx12(
1791
1929
  CheckRow,
1792
1930
  {
1793
1931
  label: tag,
@@ -1801,11 +1939,11 @@ function AgentMobileSubView({
1801
1939
  }
1802
1940
 
1803
1941
  // catalog/react/AgentSortPanel.tsx
1804
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
1942
+ import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
1805
1943
  function AgentSortPanel({ consumer, onClose }) {
1806
1944
  return /* @__PURE__ */ jsxs10("div", { className: "flex flex-col h-full", children: [
1807
- /* @__PURE__ */ jsx12(SidePanelHeader, { title: "Sort By", onClose }),
1808
- /* @__PURE__ */ jsx12("div", { className: "overflow-y-auto flex-1", children: SORT_OPTIONS.map((opt) => /* @__PURE__ */ jsx12(
1945
+ /* @__PURE__ */ jsx13(SidePanelHeader, { title: "Sort By", onClose }),
1946
+ /* @__PURE__ */ jsx13("div", { className: "overflow-y-auto flex-1", children: SORT_OPTIONS.map((opt) => /* @__PURE__ */ jsx13(
1809
1947
  OptionRow,
1810
1948
  {
1811
1949
  label: opt.label,
@@ -1818,7 +1956,7 @@ function AgentSortPanel({ consumer, onClose }) {
1818
1956
  }
1819
1957
 
1820
1958
  // catalog/react/AgentTagsPanel.tsx
1821
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
1959
+ import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
1822
1960
  function AgentTagsPanel({
1823
1961
  consumer,
1824
1962
  allTags,
@@ -1830,8 +1968,8 @@ function AgentTagsPanel({
1830
1968
  (t) => !search || t.toLowerCase().includes(search.toLowerCase())
1831
1969
  );
1832
1970
  return /* @__PURE__ */ jsxs11("div", { className: "flex flex-col h-full", children: [
1833
- /* @__PURE__ */ jsx13(SidePanelHeader, { title: "Tags", onClose }),
1834
- /* @__PURE__ */ jsx13("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ jsx13(
1971
+ /* @__PURE__ */ jsx14(SidePanelHeader, { title: "Tags", onClose }),
1972
+ /* @__PURE__ */ jsx14("div", { className: "px-2 pt-2 pb-1 shrink-0", children: /* @__PURE__ */ jsx14(
1835
1973
  SearchInput,
1836
1974
  {
1837
1975
  value: search,
@@ -1852,7 +1990,7 @@ function AgentTagsPanel({
1852
1990
  ]
1853
1991
  }
1854
1992
  ),
1855
- /* @__PURE__ */ jsx13("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx13("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No tags" }) : filtered.map((tag) => /* @__PURE__ */ jsx13(
1993
+ /* @__PURE__ */ jsx14("div", { className: "overflow-y-auto flex-1", children: filtered.length === 0 ? /* @__PURE__ */ jsx14("p", { className: "text-xs text-muted-foreground text-center py-6", children: "No tags" }) : filtered.map((tag) => /* @__PURE__ */ jsx14(
1856
1994
  CheckRow,
1857
1995
  {
1858
1996
  label: tag,
@@ -1865,7 +2003,7 @@ function AgentTagsPanel({
1865
2003
  }
1866
2004
 
1867
2005
  // catalog/react/AgentListDropdown.tsx
1868
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
2006
+ import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
1869
2007
  var CONSUMER_ID = "agent-list-dropdown";
1870
2008
  function AgentListDropdown({
1871
2009
  onSelect,
@@ -1979,7 +2117,7 @@ function AgentListDropdown({
1979
2117
  const handleDetailPanelMouseLeave = useCallback5(() => {
1980
2118
  coreDetailMouseLeave(() => setRightPanel(null));
1981
2119
  }, [coreDetailMouseLeave]);
1982
- const resolveAgentHref = useMemo3(() => {
2120
+ const resolveAgentHref = useMemo4(() => {
1983
2121
  if (resolveAgentHrefProp) return resolveAgentHrefProp;
1984
2122
  if (!navigateTo) return void 0;
1985
2123
  return (agent) => navigateTo.replace("{id}", agent.id);
@@ -1997,22 +2135,22 @@ function AgentListDropdown({
1997
2135
  className
1998
2136
  ),
1999
2137
  children: [
2000
- /* @__PURE__ */ jsx14("span", { className: "min-w-0 max-w-[200px] flex-1 truncate text-left", children: displayLabel }),
2001
- activeFilterCount > 0 && /* @__PURE__ */ jsx14("span", { className: "flex items-center justify-center w-4 h-4 rounded-md bg-primary text-primary-foreground text-[10px]", children: activeFilterCount }),
2002
- /* @__PURE__ */ jsx14(ChevronDownIcon, { className: "w-3 h-3 text-muted-foreground/60" })
2138
+ /* @__PURE__ */ jsx15("span", { className: "min-w-0 max-w-[200px] flex-1 truncate text-left", children: displayLabel }),
2139
+ activeFilterCount > 0 && /* @__PURE__ */ jsx15("span", { className: "flex items-center justify-center w-4 h-4 rounded-md bg-primary text-primary-foreground text-[10px]", children: activeFilterCount }),
2140
+ /* @__PURE__ */ jsx15(ChevronDownIcon, { className: "w-3 h-3 text-muted-foreground/60" })
2003
2141
  ]
2004
2142
  }
2005
2143
  );
2006
2144
  const wrapTrigger = (Trigger) => {
2007
2145
  if (!showAssignedTooltip) {
2008
- return /* @__PURE__ */ jsx14(Trigger, { asChild: true, children: triggerButton });
2146
+ return /* @__PURE__ */ jsx15(Trigger, { asChild: true, children: triggerButton });
2009
2147
  }
2010
2148
  return /* @__PURE__ */ jsxs12(Tooltip, { ...open ? { open: false } : {}, children: [
2011
- /* @__PURE__ */ jsx14(Trigger, { asChild: true, children: /* @__PURE__ */ jsx14(TooltipTrigger, { asChild: true, children: triggerButton }) }),
2012
- /* @__PURE__ */ jsx14(TooltipContent, { side: "bottom", className: "max-w-xs", children: displayLabel })
2149
+ /* @__PURE__ */ jsx15(Trigger, { asChild: true, children: /* @__PURE__ */ jsx15(TooltipTrigger, { asChild: true, children: triggerButton }) }),
2150
+ /* @__PURE__ */ jsx15(TooltipContent, { side: "bottom", className: "max-w-xs", children: displayLabel })
2013
2151
  ] });
2014
2152
  };
2015
- const listPanel = /* @__PURE__ */ jsx14(
2153
+ const listPanel = /* @__PURE__ */ jsx15(
2016
2154
  AgentListContent,
2017
2155
  {
2018
2156
  agents,
@@ -2047,8 +2185,8 @@ function AgentListDropdown({
2047
2185
  return /* @__PURE__ */ jsxs12(Drawer, { open, onOpenChange: handleOpen, children: [
2048
2186
  wrapTrigger(DrawerTrigger),
2049
2187
  /* @__PURE__ */ jsxs12(DrawerContent, { className: "h-[85dvh]", children: [
2050
- /* @__PURE__ */ jsx14(DrawerTitle, { className: "sr-only", children: "Select Agent" }),
2051
- /* @__PURE__ */ jsx14("div", { className: "flex flex-col overflow-hidden flex-1 min-h-0", children: mobileDetailAgent ? /* @__PURE__ */ jsxs12("div", { className: "flex flex-col overflow-hidden", children: [
2188
+ /* @__PURE__ */ jsx15(DrawerTitle, { className: "sr-only", children: "Select Agent" }),
2189
+ /* @__PURE__ */ jsx15("div", { className: "flex flex-col overflow-hidden flex-1 min-h-0", children: mobileDetailAgent ? /* @__PURE__ */ jsxs12("div", { className: "flex flex-col overflow-hidden", children: [
2052
2190
  /* @__PURE__ */ jsxs12(
2053
2191
  "button",
2054
2192
  {
@@ -2056,19 +2194,19 @@ function AgentListDropdown({
2056
2194
  onClick: () => setMobileDetailAgent(null),
2057
2195
  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",
2058
2196
  children: [
2059
- /* @__PURE__ */ jsx14(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
2197
+ /* @__PURE__ */ jsx15(ChevronRightIcon, { className: "w-4 h-4 rotate-180" }),
2060
2198
  "Back"
2061
2199
  ]
2062
2200
  }
2063
2201
  ),
2064
- /* @__PURE__ */ jsx14("div", { className: "overflow-y-auto", children: /* @__PURE__ */ jsx14(
2202
+ /* @__PURE__ */ jsx15("div", { className: "overflow-y-auto", children: /* @__PURE__ */ jsx15(
2065
2203
  AgentDetailCard,
2066
2204
  {
2067
2205
  agent: mobileDetailAgent,
2068
2206
  onSelect: () => handleSelectAgent(mobileDetailAgent)
2069
2207
  }
2070
2208
  ) })
2071
- ] }) : mobileSubView ? /* @__PURE__ */ jsx14(
2209
+ ] }) : mobileSubView ? /* @__PURE__ */ jsx15(
2072
2210
  AgentMobileSubView,
2073
2211
  {
2074
2212
  view: mobileSubView,
@@ -2091,7 +2229,7 @@ function AgentListDropdown({
2091
2229
  }
2092
2230
  return /* @__PURE__ */ jsxs12(Popover, { open, onOpenChange: handleOpen, modal: false, children: [
2093
2231
  wrapTrigger(PopoverTrigger),
2094
- /* @__PURE__ */ jsx14(
2232
+ /* @__PURE__ */ jsx15(
2095
2233
  PopoverContent,
2096
2234
  {
2097
2235
  ...contentSide ? { side: contentSide } : {},
@@ -2103,7 +2241,7 @@ function AgentListDropdown({
2103
2241
  className: "p-0 overflow-hidden w-[680px]",
2104
2242
  style: { height: PANEL_HEIGHT, maxHeight: LIST_MAX_HEIGHT },
2105
2243
  children: /* @__PURE__ */ jsxs12("div", { className: "flex h-full", children: [
2106
- /* @__PURE__ */ jsx14("div", { className: "flex flex-col min-w-0 w-[340px] shrink-0 border-r border-border", children: listPanel }),
2244
+ /* @__PURE__ */ jsx15("div", { className: "flex flex-col min-w-0 w-[340px] shrink-0 border-r border-border", children: listPanel }),
2107
2245
  /* @__PURE__ */ jsxs12(
2108
2246
  "div",
2109
2247
  {
@@ -2111,21 +2249,21 @@ function AgentListDropdown({
2111
2249
  onMouseEnter: rightPanel === "detail" ? handleDetailPanelMouseEnter : void 0,
2112
2250
  onMouseLeave: rightPanel === "detail" ? handleDetailPanelMouseLeave : void 0,
2113
2251
  children: [
2114
- rightPanel === "detail" && hoveredAgent && /* @__PURE__ */ jsx14("div", { className: "h-full matrx-agent-fade-in", children: /* @__PURE__ */ jsx14(
2252
+ rightPanel === "detail" && hoveredAgent && /* @__PURE__ */ jsx15("div", { className: "h-full matrx-agent-fade-in", children: /* @__PURE__ */ jsx15(
2115
2253
  AgentDetailCard,
2116
2254
  {
2117
2255
  agent: hoveredAgent,
2118
2256
  onSelect: () => handleSelectAgent(hoveredAgent)
2119
2257
  }
2120
2258
  ) }, hoveredAgent.id),
2121
- rightPanel === "sort" && /* @__PURE__ */ jsx14(
2259
+ rightPanel === "sort" && /* @__PURE__ */ jsx15(
2122
2260
  AgentSortPanel,
2123
2261
  {
2124
2262
  consumer,
2125
2263
  onClose: () => setRightPanel(null)
2126
2264
  }
2127
2265
  ),
2128
- rightPanel === "categories" && /* @__PURE__ */ jsx14(
2266
+ rightPanel === "categories" && /* @__PURE__ */ jsx15(
2129
2267
  AgentCategoriesPanel,
2130
2268
  {
2131
2269
  consumer,
@@ -2138,7 +2276,7 @@ function AgentListDropdown({
2138
2276
  }
2139
2277
  }
2140
2278
  ),
2141
- rightPanel === "tags" && /* @__PURE__ */ jsx14(
2279
+ rightPanel === "tags" && /* @__PURE__ */ jsx15(
2142
2280
  AgentTagsPanel,
2143
2281
  {
2144
2282
  consumer,
@@ -2152,8 +2290,8 @@ function AgentListDropdown({
2152
2290
  }
2153
2291
  ),
2154
2292
  !hasRightPanel && /* @__PURE__ */ jsxs12("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 px-6 text-center", children: [
2155
- /* @__PURE__ */ jsx14(MousePointerClickIcon, { className: "h-6 w-6 text-muted-foreground/40" }),
2156
- /* @__PURE__ */ jsx14("p", { className: "text-xs text-muted-foreground/70 leading-relaxed", children: labels.hoverHint })
2293
+ /* @__PURE__ */ jsx15(MousePointerClickIcon, { className: "h-6 w-6 text-muted-foreground/40" }),
2294
+ /* @__PURE__ */ jsx15("p", { className: "text-xs text-muted-foreground/70 leading-relaxed", children: labels.hoverHint })
2157
2295
  ] })
2158
2296
  ]
2159
2297
  }
@@ -2167,7 +2305,7 @@ function AgentListDropdown({
2167
2305
  // catalog/react/AgentListInlinePicker.tsx
2168
2306
  import { cn as cn7 } from "@ai-matrx/design-system";
2169
2307
  import { useEffect as useEffect4, useRef as useRef5, useState as useState4 } from "react";
2170
- import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
2308
+ import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
2171
2309
  function AgentListInlinePicker({
2172
2310
  consumerId,
2173
2311
  onSelect,
@@ -2239,12 +2377,12 @@ function AgentListInlinePicker({
2239
2377
  onClick: () => setMobileDetailAgent(null),
2240
2378
  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",
2241
2379
  children: [
2242
- /* @__PURE__ */ jsx15(ChevronRightIcon, { className: "h-4 w-4 rotate-180" }),
2380
+ /* @__PURE__ */ jsx16(ChevronRightIcon, { className: "h-4 w-4 rotate-180" }),
2243
2381
  "Back"
2244
2382
  ]
2245
2383
  }
2246
2384
  ),
2247
- /* @__PURE__ */ jsx15("div", { className: "min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx15(
2385
+ /* @__PURE__ */ jsx16("div", { className: "min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ jsx16(
2248
2386
  AgentDetailCard,
2249
2387
  {
2250
2388
  agent: mobileDetailAgent,
@@ -2254,7 +2392,7 @@ function AgentListInlinePicker({
2254
2392
  ] });
2255
2393
  }
2256
2394
  if (mobileSubView) {
2257
- return /* @__PURE__ */ jsx15("div", { className: cn7("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ jsx15(
2395
+ return /* @__PURE__ */ jsx16("div", { className: cn7("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ jsx16(
2258
2396
  AgentMobileSubView,
2259
2397
  {
2260
2398
  view: mobileSubView,
@@ -2273,7 +2411,7 @@ function AgentListInlinePicker({
2273
2411
  }
2274
2412
  ) });
2275
2413
  }
2276
- return /* @__PURE__ */ jsx15("div", { className: cn7("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ jsx15(
2414
+ return /* @__PURE__ */ jsx16("div", { className: cn7("flex h-full min-h-0 flex-col", className), children: /* @__PURE__ */ jsx16(
2277
2415
  AgentListContent,
2278
2416
  {
2279
2417
  agents,
@@ -2324,12 +2462,17 @@ export {
2324
2462
  FilterChip,
2325
2463
  HOVER_GRACE_MS,
2326
2464
  LIST_MAX_HEIGHT,
2465
+ Music4Icon,
2327
2466
  OptionRow,
2328
2467
  PANEL_HEIGHT,
2329
2468
  SORT_OPTIONS,
2330
2469
  SearchInput,
2331
2470
  SidePanelHeader,
2332
2471
  coerceVisibleTab,
2472
+ orchestraDelegatesLine,
2473
+ orchestraDepthLine,
2474
+ orchestraLabel,
2475
+ orchestraModeLabel,
2333
2476
  useAgentCatalog,
2334
2477
  useAgentCatalogRows,
2335
2478
  useAgentCatalogState,