@ai-matrx/agents 0.59.229 → 0.59.231

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,37 @@
1
1
  # Changelog
2
2
 
3
- ## 0.59.229
3
+ ## 0.59.231
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.230
9
+
10
+ The agent picker windows its list. `AgentListContent` (the body of
11
+ `AgentListInlinePicker`, `AgentListDropdown` and `AgentListPanel`) mounted every
12
+ agent as a row — measured live on a 605-agent tab: ~5,000 extra DOM nodes and a
13
+ 0.8–2.8 s main-thread block on every open. Past 50 rows it now renders only the
14
+ rows the viewport shows plus overscan (`computeWindow` from
15
+ `@ai-matrx/design-system/data-table/virtual-window`), with spacers keeping the
16
+ scroll height exact; rows are a fixed `AGENT_ROW_HEIGHT` (36 px, exported).
17
+ The list is a `listbox` of `option`s (`aria-setsize`/`aria-posinset`), and the
18
+ search field is its `combobox`: ArrowUp/ArrowDown/PageUp/PageDown move the
19
+ highlight (`aria-activedescendant`), scrolling unmounted rows into view, and
20
+ Enter picks. Opening with a selected agent that is not pinned scrolls it into
21
+ view. `SearchInput` takes optional `onKeyDown` and `inputProps`. Proof:
22
+ `catalog/react/picker-virtualized.test.tsx` (600 agents; red on the old list).
23
+ No consumer action required.
24
+
25
+ ## 0.59.229
26
+
27
+ Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff b18bc55fba 3a8fce70c3 -- apps/shared/matrx-agents/src`
28
+ has no shipped-source changes outside tests, fixtures and docs). No consumer action required.
29
+
30
+ ## 0.59.228
31
+
32
+ Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 351d20c835 b18bc55fba -- apps/shared/matrx-agents/src`
33
+ has no shipped-source changes outside tests, fixtures and docs). No consumer action required.
34
+
8
35
  ## 0.59.227
9
36
 
10
37
  Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 9ef2018cc7 351d20c835 -- apps/shared/matrx-agents/src`
@@ -2354,6 +2381,10 @@ No source changes intended and no consumer action required.
2354
2381
 
2355
2382
  ## Unreleased
2356
2383
 
2384
+ - **`@ai-matrx/agents/mandates` re-exports the mandate keys from `@ai-matrx/api/intelligence`** (their one home; the identical `mandates/keys.generated.ts` copy is gone and the generator writes only the api file). The snapshots stay here. Consumer action: none.
2385
+
2386
+
2387
+ - **`ArrowUpDownIcon`, `MessageCircleIcon` and `RocketIcon` (catalog/react/icons) are re-exports of `@ai-matrx/design-system/icons`**, like `FolderIcon`/`TagIcon`/`RotateCcwIcon` before them, so the web picker draws the lucide 1.48 glyphs. The shared `icon-paths` table is untouched, the native entry still draws from it. Consumer action: none.
2357
2388
  - **The mandate key module has one home (packages-copies lane, 2026-10-21).** `mandates/keys.generated.ts` is deleted; the generator writes only `@ai-matrx/api`'s `intelligence/keys.generated.ts` and `@ai-matrx/agents/mandates` re-exports from it. Consumer action: none.
2358
2389
 
2359
2390
  - Context receipt: `ContextReceiptRow.consumed_as` / `consumed_into` (RULES.md §5) — a key
@@ -453,85 +453,6 @@ function useAgentConsumer(consumerId, options) {
453
453
  };
454
454
  }
455
455
 
456
- // quick/shape.ts
457
- var QUICK_AGENT_TAG = "kind:quick";
458
- var QUICK_AGENT_DEFAULT_SETTINGS = Object.freeze({
459
- temperature: 0.7,
460
- topP: 1,
461
- maxOutputTokens: 4096
462
- });
463
- function isQuickAgentSummary(row) {
464
- return row.tags.includes(QUICK_AGENT_TAG);
465
- }
466
- function withoutQuickAgents(rows) {
467
- return rows.filter((row) => !isQuickAgentSummary(row));
468
- }
469
-
470
- // catalog/types.ts
471
- function isMandateAgentId(id) {
472
- return id.startsWith("mandate:");
473
- }
474
- var SORT_OPTIONS = [
475
- { value: "updated-desc", label: "Recent" },
476
- { value: "created-desc", label: "Created" },
477
- { value: "name-asc", label: "A \u2192 Z" },
478
- { value: "name-desc", label: "Z \u2192 A" },
479
- { value: "category-asc", label: "Category" }
480
- ];
481
- var ARCHIVE_FILTER_ORDER = [
482
- "active",
483
- "both",
484
- "archived"
485
- ];
486
- var ARCHIVE_FILTER_OPTIONS = [
487
- { value: "active", label: "Hide archived", chip: "Archive" },
488
- { value: "both", label: "Show all", chip: "All + archived" },
489
- { value: "archived", label: "Archived only", chip: "Archived only" }
490
- ];
491
- function nextArchFilter(current) {
492
- const index = ARCHIVE_FILTER_ORDER.indexOf(current);
493
- if (index < 0) return ARCHIVE_FILTER_ORDER[0];
494
- return ARCHIVE_FILTER_ORDER[(index + 1) % ARCHIVE_FILTER_ORDER.length];
495
- }
496
- var AGENT_NONE_SENTINEL = "__none__";
497
-
498
- // catalog/labels.ts
499
- function agentListEmptyLabel(tab, labels) {
500
- switch (tab) {
501
- case "system":
502
- return labels.emptySystem;
503
- case "shared":
504
- return labels.emptyShared;
505
- default:
506
- return labels.emptyDefault;
507
- }
508
- }
509
- function shouldDefaultAgentListToPublicTab(args) {
510
- if (!args.userId) return true;
511
- if (!args.agentsLoaded) return false;
512
- return args.ownedCount === 0;
513
- }
514
- function agentArchiveFilterChipLabel(archFilter) {
515
- return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.chip ?? "Archive";
516
- }
517
- function agentArchiveFilterStateLabel(archFilter) {
518
- return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.label ?? "Hide archived";
519
- }
520
- function agentArchiveFilterControlLabel(archFilter) {
521
- return `Archive filter: ${agentArchiveFilterStateLabel(
522
- archFilter
523
- ).toLowerCase()}. Click for ${agentArchiveFilterStateLabel(
524
- nextArchFilter(archFilter)
525
- ).toLowerCase()}`;
526
- }
527
- function agentListFooterLabel(args) {
528
- const { count, archFilter, archivedHiddenCount } = args;
529
- if (archFilter === "archived") return `${count} archived shown`;
530
- const base = `${count} agent${count !== 1 ? "s" : ""}`;
531
- if (archFilter === "both") return `${base} \xB7 archived shown`;
532
- return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
533
- }
534
-
535
456
  // catalog/score.ts
536
457
  function computeAgentSearchScore(agent, query) {
537
458
  const q = query.trim().toLowerCase();
@@ -578,6 +499,34 @@ function agentMatchesSearch(agent, query) {
578
499
  return computeAgentSearchScore(agent, query) > 0;
579
500
  }
580
501
 
502
+ // catalog/types.ts
503
+ function isMandateAgentId(id) {
504
+ return id.startsWith("mandate:");
505
+ }
506
+ var SORT_OPTIONS = [
507
+ { value: "updated-desc", label: "Recent" },
508
+ { value: "created-desc", label: "Created" },
509
+ { value: "name-asc", label: "A \u2192 Z" },
510
+ { value: "name-desc", label: "Z \u2192 A" },
511
+ { value: "category-asc", label: "Category" }
512
+ ];
513
+ var ARCHIVE_FILTER_ORDER = [
514
+ "active",
515
+ "both",
516
+ "archived"
517
+ ];
518
+ var ARCHIVE_FILTER_OPTIONS = [
519
+ { value: "active", label: "Hide archived", chip: "Archive" },
520
+ { value: "both", label: "Show all", chip: "All + archived" },
521
+ { value: "archived", label: "Archived only", chip: "Archived only" }
522
+ ];
523
+ function nextArchFilter(current) {
524
+ const index = ARCHIVE_FILTER_ORDER.indexOf(current);
525
+ if (index < 0) return ARCHIVE_FILTER_ORDER[0];
526
+ return ARCHIVE_FILTER_ORDER[(index + 1) % ARCHIVE_FILTER_ORDER.length];
527
+ }
528
+ var AGENT_NONE_SENTINEL = "__none__";
529
+
581
530
  // catalog/selectors.ts
582
531
  function memoize1(fn) {
583
532
  let lastA;
@@ -846,6 +795,52 @@ var selectTotalFavoriteAgentsCount = memoize1(
846
795
  (agents) => countUserRows(agents, "active", isFavorite)
847
796
  );
848
797
 
798
+ // quick/shape.ts
799
+ var QUICK_AGENT_TAG = "kind:quick";
800
+ function isQuickAgentSummary(row) {
801
+ return row.tags.includes(QUICK_AGENT_TAG);
802
+ }
803
+ function withoutQuickAgents(rows) {
804
+ return rows.filter((row) => !isQuickAgentSummary(row));
805
+ }
806
+
807
+ // catalog/labels.ts
808
+ function agentListEmptyLabel(tab, labels) {
809
+ switch (tab) {
810
+ case "system":
811
+ return labels.emptySystem;
812
+ case "shared":
813
+ return labels.emptyShared;
814
+ default:
815
+ return labels.emptyDefault;
816
+ }
817
+ }
818
+ function shouldDefaultAgentListToPublicTab(args) {
819
+ if (!args.userId) return true;
820
+ if (!args.agentsLoaded) return false;
821
+ return args.ownedCount === 0;
822
+ }
823
+ function agentArchiveFilterChipLabel(archFilter) {
824
+ return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.chip ?? "Archive";
825
+ }
826
+ function agentArchiveFilterStateLabel(archFilter) {
827
+ return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.label ?? "Hide archived";
828
+ }
829
+ function agentArchiveFilterControlLabel(archFilter) {
830
+ return `Archive filter: ${agentArchiveFilterStateLabel(
831
+ archFilter
832
+ ).toLowerCase()}. Click for ${agentArchiveFilterStateLabel(
833
+ nextArchFilter(archFilter)
834
+ ).toLowerCase()}`;
835
+ }
836
+ function agentListFooterLabel(args) {
837
+ const { count, archFilter, archivedHiddenCount } = args;
838
+ if (archFilter === "archived") return `${count} archived shown`;
839
+ const base = `${count} agent${count !== 1 ? "s" : ""}`;
840
+ if (archFilter === "both") return `${base} \xB7 archived shown`;
841
+ return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
842
+ }
843
+
849
844
  // catalog/shared/useAgentListCore.ts
850
845
  var HOVER_GRACE_MS = 900;
851
846
  function coerceVisibleTab(current, allowed, initialTab) {
@@ -411,85 +411,6 @@ function useAgentConsumer(consumerId, options) {
411
411
  };
412
412
  }
413
413
 
414
- // quick/shape.ts
415
- var QUICK_AGENT_TAG = "kind:quick";
416
- var QUICK_AGENT_DEFAULT_SETTINGS = Object.freeze({
417
- temperature: 0.7,
418
- topP: 1,
419
- maxOutputTokens: 4096
420
- });
421
- function isQuickAgentSummary(row) {
422
- return row.tags.includes(QUICK_AGENT_TAG);
423
- }
424
- function withoutQuickAgents(rows) {
425
- return rows.filter((row) => !isQuickAgentSummary(row));
426
- }
427
-
428
- // catalog/types.ts
429
- function isMandateAgentId(id) {
430
- return id.startsWith("mandate:");
431
- }
432
- var SORT_OPTIONS = [
433
- { value: "updated-desc", label: "Recent" },
434
- { value: "created-desc", label: "Created" },
435
- { value: "name-asc", label: "A \u2192 Z" },
436
- { value: "name-desc", label: "Z \u2192 A" },
437
- { value: "category-asc", label: "Category" }
438
- ];
439
- var ARCHIVE_FILTER_ORDER = [
440
- "active",
441
- "both",
442
- "archived"
443
- ];
444
- var ARCHIVE_FILTER_OPTIONS = [
445
- { value: "active", label: "Hide archived", chip: "Archive" },
446
- { value: "both", label: "Show all", chip: "All + archived" },
447
- { value: "archived", label: "Archived only", chip: "Archived only" }
448
- ];
449
- function nextArchFilter(current) {
450
- const index = ARCHIVE_FILTER_ORDER.indexOf(current);
451
- if (index < 0) return ARCHIVE_FILTER_ORDER[0];
452
- return ARCHIVE_FILTER_ORDER[(index + 1) % ARCHIVE_FILTER_ORDER.length];
453
- }
454
- var AGENT_NONE_SENTINEL = "__none__";
455
-
456
- // catalog/labels.ts
457
- function agentListEmptyLabel(tab, labels) {
458
- switch (tab) {
459
- case "system":
460
- return labels.emptySystem;
461
- case "shared":
462
- return labels.emptyShared;
463
- default:
464
- return labels.emptyDefault;
465
- }
466
- }
467
- function shouldDefaultAgentListToPublicTab(args) {
468
- if (!args.userId) return true;
469
- if (!args.agentsLoaded) return false;
470
- return args.ownedCount === 0;
471
- }
472
- function agentArchiveFilterChipLabel(archFilter) {
473
- return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.chip ?? "Archive";
474
- }
475
- function agentArchiveFilterStateLabel(archFilter) {
476
- return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.label ?? "Hide archived";
477
- }
478
- function agentArchiveFilterControlLabel(archFilter) {
479
- return `Archive filter: ${agentArchiveFilterStateLabel(
480
- archFilter
481
- ).toLowerCase()}. Click for ${agentArchiveFilterStateLabel(
482
- nextArchFilter(archFilter)
483
- ).toLowerCase()}`;
484
- }
485
- function agentListFooterLabel(args) {
486
- const { count, archFilter, archivedHiddenCount } = args;
487
- if (archFilter === "archived") return `${count} archived shown`;
488
- const base = `${count} agent${count !== 1 ? "s" : ""}`;
489
- if (archFilter === "both") return `${base} \xB7 archived shown`;
490
- return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
491
- }
492
-
493
414
  // catalog/score.ts
494
415
  function computeAgentSearchScore(agent, query) {
495
416
  const q = query.trim().toLowerCase();
@@ -536,6 +457,34 @@ function agentMatchesSearch(agent, query) {
536
457
  return computeAgentSearchScore(agent, query) > 0;
537
458
  }
538
459
 
460
+ // catalog/types.ts
461
+ function isMandateAgentId(id) {
462
+ return id.startsWith("mandate:");
463
+ }
464
+ var SORT_OPTIONS = [
465
+ { value: "updated-desc", label: "Recent" },
466
+ { value: "created-desc", label: "Created" },
467
+ { value: "name-asc", label: "A \u2192 Z" },
468
+ { value: "name-desc", label: "Z \u2192 A" },
469
+ { value: "category-asc", label: "Category" }
470
+ ];
471
+ var ARCHIVE_FILTER_ORDER = [
472
+ "active",
473
+ "both",
474
+ "archived"
475
+ ];
476
+ var ARCHIVE_FILTER_OPTIONS = [
477
+ { value: "active", label: "Hide archived", chip: "Archive" },
478
+ { value: "both", label: "Show all", chip: "All + archived" },
479
+ { value: "archived", label: "Archived only", chip: "Archived only" }
480
+ ];
481
+ function nextArchFilter(current) {
482
+ const index = ARCHIVE_FILTER_ORDER.indexOf(current);
483
+ if (index < 0) return ARCHIVE_FILTER_ORDER[0];
484
+ return ARCHIVE_FILTER_ORDER[(index + 1) % ARCHIVE_FILTER_ORDER.length];
485
+ }
486
+ var AGENT_NONE_SENTINEL = "__none__";
487
+
539
488
  // catalog/selectors.ts
540
489
  function memoize1(fn) {
541
490
  let lastA;
@@ -804,6 +753,52 @@ var selectTotalFavoriteAgentsCount = memoize1(
804
753
  (agents) => countUserRows(agents, "active", isFavorite)
805
754
  );
806
755
 
756
+ // quick/shape.ts
757
+ var QUICK_AGENT_TAG = "kind:quick";
758
+ function isQuickAgentSummary(row) {
759
+ return row.tags.includes(QUICK_AGENT_TAG);
760
+ }
761
+ function withoutQuickAgents(rows) {
762
+ return rows.filter((row) => !isQuickAgentSummary(row));
763
+ }
764
+
765
+ // catalog/labels.ts
766
+ function agentListEmptyLabel(tab, labels) {
767
+ switch (tab) {
768
+ case "system":
769
+ return labels.emptySystem;
770
+ case "shared":
771
+ return labels.emptyShared;
772
+ default:
773
+ return labels.emptyDefault;
774
+ }
775
+ }
776
+ function shouldDefaultAgentListToPublicTab(args) {
777
+ if (!args.userId) return true;
778
+ if (!args.agentsLoaded) return false;
779
+ return args.ownedCount === 0;
780
+ }
781
+ function agentArchiveFilterChipLabel(archFilter) {
782
+ return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.chip ?? "Archive";
783
+ }
784
+ function agentArchiveFilterStateLabel(archFilter) {
785
+ return ARCHIVE_FILTER_OPTIONS.find((o) => o.value === archFilter)?.label ?? "Hide archived";
786
+ }
787
+ function agentArchiveFilterControlLabel(archFilter) {
788
+ return `Archive filter: ${agentArchiveFilterStateLabel(
789
+ archFilter
790
+ ).toLowerCase()}. Click for ${agentArchiveFilterStateLabel(
791
+ nextArchFilter(archFilter)
792
+ ).toLowerCase()}`;
793
+ }
794
+ function agentListFooterLabel(args) {
795
+ const { count, archFilter, archivedHiddenCount } = args;
796
+ if (archFilter === "archived") return `${count} archived shown`;
797
+ const base = `${count} agent${count !== 1 ? "s" : ""}`;
798
+ if (archFilter === "both") return `${base} \xB7 archived shown`;
799
+ return archivedHiddenCount > 0 ? `${base} \xB7 ${archivedHiddenCount} archived hidden` : base;
800
+ }
801
+
807
802
  // catalog/shared/useAgentListCore.ts
808
803
  var HOVER_GRACE_MS = 900;
809
804
  function coerceVisibleTab(current, allowed, initialTab) {