@ai-matrx/agents 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +196 -1
- package/dist/catalog/index.cjs +128 -25
- package/dist/catalog/index.cjs.map +1 -1
- package/dist/catalog/index.d.cts +138 -8
- package/dist/catalog/index.d.ts +138 -8
- package/dist/catalog/index.js +128 -25
- package/dist/catalog/index.js.map +1 -1
- package/dist/catalog/native/index.cjs +194 -70
- package/dist/catalog/native/index.cjs.map +1 -1
- package/dist/catalog/native/index.d.cts +49 -5
- package/dist/catalog/native/index.d.ts +49 -5
- package/dist/catalog/native/index.js +194 -70
- package/dist/catalog/native/index.js.map +1 -1
- package/dist/catalog/react/index.cjs +205 -71
- package/dist/catalog/react/index.cjs.map +1 -1
- package/dist/catalog/react/index.d.cts +77 -4
- package/dist/catalog/react/index.d.ts +77 -4
- package/dist/catalog/react/index.js +205 -71
- package/dist/catalog/react/index.js.map +1 -1
- package/dist/{orchestra-BWJM2MWP.d.cts → orchestra-DljbEiks.d.cts} +75 -2
- package/dist/{orchestra-BWJM2MWP.d.ts → orchestra-DljbEiks.d.ts} +75 -2
- package/package.json +1 -1
|
@@ -229,53 +229,27 @@ import {
|
|
|
229
229
|
|
|
230
230
|
// catalog/shared/useAgentConsumer.ts
|
|
231
231
|
import { useCallback as useCallback2, useEffect, useRef, useState } from "react";
|
|
232
|
-
|
|
233
|
-
// catalog/types.ts
|
|
234
|
-
function isMandateAgentId(id) {
|
|
235
|
-
return id.startsWith("mandate:");
|
|
236
|
-
}
|
|
237
|
-
var SORT_OPTIONS = [
|
|
238
|
-
{ value: "updated-desc", label: "Recent" },
|
|
239
|
-
{ value: "created-desc", label: "Created" },
|
|
240
|
-
{ value: "name-asc", label: "A \u2192 Z" },
|
|
241
|
-
{ value: "name-desc", label: "Z \u2192 A" },
|
|
242
|
-
{ value: "category-asc", label: "Category" }
|
|
243
|
-
];
|
|
244
|
-
var AGENT_NONE_SENTINEL = "__none__";
|
|
245
|
-
var DEFAULT_AGENT_CONSUMER_STATE = {
|
|
246
|
-
tab: "mine",
|
|
247
|
-
sortBy: "updated-desc",
|
|
248
|
-
searchTerm: "",
|
|
249
|
-
includedCats: [],
|
|
250
|
-
includedTags: [],
|
|
251
|
-
favFilter: "all",
|
|
252
|
-
archFilter: "active",
|
|
253
|
-
accessFilter: "any",
|
|
254
|
-
favoritesFirst: true,
|
|
255
|
-
listPage: 1,
|
|
256
|
-
sharedPage: 1,
|
|
257
|
-
serverMatchedIds: [],
|
|
258
|
-
isServerSearching: false,
|
|
259
|
-
deepSearch: false
|
|
260
|
-
};
|
|
261
|
-
|
|
262
|
-
// catalog/shared/useAgentConsumer.ts
|
|
263
232
|
var DEBOUNCE_MS = 250;
|
|
264
233
|
var MIN_QUERY_LENGTH = 2;
|
|
265
234
|
function useAgentConsumer(consumerId, options) {
|
|
266
235
|
const catalog = useAgentCatalog();
|
|
236
|
+
const defaults = catalog.consumerDefaults;
|
|
267
237
|
const selectConsumer = useCallback2(
|
|
268
|
-
(state) => state.consumers[consumerId] ??
|
|
269
|
-
[consumerId]
|
|
238
|
+
(state) => state.consumers[consumerId] ?? defaults,
|
|
239
|
+
[consumerId, defaults]
|
|
270
240
|
);
|
|
271
241
|
const consumer = useAgentCatalogState(selectConsumer);
|
|
272
242
|
const optionsRef = useRef(options);
|
|
273
243
|
optionsRef.current = options;
|
|
274
244
|
useEffect(() => {
|
|
275
245
|
const opts = optionsRef.current;
|
|
246
|
+
const initial = {
|
|
247
|
+
...opts?.initialTab ? { tab: opts.initialTab } : {},
|
|
248
|
+
...opts?.initialArchFilter ? { archFilter: opts.initialArchFilter } : {}
|
|
249
|
+
};
|
|
276
250
|
catalog.registerConsumer(
|
|
277
251
|
consumerId,
|
|
278
|
-
|
|
252
|
+
Object.keys(initial).length > 0 ? initial : void 0
|
|
279
253
|
);
|
|
280
254
|
return () => {
|
|
281
255
|
if (optionsRef.current?.unregisterOnUnmount) {
|
|
@@ -398,7 +372,10 @@ function useAgentConsumer(consumerId, options) {
|
|
|
398
372
|
isSearching
|
|
399
373
|
});
|
|
400
374
|
}, [consumerId, catalog, matchedIds, isSearching]);
|
|
401
|
-
const hasActiveFilters = consumer.searchTerm !== "" || consumer.includedCats.length > 0 || consumer.includedTags.length > 0 || consumer.favFilter !== "all" ||
|
|
375
|
+
const hasActiveFilters = consumer.searchTerm !== "" || consumer.includedCats.length > 0 || consumer.includedTags.length > 0 || consumer.favFilter !== "all" || // The archive filter is compared to THIS CATALOG'S default, not to the
|
|
376
|
+
// hardcoded platform one: a host that legitimately defaults to "show all"
|
|
377
|
+
// must not have the reset control permanently lit.
|
|
378
|
+
consumer.archFilter !== defaults.archFilter || consumer.accessFilter !== "any" || !consumer.favoritesFirst;
|
|
402
379
|
return {
|
|
403
380
|
tab: consumer.tab,
|
|
404
381
|
sortBy: consumer.sortBy,
|
|
@@ -407,6 +384,7 @@ function useAgentConsumer(consumerId, options) {
|
|
|
407
384
|
includedTags: consumer.includedTags,
|
|
408
385
|
favFilter: consumer.favFilter,
|
|
409
386
|
archFilter: consumer.archFilter,
|
|
387
|
+
archFilterDefault: defaults.archFilter,
|
|
410
388
|
accessFilter: consumer.accessFilter,
|
|
411
389
|
favoritesFirst: consumer.favoritesFirst,
|
|
412
390
|
listPage: consumer.listPage,
|
|
@@ -433,6 +411,34 @@ function useAgentConsumer(consumerId, options) {
|
|
|
433
411
|
};
|
|
434
412
|
}
|
|
435
413
|
|
|
414
|
+
// catalog/types.ts
|
|
415
|
+
function isMandateAgentId(id) {
|
|
416
|
+
return id.startsWith("mandate:");
|
|
417
|
+
}
|
|
418
|
+
var SORT_OPTIONS = [
|
|
419
|
+
{ value: "updated-desc", label: "Recent" },
|
|
420
|
+
{ value: "created-desc", label: "Created" },
|
|
421
|
+
{ value: "name-asc", label: "A \u2192 Z" },
|
|
422
|
+
{ value: "name-desc", label: "Z \u2192 A" },
|
|
423
|
+
{ value: "category-asc", label: "Category" }
|
|
424
|
+
];
|
|
425
|
+
var ARCHIVE_FILTER_ORDER = [
|
|
426
|
+
"active",
|
|
427
|
+
"both",
|
|
428
|
+
"archived"
|
|
429
|
+
];
|
|
430
|
+
var ARCHIVE_FILTER_OPTIONS = [
|
|
431
|
+
{ value: "active", label: "Hide archived", chip: "Archive" },
|
|
432
|
+
{ value: "both", label: "Show all", chip: "All + archived" },
|
|
433
|
+
{ value: "archived", label: "Archived only", chip: "Archived only" }
|
|
434
|
+
];
|
|
435
|
+
function nextArchFilter(current) {
|
|
436
|
+
const index = ARCHIVE_FILTER_ORDER.indexOf(current);
|
|
437
|
+
if (index < 0) return ARCHIVE_FILTER_ORDER[0];
|
|
438
|
+
return ARCHIVE_FILTER_ORDER[(index + 1) % ARCHIVE_FILTER_ORDER.length];
|
|
439
|
+
}
|
|
440
|
+
var AGENT_NONE_SENTINEL = "__none__";
|
|
441
|
+
|
|
436
442
|
// catalog/labels.ts
|
|
437
443
|
function agentListEmptyLabel(tab, labels) {
|
|
438
444
|
switch (tab) {
|
|
@@ -449,6 +455,26 @@ function shouldDefaultAgentListToPublicTab(args) {
|
|
|
449
455
|
if (!args.agentsLoaded) return false;
|
|
450
456
|
return args.ownedCount === 0;
|
|
451
457
|
}
|
|
458
|
+
function agentArchiveFilterChipLabel(archFilter) {
|
|
459
|
+
return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.chip ?? "Archive";
|
|
460
|
+
}
|
|
461
|
+
function agentArchiveFilterStateLabel(archFilter) {
|
|
462
|
+
return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.label ?? "Hide archived";
|
|
463
|
+
}
|
|
464
|
+
function agentArchiveFilterControlLabel(archFilter) {
|
|
465
|
+
return `Archive filter: ${agentArchiveFilterStateLabel(
|
|
466
|
+
archFilter
|
|
467
|
+
).toLowerCase()}. Click for ${agentArchiveFilterStateLabel(
|
|
468
|
+
nextArchFilter(archFilter)
|
|
469
|
+
).toLowerCase()}`;
|
|
470
|
+
}
|
|
471
|
+
function agentListFooterLabel(args) {
|
|
472
|
+
const { count, archFilter, archivedHiddenCount } = args;
|
|
473
|
+
if (archFilter === "archived") return `${count} archived shown`;
|
|
474
|
+
const base = `${count} agent${count !== 1 ? "s" : ""}`;
|
|
475
|
+
if (archFilter === "both") return `${base} \xB7 archived shown`;
|
|
476
|
+
return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
|
|
477
|
+
}
|
|
452
478
|
|
|
453
479
|
// catalog/score.ts
|
|
454
480
|
function computeAgentSearchScore(agent, query) {
|
|
@@ -525,7 +551,19 @@ function memoize2(fn) {
|
|
|
525
551
|
return last;
|
|
526
552
|
};
|
|
527
553
|
}
|
|
554
|
+
function compareAgentIds(a, b) {
|
|
555
|
+
const idA = a.id ?? "";
|
|
556
|
+
const idB = b.id ?? "";
|
|
557
|
+
if (idA < idB) return -1;
|
|
558
|
+
if (idA > idB) return 1;
|
|
559
|
+
return 0;
|
|
560
|
+
}
|
|
528
561
|
function applyAgentSortComparator(a, b, sortBy) {
|
|
562
|
+
const primary = compareAgentSortKey(a, b, sortBy);
|
|
563
|
+
if (!Number.isFinite(primary) || primary === 0) return compareAgentIds(a, b);
|
|
564
|
+
return primary;
|
|
565
|
+
}
|
|
566
|
+
function compareAgentSortKey(a, b, sortBy) {
|
|
529
567
|
switch (sortBy) {
|
|
530
568
|
case "name-asc":
|
|
531
569
|
return (a.name ?? "").localeCompare(b.name ?? "");
|
|
@@ -627,8 +665,7 @@ function filterUserTypeAgents(agents, consumer) {
|
|
|
627
665
|
if (tab === "mine" && agent.isOwner !== true) return false;
|
|
628
666
|
if (tab === "shared" && !(agent.isOwner === false && agent.accessLevel != null))
|
|
629
667
|
return false;
|
|
630
|
-
if (archFilter
|
|
631
|
-
if (archFilter === "archived" && !agent.isArchived) return false;
|
|
668
|
+
if (!agentMatchesArchiveFilter(agent, archFilter)) return false;
|
|
632
669
|
if (favFilter === "yes" && !agent.isFavorite) return false;
|
|
633
670
|
if (favFilter === "no" && agent.isFavorite) return false;
|
|
634
671
|
if (accessFilter === "owned" && agent.isOwner !== true) return false;
|
|
@@ -658,9 +695,10 @@ function filterUserTypeAgents(agents, consumer) {
|
|
|
658
695
|
return sortFilteredAgents(filtered, consumer);
|
|
659
696
|
}
|
|
660
697
|
function filterBuiltinTypeAgents(agents, consumer) {
|
|
661
|
-
const { searchTerm, favFilter, includedCats, includedTags } = consumer;
|
|
698
|
+
const { searchTerm, favFilter, archFilter, includedCats, includedTags } = consumer;
|
|
662
699
|
const serverMatched = new Set(consumer.serverMatchedIds);
|
|
663
700
|
const filtered = agents.filter((agent) => {
|
|
701
|
+
if (!agentMatchesArchiveFilter(agent, archFilter)) return false;
|
|
664
702
|
if (favFilter === "yes" && !agent.isFavorite) return false;
|
|
665
703
|
if (favFilter === "no" && agent.isFavorite) return false;
|
|
666
704
|
if (includedCats.length > 0) {
|
|
@@ -701,22 +739,55 @@ var makeSelectFilteredAgents = (includeSystemInAll = false) => memoize2(
|
|
|
701
739
|
return filterUserTypeAgents(userAgents, consumer);
|
|
702
740
|
}
|
|
703
741
|
);
|
|
742
|
+
function agentMatchesArchiveFilter(agent, archFilter) {
|
|
743
|
+
if (archFilter === "active") return !agent.isArchived;
|
|
744
|
+
if (archFilter === "archived") return Boolean(agent.isArchived);
|
|
745
|
+
return true;
|
|
746
|
+
}
|
|
747
|
+
function countBuiltinRows(agents, archFilter) {
|
|
748
|
+
let n = 0;
|
|
749
|
+
for (const a of agents) {
|
|
750
|
+
if (a.agentType !== "builtin") continue;
|
|
751
|
+
if (!agentMatchesArchiveFilter(a, archFilter)) continue;
|
|
752
|
+
n += 1;
|
|
753
|
+
}
|
|
754
|
+
return n;
|
|
755
|
+
}
|
|
756
|
+
function countUserRows(agents, archFilter, predicate) {
|
|
757
|
+
let n = 0;
|
|
758
|
+
for (const a of agents) {
|
|
759
|
+
if (a.agentType !== "user") continue;
|
|
760
|
+
if (!agentMatchesArchiveFilter(a, archFilter)) continue;
|
|
761
|
+
if (predicate(a)) n += 1;
|
|
762
|
+
}
|
|
763
|
+
return n;
|
|
764
|
+
}
|
|
765
|
+
var isOwned = (a) => a.isOwner === true;
|
|
766
|
+
var isShared = (a) => a.isOwner === false && a.accessLevel != null;
|
|
767
|
+
var isAny = () => true;
|
|
768
|
+
var isFavorite = (a) => Boolean(a.isFavorite);
|
|
769
|
+
var selectAgentTabCounts = memoize2(
|
|
770
|
+
(agents, archFilter) => ({
|
|
771
|
+
mine: countUserRows(agents, archFilter, isOwned),
|
|
772
|
+
shared: countUserRows(agents, archFilter, isShared),
|
|
773
|
+
all: countUserRows(agents, archFilter, isAny),
|
|
774
|
+
system: countBuiltinRows(agents, archFilter)
|
|
775
|
+
})
|
|
776
|
+
);
|
|
704
777
|
var selectTotalUserAgentsCount = memoize1(
|
|
705
|
-
(agents) =>
|
|
778
|
+
(agents) => countUserRows(agents, "active", isAny)
|
|
706
779
|
);
|
|
707
780
|
var selectTotalOwnedAgentsCount = memoize1(
|
|
708
|
-
(agents) =>
|
|
781
|
+
(agents) => countUserRows(agents, "active", isOwned)
|
|
709
782
|
);
|
|
710
783
|
var selectTotalSharedAgentsCount = memoize1(
|
|
711
|
-
(agents) =>
|
|
712
|
-
(a) => a.isOwner === false && a.accessLevel != null
|
|
713
|
-
).length
|
|
784
|
+
(agents) => countUserRows(agents, "active", isShared)
|
|
714
785
|
);
|
|
715
786
|
var selectTotalBuiltinAgentsCount = memoize1(
|
|
716
|
-
(agents) =>
|
|
787
|
+
(agents) => countBuiltinRows(agents, "active")
|
|
717
788
|
);
|
|
718
789
|
var selectTotalFavoriteAgentsCount = memoize1(
|
|
719
|
-
(agents) =>
|
|
790
|
+
(agents) => countUserRows(agents, "active", isFavorite)
|
|
720
791
|
);
|
|
721
792
|
|
|
722
793
|
// catalog/shared/useAgentListCore.ts
|
|
@@ -735,6 +806,7 @@ function useAgentListCore({
|
|
|
735
806
|
initialTab,
|
|
736
807
|
includeSystemInAll = false,
|
|
737
808
|
visibleTabs,
|
|
809
|
+
initialArchFilter,
|
|
738
810
|
excludeAgentIds = EMPTY_EXCLUDES,
|
|
739
811
|
defaultMandateKey
|
|
740
812
|
}) {
|
|
@@ -744,10 +816,14 @@ function useAgentListCore({
|
|
|
744
816
|
const [hoveredAgent, setHoveredAgent] = useState2(null);
|
|
745
817
|
const hoverLeaveTimerRef = useRef2(null);
|
|
746
818
|
const defaultTabAppliedRef = useRef2(false);
|
|
747
|
-
const consumer = useAgentConsumer(consumerId, {
|
|
819
|
+
const consumer = useAgentConsumer(consumerId, {
|
|
820
|
+
unregisterOnUnmount: true,
|
|
821
|
+
...initialArchFilter ? { initialArchFilter } : {}
|
|
822
|
+
});
|
|
748
823
|
const rows = useAgentCatalogRows();
|
|
749
824
|
const userId = catalog.getUserIdOrNull();
|
|
750
|
-
const
|
|
825
|
+
const tabCountsForFilter = selectAgentTabCounts(rows, consumer.state.archFilter);
|
|
826
|
+
const ownedCount = tabCountsForFilter.mine;
|
|
751
827
|
const selectFiltered = useMemo3(
|
|
752
828
|
() => makeSelectFilteredAgents(includeSystemInAll),
|
|
753
829
|
[includeSystemInAll]
|
|
@@ -757,19 +833,27 @@ function useAgentListCore({
|
|
|
757
833
|
() => new Set(excludeAgentIds),
|
|
758
834
|
[excludeAgentIds]
|
|
759
835
|
);
|
|
760
|
-
const
|
|
836
|
+
const applyExcludes = useCallback3(
|
|
837
|
+
(list) => excludedAgentIds.size === 0 ? list : list.filter((agent) => !excludedAgentIds.has(agent.id)),
|
|
838
|
+
[excludedAgentIds]
|
|
839
|
+
);
|
|
840
|
+
const agents = applyExcludes(filteredAgents);
|
|
841
|
+
const selectArchivedProbe = useMemo3(
|
|
842
|
+
() => makeSelectFilteredAgents(includeSystemInAll),
|
|
843
|
+
[includeSystemInAll]
|
|
844
|
+
);
|
|
845
|
+
const archiveProbeState = useMemo3(
|
|
846
|
+
() => ({ ...consumer.state, archFilter: "archived" }),
|
|
847
|
+
[consumer.state]
|
|
848
|
+
);
|
|
849
|
+
const archivedHiddenCount = consumer.archFilter === "active" ? applyExcludes(selectArchivedProbe(rows, archiveProbeState)).length : 0;
|
|
761
850
|
const status = useAgentCatalogState(selectStatus);
|
|
762
851
|
const activeAgentId = activeAgentIdOverride ?? null;
|
|
763
852
|
const pinnedAgent = activeAgentId ? catalog.getAgent(activeAgentId) : void 0;
|
|
764
853
|
const onSystemTab = consumer.tab === "system";
|
|
765
854
|
const allCategories = onSystemTab ? selectAllSystemAgentCategories(rows) : selectAllAgentCategories(rows);
|
|
766
855
|
const allTags = onSystemTab ? selectAllSystemAgentTags(rows) : selectAllAgentTags(rows);
|
|
767
|
-
const tabCounts =
|
|
768
|
-
mine: ownedCount,
|
|
769
|
-
shared: selectTotalSharedAgentsCount(rows),
|
|
770
|
-
all: selectTotalUserAgentsCount(rows),
|
|
771
|
-
system: selectTotalBuiltinAgentsCount(rows)
|
|
772
|
-
};
|
|
856
|
+
const tabCounts = tabCountsForFilter;
|
|
773
857
|
const isLoading = status === "loading";
|
|
774
858
|
const agentsLoaded = status === "succeeded" || status === "failed";
|
|
775
859
|
const ensureLoaded = useCallback3(() => {
|
|
@@ -849,7 +933,9 @@ function useAgentListCore({
|
|
|
849
933
|
},
|
|
850
934
|
[onSelect, navigateTo, navigate, catalog, consumerId]
|
|
851
935
|
);
|
|
852
|
-
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)
|
|
936
|
+
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) + // The archive filter counts like every other filter, so a list showing
|
|
937
|
+
// archived rows offers the reset control that puts them away again.
|
|
938
|
+
(consumer.archFilter !== consumer.archFilterDefault ? 1 : 0);
|
|
853
939
|
const handleAgentHover = useCallback3(
|
|
854
940
|
(agent, panelOpen) => {
|
|
855
941
|
if (panelOpen) return;
|
|
@@ -890,8 +976,15 @@ function useAgentListCore({
|
|
|
890
976
|
},
|
|
891
977
|
[]
|
|
892
978
|
);
|
|
979
|
+
const footerLabel = agentListFooterLabel({
|
|
980
|
+
count: agents.length,
|
|
981
|
+
archFilter: consumer.archFilter,
|
|
982
|
+
archivedHiddenCount
|
|
983
|
+
});
|
|
893
984
|
return {
|
|
894
985
|
agents,
|
|
986
|
+
archivedHiddenCount,
|
|
987
|
+
footerLabel,
|
|
895
988
|
isLoading,
|
|
896
989
|
activeAgentId,
|
|
897
990
|
pinnedAgent: pinnedAgent ?? null,
|
|
@@ -1034,6 +1127,18 @@ var SHAPES = {
|
|
|
1034
1127
|
"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"
|
|
1035
1128
|
]
|
|
1036
1129
|
},
|
|
1130
|
+
/**
|
|
1131
|
+
* THE ARCHIVE GLYPH (Lucide `archive`) — the ONE mark of the platform
|
|
1132
|
+
* archive filter, drawn identically in every Matrx client so the control a
|
|
1133
|
+
* person learns on one surface is recognisable on all of them.
|
|
1134
|
+
*/
|
|
1135
|
+
archive: {
|
|
1136
|
+
paths: [
|
|
1137
|
+
"M3 3h18a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z",
|
|
1138
|
+
"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",
|
|
1139
|
+
"M10 12h4"
|
|
1140
|
+
]
|
|
1141
|
+
},
|
|
1037
1142
|
circleCheck: {
|
|
1038
1143
|
paths: ["m9 12 2 2 4-4"],
|
|
1039
1144
|
circles: [{ cx: 12, cy: 12, r: 10 }]
|
|
@@ -1103,6 +1208,7 @@ var TEXT_GLYPHS = {
|
|
|
1103
1208
|
folder: "\u25A4",
|
|
1104
1209
|
tag: "\u2317",
|
|
1105
1210
|
rotateCcw: "\u21BA",
|
|
1211
|
+
archive: "\u25A3",
|
|
1106
1212
|
loader: "\u25CC",
|
|
1107
1213
|
alertTriangle: "\u26A0",
|
|
1108
1214
|
music4: "\u266A",
|
|
@@ -1185,31 +1291,31 @@ function FavoriteAgentButton({
|
|
|
1185
1291
|
const theme = useAgentCatalogNativeTheme();
|
|
1186
1292
|
const select = useCallback4((state) => state.byId[id], [id]);
|
|
1187
1293
|
const record = useAgentCatalogState(select);
|
|
1188
|
-
const
|
|
1294
|
+
const isFavorite2 = record?.isFavorite ?? false;
|
|
1189
1295
|
const isOwner = record?.isOwner ?? true;
|
|
1190
1296
|
const inert = Boolean(disabled) || !isOwner;
|
|
1191
|
-
const title = isOwner ?
|
|
1297
|
+
const title = isOwner ? isFavorite2 ? "Remove from favorites" : "Add to favorites" : "Shared \u2014 cannot favorite";
|
|
1192
1298
|
return /* @__PURE__ */ jsx4(
|
|
1193
1299
|
Pressable2,
|
|
1194
1300
|
{
|
|
1195
1301
|
onPress: () => {
|
|
1196
1302
|
if (inert) return;
|
|
1197
|
-
void catalog.setFavorite(id, !
|
|
1303
|
+
void catalog.setFavorite(id, !isFavorite2).catch(() => {
|
|
1198
1304
|
});
|
|
1199
1305
|
},
|
|
1200
1306
|
disabled: inert,
|
|
1201
1307
|
hitSlop: 8,
|
|
1202
1308
|
accessibilityRole: "button",
|
|
1203
1309
|
accessibilityLabel: title,
|
|
1204
|
-
accessibilityState: { disabled: inert, selected:
|
|
1310
|
+
accessibilityState: { disabled: inert, selected: isFavorite2 },
|
|
1205
1311
|
style: { opacity: inert ? 0.4 : 1 },
|
|
1206
1312
|
children: /* @__PURE__ */ jsx4(
|
|
1207
1313
|
AgentIcon,
|
|
1208
1314
|
{
|
|
1209
1315
|
name: "star",
|
|
1210
1316
|
size,
|
|
1211
|
-
filled:
|
|
1212
|
-
color:
|
|
1317
|
+
filled: isFavorite2,
|
|
1318
|
+
color: isFavorite2 ? theme.colors.favorite : theme.colors.textFaint,
|
|
1213
1319
|
report: catalog.errorSink
|
|
1214
1320
|
}
|
|
1215
1321
|
)
|
|
@@ -1616,7 +1722,9 @@ function FilterChip({
|
|
|
1616
1722
|
icon,
|
|
1617
1723
|
label,
|
|
1618
1724
|
active,
|
|
1619
|
-
onPress
|
|
1725
|
+
onPress,
|
|
1726
|
+
accessibilityLabel,
|
|
1727
|
+
testID
|
|
1620
1728
|
}) {
|
|
1621
1729
|
const theme = useAgentCatalogNativeTheme();
|
|
1622
1730
|
const { errorSink } = useAgentCatalog();
|
|
@@ -1627,7 +1735,8 @@ function FilterChip({
|
|
|
1627
1735
|
onPress,
|
|
1628
1736
|
accessibilityRole: "button",
|
|
1629
1737
|
accessibilityState: { selected: active },
|
|
1630
|
-
accessibilityLabel: label,
|
|
1738
|
+
accessibilityLabel: accessibilityLabel ?? label,
|
|
1739
|
+
...testID ? { testID } : {},
|
|
1631
1740
|
style: ({ pressed }) => [
|
|
1632
1741
|
styles2.chip,
|
|
1633
1742
|
{
|
|
@@ -1886,6 +1995,17 @@ function AgentFilterBar({
|
|
|
1886
1995
|
}
|
|
1887
1996
|
}
|
|
1888
1997
|
),
|
|
1998
|
+
/* @__PURE__ */ jsx7(
|
|
1999
|
+
FilterChip,
|
|
2000
|
+
{
|
|
2001
|
+
icon: "archive",
|
|
2002
|
+
label: agentArchiveFilterChipLabel(consumer.archFilter),
|
|
2003
|
+
active: consumer.archFilter !== consumer.archFilterDefault,
|
|
2004
|
+
accessibilityLabel: agentArchiveFilterControlLabel(consumer.archFilter),
|
|
2005
|
+
testID: "agent-archive-filter",
|
|
2006
|
+
onPress: () => consumer.setArchFilter(nextArchFilter(consumer.archFilter))
|
|
2007
|
+
}
|
|
2008
|
+
),
|
|
1889
2009
|
allCategories.length > 0 && /* @__PURE__ */ jsx7(
|
|
1890
2010
|
FilterChip,
|
|
1891
2011
|
{
|
|
@@ -2232,7 +2352,8 @@ function AgentListContent({
|
|
|
2232
2352
|
systemTabLabel,
|
|
2233
2353
|
pinnedAgent = null,
|
|
2234
2354
|
defaultRow = null,
|
|
2235
|
-
autoFocusSearch = false
|
|
2355
|
+
autoFocusSearch = false,
|
|
2356
|
+
archivedHiddenCount = 0
|
|
2236
2357
|
}) {
|
|
2237
2358
|
const catalog = useAgentCatalog();
|
|
2238
2359
|
const theme = useAgentCatalogNativeTheme();
|
|
@@ -2460,19 +2581,20 @@ function AgentListContent({
|
|
|
2460
2581
|
),
|
|
2461
2582
|
/* @__PURE__ */ jsx10(View4, { style: hairline }),
|
|
2462
2583
|
/* @__PURE__ */ jsxs7(View4, { style: [styles6.footer, { paddingHorizontal: theme.spacing.md }], children: [
|
|
2463
|
-
/* @__PURE__ */
|
|
2584
|
+
/* @__PURE__ */ jsx10(
|
|
2464
2585
|
Text7,
|
|
2465
2586
|
{
|
|
2587
|
+
testID: "agent-list-footer",
|
|
2466
2588
|
style: {
|
|
2467
2589
|
color: theme.colors.textMuted,
|
|
2468
2590
|
fontSize: theme.fontSize.xs,
|
|
2469
2591
|
fontVariant: ["tabular-nums"]
|
|
2470
2592
|
},
|
|
2471
|
-
children:
|
|
2472
|
-
agents.length,
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2593
|
+
children: agentListFooterLabel({
|
|
2594
|
+
count: agents.length,
|
|
2595
|
+
archFilter: consumer.archFilter,
|
|
2596
|
+
archivedHiddenCount
|
|
2597
|
+
})
|
|
2476
2598
|
}
|
|
2477
2599
|
),
|
|
2478
2600
|
consumer.searchTerm.length > 0 && /* @__PURE__ */ jsx10(
|
|
@@ -2639,6 +2761,7 @@ function AgentPickerBody({
|
|
|
2639
2761
|
const [panelSearch, setPanelSearch] = useState3("");
|
|
2640
2762
|
const {
|
|
2641
2763
|
agents,
|
|
2764
|
+
archivedHiddenCount,
|
|
2642
2765
|
isLoading,
|
|
2643
2766
|
allCategories,
|
|
2644
2767
|
allTags,
|
|
@@ -2710,6 +2833,7 @@ function AgentPickerBody({
|
|
|
2710
2833
|
onReset: consumer.resetFilters,
|
|
2711
2834
|
activeFilterCount,
|
|
2712
2835
|
tabCounts,
|
|
2836
|
+
archivedHiddenCount,
|
|
2713
2837
|
...visibleTabs ? { visibleTabs } : {},
|
|
2714
2838
|
...systemTabLabel ?? (includeSystemInAll ? "System" : void 0) ? {
|
|
2715
2839
|
systemTabLabel: systemTabLabel ?? (includeSystemInAll ? "System" : void 0)
|