@ai-matrx/agents 0.13.16 → 0.14.3

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/catalog/index.cjs +1 -0
  3. package/dist/catalog/index.cjs.map +1 -1
  4. package/dist/catalog/index.d.cts +2 -2
  5. package/dist/catalog/index.d.ts +2 -2
  6. package/dist/catalog/index.js +1 -0
  7. package/dist/catalog/index.js.map +1 -1
  8. package/dist/catalog/native/index.cjs +16 -0
  9. package/dist/catalog/native/index.cjs.map +1 -1
  10. package/dist/catalog/native/index.d.cts +2 -2
  11. package/dist/catalog/native/index.d.ts +2 -2
  12. package/dist/catalog/native/index.js +16 -0
  13. package/dist/catalog/native/index.js.map +1 -1
  14. package/dist/catalog/react/index.cjs +26 -5
  15. package/dist/catalog/react/index.cjs.map +1 -1
  16. package/dist/catalog/react/index.d.cts +27 -1
  17. package/dist/catalog/react/index.d.ts +27 -1
  18. package/dist/catalog/react/index.js +26 -5
  19. package/dist/catalog/react/index.js.map +1 -1
  20. package/dist/content-transfer/index.cjs +2 -0
  21. package/dist/content-transfer/index.cjs.map +1 -1
  22. package/dist/content-transfer/index.js +2 -0
  23. package/dist/content-transfer/index.js.map +1 -1
  24. package/dist/content-transfer/react/index.cjs +2 -0
  25. package/dist/content-transfer/react/index.cjs.map +1 -1
  26. package/dist/content-transfer/react/index.js +2 -0
  27. package/dist/content-transfer/react/index.js.map +1 -1
  28. package/dist/mandates/index.cjs +8 -2
  29. package/dist/mandates/index.cjs.map +1 -1
  30. package/dist/mandates/index.d.cts +8 -5
  31. package/dist/mandates/index.d.ts +8 -5
  32. package/dist/mandates/index.js +8 -2
  33. package/dist/mandates/index.js.map +1 -1
  34. package/dist/{orchestra-CVil7T5Y.d.cts → orchestra-BDXdut6Y.d.cts} +6 -0
  35. package/dist/{orchestra-CVil7T5Y.d.ts → orchestra-BDXdut6Y.d.ts} +6 -0
  36. package/dist/presentation/decision-answers.cjs +195 -0
  37. package/dist/presentation/decision-answers.cjs.map +1 -0
  38. package/dist/presentation/decision-answers.d.cts +113 -0
  39. package/dist/presentation/decision-answers.d.ts +113 -0
  40. package/dist/presentation/decision-answers.js +174 -0
  41. package/dist/presentation/decision-answers.js.map +1 -0
  42. package/mandates/snapshots/keys.0.14.0.json +619 -0
  43. package/mandates/snapshots/keys.0.14.3.json +625 -0
  44. package/package.json +13 -3
@@ -280,6 +280,12 @@ interface AgentCatalogLabels {
280
280
  * Recorded in the CHANGELOG and dropped rather than ported.)
281
281
  */
282
282
  systemBadge: string;
283
+ /**
284
+ * Badge on an archived row. Archived agents stay offered (THE ARCHIVED-ITEMS
285
+ * LAW: one or two clicks away) and say so on the row itself. Default
286
+ * `"Archived"`.
287
+ */
288
+ archivedBadge: string;
283
289
  searchPlaceholder: string;
284
290
  currentAgentHeading: string;
285
291
  emptyDefault: string;
@@ -823,6 +829,26 @@ declare const PANEL_HEIGHT = "528px";
823
829
  * the popover is open.
824
830
  */
825
831
  declare const LIST_MAX_HEIGHT = "min(528px, var(--radix-popper-available-height, 528px))";
832
+ /**
833
+ * 🚨 OPEN BELOW THE CONTROL WHENEVER THERE IS ROOM TO USE IT.
834
+ *
835
+ * Radix flips a popover to the side with more room using the panel's FULL
836
+ * height, so a trigger in the middle of a dialog (the mandate "Use my own"
837
+ * picker on a 1280x900 screen: 418px below, 528px panel) sent the whole panel
838
+ * ABOVE it — over the dialog's own title and controls, reading as a list
839
+ * floating at the top of the screen (2026-09-26). This measures the room
840
+ * below at open time: when a usable list fits there, the panel is sized to it
841
+ * and pinned to `side="bottom"`; only when it does not is Radix left to flip.
842
+ * The height is fixed for the whole time the panel is open, so nothing moves
843
+ * under the cursor (the reason the footprint is fixed at all).
844
+ *
845
+ * Returns a px height, or `null` for "use the default footprint and placement".
846
+ */
847
+ declare function panelHeightBelow(trigger: Element | null, options?: {
848
+ full?: number;
849
+ minUsable?: number;
850
+ gap?: number;
851
+ }): string | null;
826
852
 
827
853
  interface AgentListContentProps {
828
854
  agents: AgentSummary[];
@@ -1030,4 +1056,4 @@ declare function orchestraDepthLine(badge: OrchestraBadge): string | null;
1030
1056
  */
1031
1057
  declare function orchestraDelegatesLine(badge: OrchestraBadge, limit?: number): string | null;
1032
1058
 
1033
- export { type AgentCatalogLinkComponent, AgentCatalogProvider, type AgentCatalogProviderProps, type AgentCatalogRenderModelRef, type AgentCatalogUiPorts, AgentCategoriesPanel, type AgentCategoriesPanelProps, AgentDetailCard, type AgentDetailCardProps, AgentFilterBar, type AgentFilterBarProps, AgentListContent, type AgentListContentProps, type AgentListCoreOptions, AgentListDropdown, type AgentListDropdownProps, AgentListInlinePicker, type AgentListInlinePickerProps, type AgentListTabCounts, AgentListTabs, AgentMobileSubView, type AgentMobileSubViewProps, AgentRow, type AgentRowProps, AgentSortPanel, type AgentSortPanelProps, AgentTagsPanel, type AgentTagsPanelProps, CheckRow, FavoriteAgentButton, FilterChip, HOVER_GRACE_MS, type IconProps, LIST_MAX_HEIGHT, Music4Icon, OptionRow, type OrchestraBadge, PANEL_HEIGHT, type RightPanel, SORT_OPTIONS, SearchInput, SidePanelHeader, type UseAgentConsumerReturn, coerceVisibleTab, orchestraDelegatesLine, orchestraDepthLine, orchestraLabel, orchestraModeLabel, useAgentCatalog, useAgentCatalogRows, useAgentCatalogState, useAgentCatalogUiPorts, useAgentConsumer, useAgentListCore };
1059
+ export { type AgentCatalogLinkComponent, AgentCatalogProvider, type AgentCatalogProviderProps, type AgentCatalogRenderModelRef, type AgentCatalogUiPorts, AgentCategoriesPanel, type AgentCategoriesPanelProps, AgentDetailCard, type AgentDetailCardProps, AgentFilterBar, type AgentFilterBarProps, AgentListContent, type AgentListContentProps, type AgentListCoreOptions, AgentListDropdown, type AgentListDropdownProps, AgentListInlinePicker, type AgentListInlinePickerProps, type AgentListTabCounts, AgentListTabs, AgentMobileSubView, type AgentMobileSubViewProps, AgentRow, type AgentRowProps, AgentSortPanel, type AgentSortPanelProps, AgentTagsPanel, type AgentTagsPanelProps, CheckRow, FavoriteAgentButton, FilterChip, HOVER_GRACE_MS, type IconProps, LIST_MAX_HEIGHT, Music4Icon, OptionRow, type OrchestraBadge, PANEL_HEIGHT, type RightPanel, SORT_OPTIONS, SearchInput, SidePanelHeader, type UseAgentConsumerReturn, coerceVisibleTab, orchestraDelegatesLine, orchestraDepthLine, orchestraLabel, orchestraModeLabel, panelHeightBelow, useAgentCatalog, useAgentCatalogRows, useAgentCatalogState, useAgentCatalogUiPorts, useAgentConsumer, useAgentListCore };
@@ -280,6 +280,12 @@ interface AgentCatalogLabels {
280
280
  * Recorded in the CHANGELOG and dropped rather than ported.)
281
281
  */
282
282
  systemBadge: string;
283
+ /**
284
+ * Badge on an archived row. Archived agents stay offered (THE ARCHIVED-ITEMS
285
+ * LAW: one or two clicks away) and say so on the row itself. Default
286
+ * `"Archived"`.
287
+ */
288
+ archivedBadge: string;
283
289
  searchPlaceholder: string;
284
290
  currentAgentHeading: string;
285
291
  emptyDefault: string;
@@ -823,6 +829,26 @@ declare const PANEL_HEIGHT = "528px";
823
829
  * the popover is open.
824
830
  */
825
831
  declare const LIST_MAX_HEIGHT = "min(528px, var(--radix-popper-available-height, 528px))";
832
+ /**
833
+ * 🚨 OPEN BELOW THE CONTROL WHENEVER THERE IS ROOM TO USE IT.
834
+ *
835
+ * Radix flips a popover to the side with more room using the panel's FULL
836
+ * height, so a trigger in the middle of a dialog (the mandate "Use my own"
837
+ * picker on a 1280x900 screen: 418px below, 528px panel) sent the whole panel
838
+ * ABOVE it — over the dialog's own title and controls, reading as a list
839
+ * floating at the top of the screen (2026-09-26). This measures the room
840
+ * below at open time: when a usable list fits there, the panel is sized to it
841
+ * and pinned to `side="bottom"`; only when it does not is Radix left to flip.
842
+ * The height is fixed for the whole time the panel is open, so nothing moves
843
+ * under the cursor (the reason the footprint is fixed at all).
844
+ *
845
+ * Returns a px height, or `null` for "use the default footprint and placement".
846
+ */
847
+ declare function panelHeightBelow(trigger: Element | null, options?: {
848
+ full?: number;
849
+ minUsable?: number;
850
+ gap?: number;
851
+ }): string | null;
826
852
 
827
853
  interface AgentListContentProps {
828
854
  agents: AgentSummary[];
@@ -1030,4 +1056,4 @@ declare function orchestraDepthLine(badge: OrchestraBadge): string | null;
1030
1056
  */
1031
1057
  declare function orchestraDelegatesLine(badge: OrchestraBadge, limit?: number): string | null;
1032
1058
 
1033
- export { type AgentCatalogLinkComponent, AgentCatalogProvider, type AgentCatalogProviderProps, type AgentCatalogRenderModelRef, type AgentCatalogUiPorts, AgentCategoriesPanel, type AgentCategoriesPanelProps, AgentDetailCard, type AgentDetailCardProps, AgentFilterBar, type AgentFilterBarProps, AgentListContent, type AgentListContentProps, type AgentListCoreOptions, AgentListDropdown, type AgentListDropdownProps, AgentListInlinePicker, type AgentListInlinePickerProps, type AgentListTabCounts, AgentListTabs, AgentMobileSubView, type AgentMobileSubViewProps, AgentRow, type AgentRowProps, AgentSortPanel, type AgentSortPanelProps, AgentTagsPanel, type AgentTagsPanelProps, CheckRow, FavoriteAgentButton, FilterChip, HOVER_GRACE_MS, type IconProps, LIST_MAX_HEIGHT, Music4Icon, OptionRow, type OrchestraBadge, PANEL_HEIGHT, type RightPanel, SORT_OPTIONS, SearchInput, SidePanelHeader, type UseAgentConsumerReturn, coerceVisibleTab, orchestraDelegatesLine, orchestraDepthLine, orchestraLabel, orchestraModeLabel, useAgentCatalog, useAgentCatalogRows, useAgentCatalogState, useAgentCatalogUiPorts, useAgentConsumer, useAgentListCore };
1059
+ export { type AgentCatalogLinkComponent, AgentCatalogProvider, type AgentCatalogProviderProps, type AgentCatalogRenderModelRef, type AgentCatalogUiPorts, AgentCategoriesPanel, type AgentCategoriesPanelProps, AgentDetailCard, type AgentDetailCardProps, AgentFilterBar, type AgentFilterBarProps, AgentListContent, type AgentListContentProps, type AgentListCoreOptions, AgentListDropdown, type AgentListDropdownProps, AgentListInlinePicker, type AgentListInlinePickerProps, type AgentListTabCounts, AgentListTabs, AgentMobileSubView, type AgentMobileSubViewProps, AgentRow, type AgentRowProps, AgentSortPanel, type AgentSortPanelProps, AgentTagsPanel, type AgentTagsPanelProps, CheckRow, FavoriteAgentButton, FilterChip, HOVER_GRACE_MS, type IconProps, LIST_MAX_HEIGHT, Music4Icon, OptionRow, type OrchestraBadge, PANEL_HEIGHT, type RightPanel, SORT_OPTIONS, SearchInput, SidePanelHeader, type UseAgentConsumerReturn, coerceVisibleTab, orchestraDelegatesLine, orchestraDepthLine, orchestraLabel, orchestraModeLabel, panelHeightBelow, useAgentCatalog, useAgentCatalogRows, useAgentCatalogState, useAgentCatalogUiPorts, useAgentConsumer, useAgentListCore };
@@ -1549,6 +1549,15 @@ import { useEffect as useEffect3, useRef as useRef3 } from "react";
1549
1549
  // catalog/react/types.ts
1550
1550
  var PANEL_HEIGHT = "528px";
1551
1551
  var LIST_MAX_HEIGHT = "min(528px, var(--radix-popper-available-height, 528px))";
1552
+ function panelHeightBelow(trigger, options = {}) {
1553
+ if (!trigger || typeof window === "undefined") return null;
1554
+ const full = options.full ?? 528;
1555
+ const minUsable = options.minUsable ?? 300;
1556
+ const gap = options.gap ?? 16;
1557
+ const below = window.innerHeight - trigger.getBoundingClientRect().bottom - gap;
1558
+ if (below >= full) return null;
1559
+ return below >= minUsable ? `${Math.floor(below)}px` : null;
1560
+ }
1552
1561
 
1553
1562
  // catalog/react/AgentFilterBar.tsx
1554
1563
  import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
@@ -1747,7 +1756,15 @@ function AgentRow({
1747
1756
  ]
1748
1757
  }
1749
1758
  ),
1750
- 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
1759
+ agent.isArchived ? /* @__PURE__ */ jsx10(
1760
+ "span",
1761
+ {
1762
+ "data-testid": `agent-archived-badge-${agent.id}`,
1763
+ className: "text-[9px] font-medium text-muted-foreground bg-muted px-1 py-px rounded shrink-0 ml-auto",
1764
+ children: labels.archivedBadge
1765
+ }
1766
+ ) : null,
1767
+ agent.agentType === "builtin" ? /* @__PURE__ */ jsx10("span", { className: cn5("text-[9px] font-medium text-primary bg-primary/10 px-1 py-px rounded shrink-0", !agent.isArchived && "ml-auto"), children: labels.systemBadge }) : agent.isOwner === false ? /* @__PURE__ */ jsx10("span", { className: cn5("text-[9px] text-muted-foreground bg-muted px-1 py-px rounded shrink-0", !agent.isArchived && "ml-auto"), children: "shared" }) : null
1751
1768
  ]
1752
1769
  }
1753
1770
  ),
@@ -2178,6 +2195,8 @@ function AgentListDropdown({
2178
2195
  const [mobileDetailAgent, setMobileDetailAgent] = useState3(null);
2179
2196
  const [mobileSubView, setMobileSubView] = useState3(null);
2180
2197
  const inputRef = useRef4(null);
2198
+ const triggerRef = useRef4(null);
2199
+ const [fitHeight, setFitHeight] = useState3(null);
2181
2200
  const {
2182
2201
  agents,
2183
2202
  archivedHiddenCount,
@@ -2217,6 +2236,7 @@ function AgentListDropdown({
2217
2236
  const handleOpen = (nextOpen) => {
2218
2237
  setOpen(nextOpen);
2219
2238
  if (nextOpen) {
2239
+ setFitHeight(contentSide || isMobile ? null : panelHeightBelow(triggerRef.current));
2220
2240
  ensureLoaded();
2221
2241
  if (pinnedAgent && !isMobile) {
2222
2242
  setHoveredAgent(pinnedAgent);
@@ -2288,10 +2308,10 @@ function AgentListDropdown({
2288
2308
  );
2289
2309
  const wrapTrigger = (Trigger) => {
2290
2310
  if (!showAssignedTooltip) {
2291
- return /* @__PURE__ */ jsx15(Trigger, { asChild: true, children: triggerButton });
2311
+ return /* @__PURE__ */ jsx15(Trigger, { asChild: true, ref: triggerRef, children: triggerButton });
2292
2312
  }
2293
2313
  return /* @__PURE__ */ jsxs12(Tooltip, { ...open ? { open: false } : {}, children: [
2294
- /* @__PURE__ */ jsx15(Trigger, { asChild: true, children: /* @__PURE__ */ jsx15(TooltipTrigger, { asChild: true, children: triggerButton }) }),
2314
+ /* @__PURE__ */ jsx15(Trigger, { asChild: true, ref: triggerRef, children: /* @__PURE__ */ jsx15(TooltipTrigger, { asChild: true, children: triggerButton }) }),
2295
2315
  /* @__PURE__ */ jsx15(TooltipContent, { side: "bottom", className: "max-w-xs", children: displayLabel })
2296
2316
  ] });
2297
2317
  };
@@ -2378,14 +2398,14 @@ function AgentListDropdown({
2378
2398
  /* @__PURE__ */ jsx15(
2379
2399
  PopoverContent,
2380
2400
  {
2381
- ...contentSide ? { side: contentSide } : {},
2401
+ ...contentSide ? { side: contentSide } : fitHeight ? { side: "bottom" } : {},
2382
2402
  align: "start",
2383
2403
  sideOffset: 4,
2384
2404
  collisionPadding: 12,
2385
2405
  sticky: "always",
2386
2406
  ...popoverContainer ? { container: popoverContainer } : {},
2387
2407
  className: "p-0 overflow-hidden w-[680px]",
2388
- style: { height: PANEL_HEIGHT, maxHeight: LIST_MAX_HEIGHT },
2408
+ style: { height: fitHeight ?? PANEL_HEIGHT, maxHeight: fitHeight ?? LIST_MAX_HEIGHT },
2389
2409
  children: /* @__PURE__ */ jsxs12("div", { className: "flex h-full", children: [
2390
2410
  /* @__PURE__ */ jsx15("div", { className: "flex flex-col min-w-0 w-[340px] shrink-0 border-r border-border", children: listPanel }),
2391
2411
  /* @__PURE__ */ jsxs12(
@@ -2621,6 +2641,7 @@ export {
2621
2641
  orchestraDepthLine,
2622
2642
  orchestraLabel,
2623
2643
  orchestraModeLabel,
2644
+ panelHeightBelow,
2624
2645
  useAgentCatalog,
2625
2646
  useAgentCatalogRows,
2626
2647
  useAgentCatalogState,