@ai-matrx/agents 0.59.256 → 0.59.257

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 CHANGED
@@ -1,10 +1,15 @@
1
1
  # Changelog
2
2
 
3
- ## 0.59.256
3
+ ## 0.59.257
4
4
 
5
5
  UNVERIFIED: this release has no Unreleased entry and the source comparison could not be made (the caller supplied no source comparison). Whether source changed is unknown; consumer action is unknown.
6
6
  Check the package's gitHead on npm against this version's gitHead: `git diff <previous gitHead> <this gitHead> -- apps/shared/matrx-agents/src`.
7
7
 
8
+ ## 0.59.256
9
+
10
+ Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff be3d056be5 76b41cb76b -- apps/shared/matrx-agents/src`
11
+ has no shipped-source changes outside tests, fixtures and docs). No consumer action required.
12
+
8
13
  ## 0.59.255
9
14
 
10
15
  Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 9137bf6ff3 be3d056be5 -- apps/shared/matrx-agents/src`
@@ -266,7 +266,7 @@ var import_react_native12 = require("react-native");
266
266
  var import_react6 = require("react");
267
267
  var import_react_native11 = require("react-native");
268
268
 
269
- // catalog/shared/useAgentListCore.ts
269
+ // catalog/shared/useAgentListCore-react.ts
270
270
  var import_react4 = require("react");
271
271
 
272
272
  // catalog/shared/useAgentConsumer.ts
@@ -841,14 +841,7 @@ function agentListFooterLabel(args) {
841
841
  return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
842
842
  }
843
843
 
844
- // catalog/shared/useAgentListCore.ts
845
- var HOVER_GRACE_MS = 900;
846
- function coerceVisibleTab(current, allowed, initialTab) {
847
- if (allowed.length === 0) return null;
848
- if (allowed.includes(current)) return null;
849
- return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
850
- }
851
- var EMPTY_EXCLUDES = [];
844
+ // catalog/shared/useAgentListCore-react.ts
852
845
  function useAgentListCore({
853
846
  consumerId,
854
847
  onSelect,
@@ -1074,6 +1067,15 @@ function useAgentListCore({
1074
1067
  handleDetailPanelMouseLeave
1075
1068
  };
1076
1069
  }
1070
+
1071
+ // catalog/shared/useAgentListCore.ts
1072
+ var HOVER_GRACE_MS = 900;
1073
+ function coerceVisibleTab(current, allowed, initialTab) {
1074
+ if (allowed.length === 0) return null;
1075
+ if (allowed.includes(current)) return null;
1076
+ return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
1077
+ }
1078
+ var EMPTY_EXCLUDES = [];
1077
1079
  var selectStatus = (state) => state.status;
1078
1080
 
1079
1081
  // catalog/native/AgentDetailCard.tsx
@@ -498,24 +498,6 @@ declare function AgentListSheet({ title, ...props }: AgentListSheetProps): react
498
498
  type AgentListInlinePickerProps = AgentPickerProps;
499
499
  declare function AgentListInlinePicker(props: AgentListInlinePickerProps): react.JSX.Element;
500
500
 
501
- /**
502
- * catalog/shared/useAgentConsumer.ts — VERBATIM port of matrx-frontend
503
- * `features/agents/hooks/useAgentConsumer.ts`.
504
- *
505
- * Wraps a single consumer slot identified by `consumerId`. Registers the slot
506
- * on mount, optionally unregisters on unmount, and returns every filter/sort/
507
- * pagination value plus stable write helpers.
508
- *
509
- * Two seams inverted, nothing else:
510
- * - `useAppSelector`/`useAppDispatch` → `useAgentCatalog()` + the store's
511
- * own methods.
512
- * - `useServerAgentSearch` (a separate frontend hook) is folded IN, because
513
- * it was already wired here and nowhere else: EVERY agent surface that
514
- * uses a consumer searches the full server-side set. A local-only search
515
- * over a paginated list reports "no results" for agents that were merely
516
- * never fetched — a wrong answer, not a missing feature.
517
- */
518
-
519
501
  interface UseAgentConsumerReturn {
520
502
  tab: AgentTab;
521
503
  sortBy: AgentSortOption;
@@ -585,6 +567,33 @@ declare function useAgentConsumer(consumerId: string, options?: {
585
567
  initialArchFilter?: AgentArchFilter;
586
568
  }): UseAgentConsumerReturn;
587
569
 
570
+ declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
571
+ agents: AgentSummary[];
572
+ archivedHiddenCount: number;
573
+ footerLabel: string;
574
+ isLoading: boolean;
575
+ activeAgentId: string | null;
576
+ pinnedAgent: AgentSummary | null;
577
+ defaultRow: DefaultRowState | null;
578
+ /** The host filter's chip label while it narrows the list; else null. */
579
+ agentFilterLabel: string | null;
580
+ clearAgentFilter: () => void;
581
+ resumeAgentFilter: () => void;
582
+ allCategories: string[];
583
+ allTags: string[];
584
+ consumer: UseAgentConsumerReturn;
585
+ tabCounts: AgentListTabCounts;
586
+ activeFilterCount: number;
587
+ hoveredAgent: AgentSummary | null;
588
+ setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
589
+ ensureLoaded: () => void;
590
+ handleSelectAgent: (agent: AgentSummary) => void;
591
+ handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
592
+ handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
593
+ handleDetailPanelMouseEnter: () => void;
594
+ handleDetailPanelMouseLeave: (onClear: () => void) => void;
595
+ };
596
+
588
597
  /**
589
598
  * The four ownership counts a tab strip prints. Declared HERE, beside the code
590
599
  * that computes them, so both the web tab strip and the native one name the
@@ -699,32 +708,6 @@ declare const HOVER_GRACE_MS = 900;
699
708
  * else the first allowed tab.
700
709
  */
701
710
  declare function coerceVisibleTab(current: AgentTab, allowed: readonly AgentTab[], initialTab?: AgentTab): AgentTab | null;
702
- declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
703
- agents: AgentSummary[];
704
- archivedHiddenCount: number;
705
- footerLabel: string;
706
- isLoading: boolean;
707
- activeAgentId: string | null;
708
- pinnedAgent: AgentSummary | null;
709
- defaultRow: DefaultRowState | null;
710
- /** The host filter's chip label while it narrows the list; else null. */
711
- agentFilterLabel: string | null;
712
- clearAgentFilter: () => void;
713
- resumeAgentFilter: () => void;
714
- allCategories: string[];
715
- allTags: string[];
716
- consumer: UseAgentConsumerReturn;
717
- tabCounts: AgentListTabCounts;
718
- activeFilterCount: number;
719
- hoveredAgent: AgentSummary | null;
720
- setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
721
- ensureLoaded: () => void;
722
- handleSelectAgent: (agent: AgentSummary) => void;
723
- handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
724
- handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
725
- handleDetailPanelMouseEnter: () => void;
726
- handleDetailPanelMouseLeave: (onClear: () => void) => void;
727
- };
728
711
 
729
712
  interface AgentListContentProps {
730
713
  agents: AgentSummary[];
@@ -498,24 +498,6 @@ declare function AgentListSheet({ title, ...props }: AgentListSheetProps): react
498
498
  type AgentListInlinePickerProps = AgentPickerProps;
499
499
  declare function AgentListInlinePicker(props: AgentListInlinePickerProps): react.JSX.Element;
500
500
 
501
- /**
502
- * catalog/shared/useAgentConsumer.ts — VERBATIM port of matrx-frontend
503
- * `features/agents/hooks/useAgentConsumer.ts`.
504
- *
505
- * Wraps a single consumer slot identified by `consumerId`. Registers the slot
506
- * on mount, optionally unregisters on unmount, and returns every filter/sort/
507
- * pagination value plus stable write helpers.
508
- *
509
- * Two seams inverted, nothing else:
510
- * - `useAppSelector`/`useAppDispatch` → `useAgentCatalog()` + the store's
511
- * own methods.
512
- * - `useServerAgentSearch` (a separate frontend hook) is folded IN, because
513
- * it was already wired here and nowhere else: EVERY agent surface that
514
- * uses a consumer searches the full server-side set. A local-only search
515
- * over a paginated list reports "no results" for agents that were merely
516
- * never fetched — a wrong answer, not a missing feature.
517
- */
518
-
519
501
  interface UseAgentConsumerReturn {
520
502
  tab: AgentTab;
521
503
  sortBy: AgentSortOption;
@@ -585,6 +567,33 @@ declare function useAgentConsumer(consumerId: string, options?: {
585
567
  initialArchFilter?: AgentArchFilter;
586
568
  }): UseAgentConsumerReturn;
587
569
 
570
+ declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
571
+ agents: AgentSummary[];
572
+ archivedHiddenCount: number;
573
+ footerLabel: string;
574
+ isLoading: boolean;
575
+ activeAgentId: string | null;
576
+ pinnedAgent: AgentSummary | null;
577
+ defaultRow: DefaultRowState | null;
578
+ /** The host filter's chip label while it narrows the list; else null. */
579
+ agentFilterLabel: string | null;
580
+ clearAgentFilter: () => void;
581
+ resumeAgentFilter: () => void;
582
+ allCategories: string[];
583
+ allTags: string[];
584
+ consumer: UseAgentConsumerReturn;
585
+ tabCounts: AgentListTabCounts;
586
+ activeFilterCount: number;
587
+ hoveredAgent: AgentSummary | null;
588
+ setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
589
+ ensureLoaded: () => void;
590
+ handleSelectAgent: (agent: AgentSummary) => void;
591
+ handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
592
+ handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
593
+ handleDetailPanelMouseEnter: () => void;
594
+ handleDetailPanelMouseLeave: (onClear: () => void) => void;
595
+ };
596
+
588
597
  /**
589
598
  * The four ownership counts a tab strip prints. Declared HERE, beside the code
590
599
  * that computes them, so both the web tab strip and the native one name the
@@ -699,32 +708,6 @@ declare const HOVER_GRACE_MS = 900;
699
708
  * else the first allowed tab.
700
709
  */
701
710
  declare function coerceVisibleTab(current: AgentTab, allowed: readonly AgentTab[], initialTab?: AgentTab): AgentTab | null;
702
- declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
703
- agents: AgentSummary[];
704
- archivedHiddenCount: number;
705
- footerLabel: string;
706
- isLoading: boolean;
707
- activeAgentId: string | null;
708
- pinnedAgent: AgentSummary | null;
709
- defaultRow: DefaultRowState | null;
710
- /** The host filter's chip label while it narrows the list; else null. */
711
- agentFilterLabel: string | null;
712
- clearAgentFilter: () => void;
713
- resumeAgentFilter: () => void;
714
- allCategories: string[];
715
- allTags: string[];
716
- consumer: UseAgentConsumerReturn;
717
- tabCounts: AgentListTabCounts;
718
- activeFilterCount: number;
719
- hoveredAgent: AgentSummary | null;
720
- setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
721
- ensureLoaded: () => void;
722
- handleSelectAgent: (agent: AgentSummary) => void;
723
- handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
724
- handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
725
- handleDetailPanelMouseEnter: () => void;
726
- handleDetailPanelMouseLeave: (onClear: () => void) => void;
727
- };
728
711
 
729
712
  interface AgentListContentProps {
730
713
  agents: AgentSummary[];
@@ -218,14 +218,8 @@ import { StyleSheet as StyleSheet9, Text as Text9, View as View7 } from "react-n
218
218
  import { useEffect as useEffect3, useState as useState3 } from "react";
219
219
  import { StyleSheet as StyleSheet8, View as View6 } from "react-native";
220
220
 
221
- // catalog/shared/useAgentListCore.ts
222
- import {
223
- useCallback as useCallback3,
224
- useEffect as useEffect2,
225
- useMemo as useMemo3,
226
- useRef as useRef2,
227
- useState as useState2
228
- } from "react";
221
+ // catalog/shared/useAgentListCore-react.ts
222
+ import { useCallback as useCallback3, useEffect as useEffect2, useMemo as useMemo3, useRef as useRef2, useState as useState2 } from "react";
229
223
 
230
224
  // catalog/shared/useAgentConsumer.ts
231
225
  import { useCallback as useCallback2, useEffect, useRef, useState } from "react";
@@ -799,14 +793,7 @@ function agentListFooterLabel(args) {
799
793
  return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
800
794
  }
801
795
 
802
- // catalog/shared/useAgentListCore.ts
803
- var HOVER_GRACE_MS = 900;
804
- function coerceVisibleTab(current, allowed, initialTab) {
805
- if (allowed.length === 0) return null;
806
- if (allowed.includes(current)) return null;
807
- return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
808
- }
809
- var EMPTY_EXCLUDES = [];
796
+ // catalog/shared/useAgentListCore-react.ts
810
797
  function useAgentListCore({
811
798
  consumerId,
812
799
  onSelect,
@@ -1032,6 +1019,15 @@ function useAgentListCore({
1032
1019
  handleDetailPanelMouseLeave
1033
1020
  };
1034
1021
  }
1022
+
1023
+ // catalog/shared/useAgentListCore.ts
1024
+ var HOVER_GRACE_MS = 900;
1025
+ function coerceVisibleTab(current, allowed, initialTab) {
1026
+ if (allowed.length === 0) return null;
1027
+ if (allowed.includes(current)) return null;
1028
+ return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
1029
+ }
1030
+ var EMPTY_EXCLUDES = [];
1035
1031
  var selectStatus = (state) => state.status;
1036
1032
 
1037
1033
  // catalog/native/AgentDetailCard.tsx
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  "use strict";
3
- "use client";
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -398,7 +397,7 @@ function useAgentConsumer(consumerId, options) {
398
397
  };
399
398
  }
400
399
 
401
- // catalog/shared/useAgentListCore.ts
400
+ // catalog/shared/useAgentListCore-react.ts
402
401
  var import_react5 = require("react");
403
402
 
404
403
  // catalog/score.ts
@@ -789,14 +788,7 @@ function agentListFooterLabel(args) {
789
788
  return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
790
789
  }
791
790
 
792
- // catalog/shared/useAgentListCore.ts
793
- var HOVER_GRACE_MS = 900;
794
- function coerceVisibleTab(current, allowed, initialTab) {
795
- if (allowed.length === 0) return null;
796
- if (allowed.includes(current)) return null;
797
- return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
798
- }
799
- var EMPTY_EXCLUDES = [];
791
+ // catalog/shared/useAgentListCore-react.ts
800
792
  function useAgentListCore({
801
793
  consumerId,
802
794
  onSelect,
@@ -1022,6 +1014,15 @@ function useAgentListCore({
1022
1014
  handleDetailPanelMouseLeave
1023
1015
  };
1024
1016
  }
1017
+
1018
+ // catalog/shared/useAgentListCore.ts
1019
+ var HOVER_GRACE_MS = 900;
1020
+ function coerceVisibleTab(current, allowed, initialTab) {
1021
+ if (allowed.length === 0) return null;
1022
+ if (allowed.includes(current)) return null;
1023
+ return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
1024
+ }
1025
+ var EMPTY_EXCLUDES = [];
1025
1026
  var selectStatus = (state) => state.status;
1026
1027
 
1027
1028
  // catalog/react/AgentListDropdown.tsx
@@ -572,24 +572,6 @@ declare function lookUpAgentOnce(catalog: AgentCatalog, agentId: string): Promis
572
572
  */
573
573
  declare function useAgentSummary(catalog: AgentCatalog | null | undefined, agentId: string | null | undefined): AgentSummary | undefined;
574
574
 
575
- /**
576
- * catalog/shared/useAgentConsumer.ts — VERBATIM port of matrx-frontend
577
- * `features/agents/hooks/useAgentConsumer.ts`.
578
- *
579
- * Wraps a single consumer slot identified by `consumerId`. Registers the slot
580
- * on mount, optionally unregisters on unmount, and returns every filter/sort/
581
- * pagination value plus stable write helpers.
582
- *
583
- * Two seams inverted, nothing else:
584
- * - `useAppSelector`/`useAppDispatch` → `useAgentCatalog()` + the store's
585
- * own methods.
586
- * - `useServerAgentSearch` (a separate frontend hook) is folded IN, because
587
- * it was already wired here and nowhere else: EVERY agent surface that
588
- * uses a consumer searches the full server-side set. A local-only search
589
- * over a paginated list reports "no results" for agents that were merely
590
- * never fetched — a wrong answer, not a missing feature.
591
- */
592
-
593
575
  interface UseAgentConsumerReturn {
594
576
  tab: AgentTab;
595
577
  sortBy: AgentSortOption;
@@ -659,6 +641,33 @@ declare function useAgentConsumer(consumerId: string, options?: {
659
641
  initialArchFilter?: AgentArchFilter;
660
642
  }): UseAgentConsumerReturn;
661
643
 
644
+ declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
645
+ agents: AgentSummary[];
646
+ archivedHiddenCount: number;
647
+ footerLabel: string;
648
+ isLoading: boolean;
649
+ activeAgentId: string | null;
650
+ pinnedAgent: AgentSummary | null;
651
+ defaultRow: DefaultRowState | null;
652
+ /** The host filter's chip label while it narrows the list; else null. */
653
+ agentFilterLabel: string | null;
654
+ clearAgentFilter: () => void;
655
+ resumeAgentFilter: () => void;
656
+ allCategories: string[];
657
+ allTags: string[];
658
+ consumer: UseAgentConsumerReturn;
659
+ tabCounts: AgentListTabCounts;
660
+ activeFilterCount: number;
661
+ hoveredAgent: AgentSummary | null;
662
+ setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
663
+ ensureLoaded: () => void;
664
+ handleSelectAgent: (agent: AgentSummary) => void;
665
+ handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
666
+ handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
667
+ handleDetailPanelMouseEnter: () => void;
668
+ handleDetailPanelMouseLeave: (onClear: () => void) => void;
669
+ };
670
+
662
671
  /**
663
672
  * The four ownership counts a tab strip prints. Declared HERE, beside the code
664
673
  * that computes them, so both the web tab strip and the native one name the
@@ -773,32 +782,6 @@ declare const HOVER_GRACE_MS = 900;
773
782
  * else the first allowed tab.
774
783
  */
775
784
  declare function coerceVisibleTab(current: AgentTab, allowed: readonly AgentTab[], initialTab?: AgentTab): AgentTab | null;
776
- declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
777
- agents: AgentSummary[];
778
- archivedHiddenCount: number;
779
- footerLabel: string;
780
- isLoading: boolean;
781
- activeAgentId: string | null;
782
- pinnedAgent: AgentSummary | null;
783
- defaultRow: DefaultRowState | null;
784
- /** The host filter's chip label while it narrows the list; else null. */
785
- agentFilterLabel: string | null;
786
- clearAgentFilter: () => void;
787
- resumeAgentFilter: () => void;
788
- allCategories: string[];
789
- allTags: string[];
790
- consumer: UseAgentConsumerReturn;
791
- tabCounts: AgentListTabCounts;
792
- activeFilterCount: number;
793
- hoveredAgent: AgentSummary | null;
794
- setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
795
- ensureLoaded: () => void;
796
- handleSelectAgent: (agent: AgentSummary) => void;
797
- handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
798
- handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
799
- handleDetailPanelMouseEnter: () => void;
800
- handleDetailPanelMouseLeave: (onClear: () => void) => void;
801
- };
802
785
 
803
786
  interface AgentListDropdownProps {
804
787
  onSelect?: (agentId: string) => void;
@@ -572,24 +572,6 @@ declare function lookUpAgentOnce(catalog: AgentCatalog, agentId: string): Promis
572
572
  */
573
573
  declare function useAgentSummary(catalog: AgentCatalog | null | undefined, agentId: string | null | undefined): AgentSummary | undefined;
574
574
 
575
- /**
576
- * catalog/shared/useAgentConsumer.ts — VERBATIM port of matrx-frontend
577
- * `features/agents/hooks/useAgentConsumer.ts`.
578
- *
579
- * Wraps a single consumer slot identified by `consumerId`. Registers the slot
580
- * on mount, optionally unregisters on unmount, and returns every filter/sort/
581
- * pagination value plus stable write helpers.
582
- *
583
- * Two seams inverted, nothing else:
584
- * - `useAppSelector`/`useAppDispatch` → `useAgentCatalog()` + the store's
585
- * own methods.
586
- * - `useServerAgentSearch` (a separate frontend hook) is folded IN, because
587
- * it was already wired here and nowhere else: EVERY agent surface that
588
- * uses a consumer searches the full server-side set. A local-only search
589
- * over a paginated list reports "no results" for agents that were merely
590
- * never fetched — a wrong answer, not a missing feature.
591
- */
592
-
593
575
  interface UseAgentConsumerReturn {
594
576
  tab: AgentTab;
595
577
  sortBy: AgentSortOption;
@@ -659,6 +641,33 @@ declare function useAgentConsumer(consumerId: string, options?: {
659
641
  initialArchFilter?: AgentArchFilter;
660
642
  }): UseAgentConsumerReturn;
661
643
 
644
+ declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
645
+ agents: AgentSummary[];
646
+ archivedHiddenCount: number;
647
+ footerLabel: string;
648
+ isLoading: boolean;
649
+ activeAgentId: string | null;
650
+ pinnedAgent: AgentSummary | null;
651
+ defaultRow: DefaultRowState | null;
652
+ /** The host filter's chip label while it narrows the list; else null. */
653
+ agentFilterLabel: string | null;
654
+ clearAgentFilter: () => void;
655
+ resumeAgentFilter: () => void;
656
+ allCategories: string[];
657
+ allTags: string[];
658
+ consumer: UseAgentConsumerReturn;
659
+ tabCounts: AgentListTabCounts;
660
+ activeFilterCount: number;
661
+ hoveredAgent: AgentSummary | null;
662
+ setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
663
+ ensureLoaded: () => void;
664
+ handleSelectAgent: (agent: AgentSummary) => void;
665
+ handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
666
+ handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
667
+ handleDetailPanelMouseEnter: () => void;
668
+ handleDetailPanelMouseLeave: (onClear: () => void) => void;
669
+ };
670
+
662
671
  /**
663
672
  * The four ownership counts a tab strip prints. Declared HERE, beside the code
664
673
  * that computes them, so both the web tab strip and the native one name the
@@ -773,32 +782,6 @@ declare const HOVER_GRACE_MS = 900;
773
782
  * else the first allowed tab.
774
783
  */
775
784
  declare function coerceVisibleTab(current: AgentTab, allowed: readonly AgentTab[], initialTab?: AgentTab): AgentTab | null;
776
- declare function useAgentListCore({ consumerId, onSelect, navigateTo, activeAgentIdOverride, initialTab, includeSystemInAll, visibleTabs, initialArchFilter, excludeAgentIds, includeQuickAgents, defaultMandateKey, agentFilter, loadOnMount, }: AgentListCoreOptions): {
777
- agents: AgentSummary[];
778
- archivedHiddenCount: number;
779
- footerLabel: string;
780
- isLoading: boolean;
781
- activeAgentId: string | null;
782
- pinnedAgent: AgentSummary | null;
783
- defaultRow: DefaultRowState | null;
784
- /** The host filter's chip label while it narrows the list; else null. */
785
- agentFilterLabel: string | null;
786
- clearAgentFilter: () => void;
787
- resumeAgentFilter: () => void;
788
- allCategories: string[];
789
- allTags: string[];
790
- consumer: UseAgentConsumerReturn;
791
- tabCounts: AgentListTabCounts;
792
- activeFilterCount: number;
793
- hoveredAgent: AgentSummary | null;
794
- setHoveredAgent: react.Dispatch<react.SetStateAction<AgentSummary | null>>;
795
- ensureLoaded: () => void;
796
- handleSelectAgent: (agent: AgentSummary) => void;
797
- handleAgentHover: (agent: AgentSummary, panelOpen: boolean) => void;
798
- handleAgentHoverEnd: (agent: AgentSummary, onClear: () => void) => void;
799
- handleDetailPanelMouseEnter: () => void;
800
- handleDetailPanelMouseLeave: (onClear: () => void) => void;
801
- };
802
785
 
803
786
  interface AgentListDropdownProps {
804
787
  onSelect?: (agentId: string) => void;
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- "use client";
3
2
 
4
3
  // catalog/react/context.tsx
5
4
  import { useMemo as useMemo2 } from "react";
@@ -339,14 +338,8 @@ function useAgentConsumer(consumerId, options) {
339
338
  };
340
339
  }
341
340
 
342
- // catalog/shared/useAgentListCore.ts
343
- import {
344
- useCallback as useCallback3,
345
- useEffect as useEffect3,
346
- useMemo as useMemo3,
347
- useRef as useRef2,
348
- useState as useState2
349
- } from "react";
341
+ // catalog/shared/useAgentListCore-react.ts
342
+ import { useCallback as useCallback3, useEffect as useEffect3, useMemo as useMemo3, useRef as useRef2, useState as useState2 } from "react";
350
343
 
351
344
  // catalog/score.ts
352
345
  function computeAgentSearchScore(agent, query) {
@@ -736,14 +729,7 @@ function agentListFooterLabel(args) {
736
729
  return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
737
730
  }
738
731
 
739
- // catalog/shared/useAgentListCore.ts
740
- var HOVER_GRACE_MS = 900;
741
- function coerceVisibleTab(current, allowed, initialTab) {
742
- if (allowed.length === 0) return null;
743
- if (allowed.includes(current)) return null;
744
- return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
745
- }
746
- var EMPTY_EXCLUDES = [];
732
+ // catalog/shared/useAgentListCore-react.ts
747
733
  function useAgentListCore({
748
734
  consumerId,
749
735
  onSelect,
@@ -969,6 +955,15 @@ function useAgentListCore({
969
955
  handleDetailPanelMouseLeave
970
956
  };
971
957
  }
958
+
959
+ // catalog/shared/useAgentListCore.ts
960
+ var HOVER_GRACE_MS = 900;
961
+ function coerceVisibleTab(current, allowed, initialTab) {
962
+ if (allowed.length === 0) return null;
963
+ if (allowed.includes(current)) return null;
964
+ return initialTab && allowed.includes(initialTab) ? initialTab : allowed[0] ?? null;
965
+ }
966
+ var EMPTY_EXCLUDES = [];
972
967
  var selectStatus = (state) => state.status;
973
968
 
974
969
  // catalog/react/AgentListDropdown.tsx
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  "use strict";
3
- "use client";
4
3
  var __create = Object.create;
5
4
  var __defProp = Object.defineProperty;
6
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- "use client";
3
2
 
4
3
  // content-transfer/react/index.tsx
5
4
  import * as React from "react";
@@ -1,11 +1,5 @@
1
1
  import { RunRequest, AppletError, KindEnvelope, ServedInput, RunRef, IntelligencePort } from '@ai-matrx/agents/intelligence';
2
2
 
3
- /**
4
- * `@ai-matrx/agents/intelligence/react` — `useMandateRun`, the smallest
5
- * React binding over an `IntelligencePort`. Never throws into React: every
6
- * failure lands in `error` and `status: "error"`.
7
- */
8
-
9
3
  type MandateRunStatus = "idle" | "resolving" | "running" | "needs_input" | "done" | "error";
10
4
  interface UseMandateRun {
11
5
  /** Start the job; `key` is bound by the hook, the rest is the run request. */
@@ -1,11 +1,5 @@
1
1
  import { RunRequest, AppletError, KindEnvelope, ServedInput, RunRef, IntelligencePort } from '@ai-matrx/agents/intelligence';
2
2
 
3
- /**
4
- * `@ai-matrx/agents/intelligence/react` — `useMandateRun`, the smallest
5
- * React binding over an `IntelligencePort`. Never throws into React: every
6
- * failure lands in `error` and `status: "error"`.
7
- */
8
-
9
3
  type MandateRunStatus = "idle" | "resolving" | "running" | "needs_input" | "done" | "error";
10
4
  interface UseMandateRun {
11
5
  /** Start the job; `key` is bound by the hook, the rest is the run request. */
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  "use strict";
3
- "use client";
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- "use client";
3
2
 
4
3
  // runtime/react/index.ts
5
4
  import { useEffect, useSyncExternalStore } from "react";
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  "use strict";
3
- "use client";
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- "use client";
3
2
 
4
3
  // settings/react/index.ts
5
4
  import { useSyncExternalStore } from "react";
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  "use strict";
3
- "use client";
4
3
  var __defProp = Object.defineProperty;
5
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
@@ -1,5 +1,4 @@
1
1
  "use client";
2
- "use client";
3
2
 
4
3
  // skills/react/useSkillCatalog.ts
5
4
  import { useEffect, useMemo, useSyncExternalStore } from "react";
@@ -47,7 +47,13 @@ interface SourceRef {
47
47
  promote?: ResourcePromotion | ResourcePromotion[];
48
48
  exclude?: string[];
49
49
  }
50
- interface SourceSet {
50
+ /**
51
+ * A TYPE, not an interface (2026-10-23): it IS a JSON object, so it is assignable wherever the server
52
+ * contract types the field as a JSON object (@ai-matrx/api's request bodies carry `source_set` as
53
+ * `{ [key: string]: JsonValue }` — the podcast generate request). An interface has no implicit index
54
+ * signature and would need a cast at every send.
55
+ */
56
+ type SourceSet = {
51
57
  __kind: typeof SOURCE_SET_KIND;
52
58
  version: typeof SOURCE_SET_VERSION;
53
59
  sources: SourceRef[];
@@ -59,7 +65,7 @@ interface SourceSet {
59
65
  retrieve_query?: string;
60
66
  /** The model whose context window sets the budget. */
61
67
  target_model_id?: string;
62
- }
68
+ };
63
69
  type SourceState = "ready" | "processing" | "failed" | "unavailable";
64
70
  interface SourceManifestForm {
65
71
  form: string;
@@ -47,7 +47,13 @@ interface SourceRef {
47
47
  promote?: ResourcePromotion | ResourcePromotion[];
48
48
  exclude?: string[];
49
49
  }
50
- interface SourceSet {
50
+ /**
51
+ * A TYPE, not an interface (2026-10-23): it IS a JSON object, so it is assignable wherever the server
52
+ * contract types the field as a JSON object (@ai-matrx/api's request bodies carry `source_set` as
53
+ * `{ [key: string]: JsonValue }` — the podcast generate request). An interface has no implicit index
54
+ * signature and would need a cast at every send.
55
+ */
56
+ type SourceSet = {
51
57
  __kind: typeof SOURCE_SET_KIND;
52
58
  version: typeof SOURCE_SET_VERSION;
53
59
  sources: SourceRef[];
@@ -59,7 +65,7 @@ interface SourceSet {
59
65
  retrieve_query?: string;
60
66
  /** The model whose context window sets the budget. */
61
67
  target_model_id?: string;
62
- }
68
+ };
63
69
  type SourceState = "ready" | "processing" | "failed" | "unavailable";
64
70
  interface SourceManifestForm {
65
71
  form: string;
@@ -47,7 +47,13 @@ interface SourceRef {
47
47
  promote?: ResourcePromotion | ResourcePromotion[];
48
48
  exclude?: string[];
49
49
  }
50
- interface SourceSet {
50
+ /**
51
+ * A TYPE, not an interface (2026-10-23): it IS a JSON object, so it is assignable wherever the server
52
+ * contract types the field as a JSON object (@ai-matrx/api's request bodies carry `source_set` as
53
+ * `{ [key: string]: JsonValue }` — the podcast generate request). An interface has no implicit index
54
+ * signature and would need a cast at every send.
55
+ */
56
+ type SourceSet = {
51
57
  __kind: typeof SOURCE_SET_KIND;
52
58
  version: typeof SOURCE_SET_VERSION;
53
59
  sources: SourceRef[];
@@ -59,7 +65,7 @@ interface SourceSet {
59
65
  retrieve_query?: string;
60
66
  /** The model whose context window sets the budget. */
61
67
  target_model_id?: string;
62
- }
68
+ };
63
69
  type SourceState = "ready" | "processing" | "failed" | "unavailable";
64
70
  interface SourceManifestForm {
65
71
  form: string;
@@ -705,21 +711,6 @@ interface FileRecoveryDeps {
705
711
  fileOrganizationId?: ((fileId: string) => string | null | undefined) | undefined;
706
712
  }
707
713
 
708
- /**
709
- * `@ai-matrx/agents/sources/react` — thin React hooks over the Source runtime
710
- * (`@ai-matrx/agents/sources/runtime`). No logic lives here that a non-React
711
- * client could not reach through the runtime itself: the hooks subscribe,
712
- * schedule, and hand back the same controller.
713
- *
714
- * const set = useSourceSet(adapter, { persistenceReady });
715
- * const intake = useSourceIntake(set, deps);
716
- * useSourceRecovery(set, intake, runner, { organizationId, readFileState });
717
- * const search = useSourcePartsSearch(client, ref, query);
718
- *
719
- * A host binds the adapter to its own store once (memoized per surface) —
720
- * the web app binds Redux; another client binds its own.
721
- */
722
-
723
714
  interface UseSourceSetOptions {
724
715
  /**
725
716
  * The draft store has been read back (a device store loads a moment after
@@ -47,7 +47,13 @@ interface SourceRef {
47
47
  promote?: ResourcePromotion | ResourcePromotion[];
48
48
  exclude?: string[];
49
49
  }
50
- interface SourceSet {
50
+ /**
51
+ * A TYPE, not an interface (2026-10-23): it IS a JSON object, so it is assignable wherever the server
52
+ * contract types the field as a JSON object (@ai-matrx/api's request bodies carry `source_set` as
53
+ * `{ [key: string]: JsonValue }` — the podcast generate request). An interface has no implicit index
54
+ * signature and would need a cast at every send.
55
+ */
56
+ type SourceSet = {
51
57
  __kind: typeof SOURCE_SET_KIND;
52
58
  version: typeof SOURCE_SET_VERSION;
53
59
  sources: SourceRef[];
@@ -59,7 +65,7 @@ interface SourceSet {
59
65
  retrieve_query?: string;
60
66
  /** The model whose context window sets the budget. */
61
67
  target_model_id?: string;
62
- }
68
+ };
63
69
  type SourceState = "ready" | "processing" | "failed" | "unavailable";
64
70
  interface SourceManifestForm {
65
71
  form: string;
@@ -705,21 +711,6 @@ interface FileRecoveryDeps {
705
711
  fileOrganizationId?: ((fileId: string) => string | null | undefined) | undefined;
706
712
  }
707
713
 
708
- /**
709
- * `@ai-matrx/agents/sources/react` — thin React hooks over the Source runtime
710
- * (`@ai-matrx/agents/sources/runtime`). No logic lives here that a non-React
711
- * client could not reach through the runtime itself: the hooks subscribe,
712
- * schedule, and hand back the same controller.
713
- *
714
- * const set = useSourceSet(adapter, { persistenceReady });
715
- * const intake = useSourceIntake(set, deps);
716
- * useSourceRecovery(set, intake, runner, { organizationId, readFileState });
717
- * const search = useSourcePartsSearch(client, ref, query);
718
- *
719
- * A host binds the adapter to its own store once (memoized per surface) —
720
- * the web app binds Redux; another client binds its own.
721
- */
722
-
723
714
  interface UseSourceSetOptions {
724
715
  /**
725
716
  * The draft store has been read back (a device store loads a moment after
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-matrx/agents",
3
- "version": "0.59.256",
3
+ "version": "0.59.257",
4
4
  "description": "Portable AI Matrx agent stream protocol, event projection, and safe result-presentation primitives.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -508,12 +508,12 @@
508
508
  },
509
509
  "sideEffects": false,
510
510
  "dependencies": {
511
- "@ai-matrx/api": "latest",
512
- "@ai-matrx/data": "latest",
513
511
  "@ai-matrx/alchemy": "latest",
512
+ "@ai-matrx/associations": "latest",
514
513
  "@ai-matrx/content-ir": "latest",
514
+ "@ai-matrx/api": "latest",
515
515
  "@ai-matrx/design-system": "latest",
516
- "@ai-matrx/associations": "latest",
516
+ "@ai-matrx/data": "latest",
517
517
  "@ai-matrx/diff": "latest",
518
518
  "@ai-matrx/icons": "latest",
519
519
  "@ai-matrx/kit": "latest"
@@ -561,5 +561,5 @@
561
561
  "verify:tarball": "node ./scripts/verify-tarball.mjs",
562
562
  "typegen:self-test": "node scripts/typegen/drop-guard.self-test.mjs && node scripts/typegen/check-api-types-fresh.mjs --self-test"
563
563
  },
564
- "gitHead": "76b41cb76b379c9c04a1e26535fcf64606f59595"
564
+ "gitHead": "0a2b8c9356bcba5cf0338a6c2c63b1c6058374ef"
565
565
  }