@ai-matrx/agents 0.59.151 → 0.59.153

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 (50) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +3 -3
  3. package/dist/catalog/index.cjs +7 -7
  4. package/dist/catalog/index.d.cts +28 -28
  5. package/dist/catalog/index.d.ts +28 -28
  6. package/dist/catalog/index.js +7 -7
  7. package/dist/catalog/native/index.cjs +1 -1
  8. package/dist/catalog/native/index.d.cts +16 -16
  9. package/dist/catalog/native/index.d.ts +16 -16
  10. package/dist/catalog/native/index.js +1 -1
  11. package/dist/catalog/react/index.cjs +1 -1
  12. package/dist/catalog/react/index.d.cts +9 -9
  13. package/dist/catalog/react/index.d.ts +9 -9
  14. package/dist/catalog/react/index.js +1 -1
  15. package/dist/catalog/styles.css +5 -5
  16. package/dist/content-transfer/index.cjs +2 -2
  17. package/dist/content-transfer/index.js +2 -2
  18. package/dist/content-transfer/react/index.cjs +2 -2
  19. package/dist/content-transfer/react/index.js +2 -2
  20. package/dist/context/react/index.d.cts +3 -3
  21. package/dist/context/react/index.d.ts +3 -3
  22. package/dist/index.cjs +3 -3
  23. package/dist/index.d.cts +2 -2
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.js +3 -3
  26. package/dist/mandates/index.cjs +2 -2
  27. package/dist/mandates/index.d.cts +4 -4
  28. package/dist/mandates/index.d.ts +4 -4
  29. package/dist/mandates/index.js +2 -2
  30. package/dist/mandates/runs.d.cts +1 -1
  31. package/dist/mandates/runs.d.ts +1 -1
  32. package/dist/models/index.d.cts +2 -2
  33. package/dist/models/index.d.ts +2 -2
  34. package/dist/models/react/index.cjs +1 -1
  35. package/dist/models/react/index.js +1 -1
  36. package/dist/quick/index.d.cts +5 -5
  37. package/dist/quick/index.d.ts +5 -5
  38. package/dist/settings/index.d.cts +8 -8
  39. package/dist/settings/index.d.ts +8 -8
  40. package/dist/skills/index.d.cts +1 -1
  41. package/dist/skills/index.d.ts +1 -1
  42. package/dist/skills/react/index.d.cts +1 -1
  43. package/dist/skills/react/index.d.ts +1 -1
  44. package/dist/sources/index.d.cts +1 -1
  45. package/dist/sources/index.d.ts +1 -1
  46. package/dist/sources/runtime/index.d.cts +2 -2
  47. package/dist/sources/runtime/index.d.ts +2 -2
  48. package/dist/tools/index.d.cts +6 -6
  49. package/dist/tools/index.d.ts +6 -6
  50. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,10 +1,20 @@
1
1
  # Changelog
2
2
 
3
- ## 0.59.151
3
+ ## 0.59.153
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.151
9
+
10
+ Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 0746898655 5f3243d496 -- apps/shared/matrx-agents/src`
11
+ has no shipped-source changes outside tests, fixtures and docs). No consumer action required.
12
+
13
+ ## 0.59.150
14
+
15
+ Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 14c15decf1 0746898655 -- apps/shared/matrx-agents/src`
16
+ has no shipped-source changes outside tests, fixtures and docs). No consumer action required.
17
+
8
18
  ## 0.59.149
9
19
 
10
20
  Automatic changed-only republish (docs/metadata drift since the last published version; verified: `git diff 62116d54f1 14c15decf1 -- apps/shared/matrx-agents/src`
package/README.md CHANGED
@@ -197,9 +197,9 @@ import { AgentCatalogProvider, AgentListDropdown } from "@ai-matrx/agents/catalo
197
197
  </AgentCatalogProvider>
198
198
  ```
199
199
 
200
- You get, on every surface and in every app: the complete catalogue read (owned
200
+ You get, on every surface and in every app: the complete catalog read (owned
201
201
  + shared + org-shared + platform agents), Mine / Shared / All / Public tabs
202
- with live counts, sort, favourites (the caller's own stars, read and written in
202
+ with live counts, sort, favorites (the caller's own stars, read and written in
203
203
  `platform.user_entity_state`), category and tag filters,
204
204
  local relevance scoring plus server-side search, the current agent pinned on
205
205
  top, per-row origin badges, a hover detail panel, a mobile drawer, and a footer
@@ -215,7 +215,7 @@ utilities are generated:
215
215
 
216
216
  **The default row.** Pass `defaultMandateKey` and the picker offers the
217
217
  platform default for that Mandate, resolved LIVE through the server and
218
- labelled with the Holder's real name — no client ever hardcodes an agent name
218
+ labeled with the Holder's real name — no client ever hardcodes an agent name
219
219
  again. Its id is `mandate:<key>`. If the cached name and the live one disagree,
220
220
  the picker shows a persistent banner and calls your `notifier`.
221
221
 
@@ -295,7 +295,7 @@ async function readAgentCatalogRows(client) {
295
295
  if (dropped > 0) {
296
296
  throw new AgentCatalogReadError(
297
297
  "agx_get_list_full",
298
- `${dropped} row(s) came back without an id and were refused. A row that cannot be identified cannot be selected, so the catalogue is not trustworthy \u2014 check the RPC's return shape.`
298
+ `${dropped} row(s) came back without an id and were refused. A row that cannot be identified cannot be selected, so the catalog is not trustworthy \u2014 check the RPC's return shape.`
299
299
  );
300
300
  }
301
301
  return rows;
@@ -796,7 +796,7 @@ function createAgentCatalog(config) {
796
796
  if (!config.client || typeof config.client.rpc !== "function") {
797
797
  throw new AgentCatalogConfigError({
798
798
  code: "missing_client",
799
- message: "createAgentCatalog needs a Supabase client \u2014 it IS the catalogue read",
799
+ message: "createAgentCatalog needs a Supabase client \u2014 it IS the catalog read",
800
800
  remedy: "pass `client` (a supabase-js client, or anything with rpc() and schema().from())"
801
801
  });
802
802
  }
@@ -836,7 +836,7 @@ function createAgentCatalog(config) {
836
836
  function reportFavoriteReadFailure(message) {
837
837
  errorSink({
838
838
  code: "favorite_read_failed",
839
- message: `your starred agents could not be read (${message}); every star is shown unset until the next catalogue load`,
839
+ message: `your starred agents could not be read (${message}); every star is shown unset until the next catalog load`,
840
840
  context: { catalogId }
841
841
  });
842
842
  }
@@ -886,7 +886,7 @@ function createAgentCatalog(config) {
886
886
  anonymousReported = true;
887
887
  errorSink({
888
888
  code: "identity_unavailable",
889
- message: "identity.requireUserId() threw, so the picker is treating this session as signed out and opening on the public catalogue. Favoriting is unavailable until a session exists.",
889
+ message: "identity.requireUserId() threw, so the picker is treating this session as signed out and opening on the public catalog. Favoriting is unavailable until a session exists.",
890
890
  context: { detail: errorMessage(e) }
891
891
  });
892
892
  }
@@ -924,7 +924,7 @@ function createAgentCatalog(config) {
924
924
  publish({ ...state, status: "failed", error: message });
925
925
  errorSink({
926
926
  code: "list_read_failed",
927
- message: `the agent catalogue could not be read: ${message}`,
927
+ message: `the agent catalog could not be read: ${message}`,
928
928
  context: { catalogId }
929
929
  });
930
930
  throw e;
@@ -970,7 +970,7 @@ function createAgentCatalog(config) {
970
970
  pinnedFallbackReported = true;
971
971
  errorSink({
972
972
  code: "pinned_read_unsupported",
973
- message: `the pinned-agents read fell back to the whole catalogue (${e.message}); pass a favorites port with list() and a supabase-js client`,
973
+ message: `the pinned-agents read fell back to the whole catalog (${e.message}); pass a favorites port with list() and a supabase-js client`,
974
974
  context: { catalogId }
975
975
  });
976
976
  }
@@ -1079,7 +1079,7 @@ function createAgentCatalog(config) {
1079
1079
  if (!existing) {
1080
1080
  errorSink({
1081
1081
  code: "favorite_unknown_agent",
1082
- message: `cannot favorite ${agentId}: it is not in this catalogue`
1082
+ message: `cannot favorite ${agentId}: it is not in this catalog`
1083
1083
  });
1084
1084
  return;
1085
1085
  }
@@ -299,7 +299,7 @@ interface AgentCatalogRpcCall extends PromiseLike<PgResultLike> {
299
299
  * PostgREST's `in` filter on the function's result rows — how the pinned
300
300
  * read asks `agx_get_list_full` for just the starred ids (2026-10-09).
301
301
  * OPTIONAL in the structural type: a host bridge without it gets the whole
302
- * catalogue instead, announced through the errorSink.
302
+ * catalog instead, announced through the errorSink.
303
303
  */
304
304
  in?(column: string, values: readonly string[]): AgentCatalogRpcCall;
305
305
  }
@@ -313,7 +313,7 @@ interface AgentCatalogRpcCall extends PromiseLike<PgResultLike> {
313
313
  * the public schema's functions, so a bridge never crashes the pickers.
314
314
  *
315
315
  * Absent → `createAgentCatalog` throws `AgentCatalogConfigError`. There is no
316
- * degraded mode: the package IS the catalogue read.
316
+ * degraded mode: the package IS the catalog read.
317
317
  */
318
318
  interface AgentCatalogClient {
319
319
  schema?(name: string): {
@@ -367,8 +367,8 @@ interface AgentCatalogFavorites {
367
367
  /**
368
368
  * Every state row the caller owns of one kind (`ues_list`). The pinned read
369
369
  * asks for `"favorite"` to learn WHICH agents to read, so a sidebar never
370
- * pulls the whole catalogue to show a handful of stars. OPTIONAL: a port
371
- * without it makes the pinned read fall back to the whole catalogue, loudly.
370
+ * pulls the whole catalog to show a handful of stars. OPTIONAL: a port
371
+ * without it makes the pinned read fall back to the whole catalog, loudly.
372
372
  */
373
373
  list?(kind?: "favorite" | "pinned" | "hidden"): Promise<{
374
374
  ok: true;
@@ -394,7 +394,7 @@ interface AgentCatalogFavorites {
394
394
  * `requireUserId` THROWS when there is no session — never a silent anonymous
395
395
  * read. The catalog catches that throw in exactly ONE place (the tab-default
396
396
  * heuristic, where a signed-out visitor legitimately lands on the public
397
- * catalogue) and reports it to the `errorSink` the first time; every other
397
+ * catalog) and reports it to the `errorSink` the first time; every other
398
398
  * caller lets it propagate.
399
399
  */
400
400
  interface AgentCatalogIdentity {
@@ -485,7 +485,7 @@ interface AgentCatalogLabels {
485
485
  emptyDefault: string;
486
486
  emptyShared: string;
487
487
  emptySystem: string;
488
- /** Empty state for a signed-out visitor — there is no catalogue to read. */
488
+ /** Empty state for a signed-out visitor — there is no catalog to read. */
489
489
  emptySignedOut: string;
490
490
  loading: string;
491
491
  triggerFallback: string;
@@ -604,7 +604,7 @@ interface ResolvedDefaultRow {
604
604
  mandateKey: string;
605
605
  /** The `agent.definition` id the mandate resolved to. */
606
606
  holderId: string;
607
- /** The holder's REAL name, read from the catalogue — never hardcoded. */
607
+ /** The holder's REAL name, read from the catalog — never hardcoded. */
608
608
  holderName: string;
609
609
  holderDescription: string | null;
610
610
  provenance: string;
@@ -716,7 +716,7 @@ interface AgentCatalogState {
716
716
  /**
717
717
  * The caller's starred rows (`ensureFavoriteRows`): `succeeded` once every
718
718
  * starred agent the caller can see is in `byId` — by the narrow pinned read
719
- * or by a complete catalogue load, whichever came first.
719
+ * or by a complete catalog load, whichever came first.
720
720
  */
721
721
  favoriteRowsStatus: AgentCatalogStatus;
722
722
  }
@@ -741,17 +741,17 @@ interface AgentCatalog {
741
741
  /**
742
742
  * The signed-in user id, or `null` when there is no session. The ONE place
743
743
  * `identity.requireUserId()`'s throw is caught — a signed-out visitor
744
- * legitimately lands on the public catalogue — and it is reported to the
744
+ * legitimately lands on the public catalog — and it is reported to the
745
745
  * errorSink the first time so it is never silent.
746
746
  */
747
747
  getUserIdOrNull(): string | null;
748
- /** Load the catalogue if it is not fresh. Safe to call on every mount. */
748
+ /** Load the catalog if it is not fresh. Safe to call on every mount. */
749
749
  ensureLoaded(options?: {
750
750
  force?: boolean;
751
751
  }): Promise<void>;
752
752
  /**
753
753
  * Load ONLY the caller's starred agents into the registry (the pinned read —
754
- * `ues_list` then `agx_get_list_full?id=in.(…)`), never the whole catalogue.
754
+ * `ues_list` then `agx_get_list_full?id=in.(…)`), never the whole catalog.
755
755
  * Answered at once when a complete load is fresh. Deduped; safe on every
756
756
  * mount. For surfaces that show stars without being a picker (a sidebar's
757
757
  * Pinned section): nothing loads the full list until a picker opens.
@@ -804,11 +804,11 @@ declare function getRegisteredAgentCatalog(catalogId?: string): AgentCatalog | u
804
804
  *
805
805
  * Every database call the catalog makes, and nothing else. Five of them:
806
806
  *
807
- * 1. `agx_get_list_full()` — the complete catalogue (owned + directly-shared
807
+ * 1. `agx_get_list_full()` — the complete catalog (owned + directly-shared
808
808
  * + org-shared user agents, unioned with active builtins).
809
809
  * 2. `agx_search(p_query, p_deep, p_limit, p_offset)` — tier-2 server search.
810
810
  * 3. `agx_resolve_agent_address(p_ids)` — the single-agent name read, used
811
- * when a mandate's Holder is not in the caller's own catalogue.
811
+ * when a mandate's Holder is not in the caller's own catalog.
812
812
  * 4. The caller's stars: `ues_get_bulk('agent', ids)` through the
813
813
  * favorites port (`platform.user_entity_state`), overlaid on every row
814
814
  * set this module returns to the store.
@@ -817,12 +817,12 @@ declare function getRegisteredAgentCatalog(catalogId?: string): AgentCatalog | u
817
817
  * 6. THE PINNED READ (2026-10-09): the caller's starred ids (`ues_list`
818
818
  * through the favorites port), then `agx_get_list_full` filtered to
819
819
  * exactly those ids (`?id=in.(…)`). A sidebar's Pinned section shows a
820
- * handful of rows; it never pays for the whole catalogue to find them.
820
+ * handful of rows; it never pays for the whole catalog to find them.
821
821
  *
822
822
  * 🚨 THE LIST READ IS COMPLETE OR IT THROWS. PostgREST caps every response at
823
823
  * `db-max-rows` (1000 on Matrx Main) and reports success — matrx-frontend's
824
824
  * `fetchAgentsListFull` issued a bare `.rpc()` and would silently have
825
- * returned 1000 rows of a larger catalogue (the ~400-builtin truncation
825
+ * returned 1000 rows of a larger catalog (the ~400-builtin truncation
826
826
  * incident is the near-miss). Here the read goes through `readAllRows` with
827
827
  * `{ count: "exact" }` and a stable `.order("id")`, so a truncation is a
828
828
  * loud `IncompleteReadError` instead of a confidently short picker.
@@ -838,7 +838,7 @@ declare class AgentCatalogReadError extends Error {
838
838
  constructor(source: string, detail: string);
839
839
  }
840
840
  /**
841
- * Read the WHOLE agent catalogue. Throws rather than returning a partial
841
+ * Read the WHOLE agent catalog. Throws rather than returning a partial
842
842
  * list — see the file header.
843
843
  */
844
844
  declare function readAgentCatalogRows(client: AgentCatalogClient): Promise<AgentSummary[]>;
@@ -859,7 +859,7 @@ declare function searchAgentsOnServer(client: AgentCatalogClient, args: {
859
859
  }): Promise<AgentServerSearchResult>;
860
860
  /**
861
861
  * The single-agent read, used when a mandate's resolved Holder is not in the
862
- * caller's own catalogue (a platform agent nobody has shared, most often).
862
+ * caller's own catalog (a platform agent nobody has shared, most often).
863
863
  *
864
864
  * Two existing doors, in order — never a new RPC:
865
865
  * 1. `agx_search` with the id as the query. The scorer awards an exact id
@@ -942,7 +942,7 @@ declare function orchestraDelegatesLine(badge: OrchestraBadge, limit?: number):
942
942
  * What every client used to do: prepend a placeholder row whose id is
943
943
  * `mandate:<key>` and whose name and description are HARDCODED, and let the
944
944
  * server resolve the real Holder at run time. That is how matrx-local's row
945
- * came to be labelled "Matrx Desktop Agent" while `local.cloud_chat` actually
945
+ * came to be labeled "Matrx Desktop Agent" while `local.cloud_chat` actually
946
946
  * resolves to General Chat — a label lying on screen, with nothing anywhere
947
947
  * that could notice.
948
948
  *
@@ -957,8 +957,8 @@ declare function orchestraDelegatesLine(badge: OrchestraBadge, limit?: number):
957
957
  * itself. It asks. That is why a `defaultMandateKey` with no transport is
958
958
  * a loud config error and not a DB read.
959
959
  * - The row renders the Holder's REAL name and description, read from the
960
- * catalogue rows already in hand, or through ONE existing single-agent
961
- * read when the Holder is not in this caller's catalogue.
960
+ * catalog rows already in hand, or through ONE existing single-agent
961
+ * read when the Holder is not in this caller's catalog.
962
962
  * - The last resolution is cached in the `storage` port for first paint.
963
963
  * - Whenever the cached row and the LIVE resolution disagree on holder id
964
964
  * or holder name, the picker shows a PERSISTENT in-picker banner AND the
@@ -1038,7 +1038,7 @@ declare function resolveDefaultRow(args: ResolveDefaultRowArgs): Promise<Resolve
1038
1038
  * VERBATIM port of matrx-frontend `features/agents/constants/agent-list-labels.ts`.
1039
1039
  * The only seam inverted: the two label constants moved into the `labels` port
1040
1040
  * (`DEFAULT_AGENT_CATALOG_LABELS.publicTab` / `.publicBadge`) so a host can
1041
- * override them; the FUNCTIONS below keep their exact behaviour.
1041
+ * override them; the FUNCTIONS below keep their exact behavior.
1042
1042
  */
1043
1043
 
1044
1044
  declare function agentListEmptyLabel(tab: AgentTab, labels: AgentCatalogLabels): string;
@@ -1137,7 +1137,7 @@ declare function agentMatchesSearch(agent: AgentSearchable, query: string): bool
1137
1137
  * F1 — every sort now ends on `id` ASC, the same final key `agx_get_list`
1138
1138
  * ends on, so the order of TIED rows is defined by the rows instead of
1139
1139
  * by whichever transport the host used to fetch them.
1140
- * F5 — the tab-badge counts honour the archive filter, so the badge, the
1140
+ * F5 — the tab-badge counts honor the archive filter, so the badge, the
1141
1141
  * footer and the rendered rows are the same number.
1142
1142
  *
1143
1143
  * Everything else below is byte-identical to the original.
@@ -1148,7 +1148,7 @@ declare const AGENT_CARDS_LIMIT_MOBILE = 4;
1148
1148
  declare const AGENT_LIST_ITEMS_PER_PAGE = 20;
1149
1149
  /**
1150
1150
  * Last-arguments memoization on reference equality — reselect's default
1151
- * `defaultMemoize` behaviour, in eleven lines and with no dependency. A
1151
+ * `defaultMemoize` behavior, in eleven lines and with no dependency. A
1152
1152
  * selector built here is memoized PER INSTANCE, exactly like a
1153
1153
  * `createSelector` result, so the factories below keep their contract:
1154
1154
  * build the selector once per (consumerId, …) and reuse it.
@@ -1196,13 +1196,13 @@ declare const selectAllAgentTags: (a: readonly AgentSummary[]) => string[];
1196
1196
  declare const selectAllSystemAgentTags: (a: readonly AgentSummary[]) => string[];
1197
1197
  /** Live user-type agents (excludes builtins). */
1198
1198
  declare const selectUserTypeAgents: (a: readonly AgentSummary[]) => AgentSummary[];
1199
- /** Builtin/system agents only. For chat pickers and full catalogues. */
1199
+ /** Builtin/system agents only. For chat pickers and full catalogs. */
1200
1200
  declare const selectBuiltinTypeAgents: (a: readonly AgentSummary[]) => AgentSummary[];
1201
1201
  /**
1202
1202
  * The ONE ordering rule, and it is TOTAL on every path.
1203
1203
  *
1204
1204
  * searching: score DESC → server rank ASC → sort key → id ASC
1205
- * not searching: favourites first (when asked) → sort key → id ASC
1205
+ * not searching: favorites first (when asked) → sort key → id ASC
1206
1206
  *
1207
1207
  * `id` ASC is the final key `agx_get_list` itself ends on, so two hosts that
1208
1208
  * fetched the same rows through different transports render the same screen.
@@ -1246,9 +1246,9 @@ declare const makeSelectFilteredSharedAgents: () => (a: readonly AgentSummary[],
1246
1246
  * all) draw from user-type agents; the system tab draws from builtins.
1247
1247
  *
1248
1248
  * `includeSystemInAll` is the ADMIN reading of the "All" tab. For a normal
1249
- * user, system agents are a separate catalogue and "All" means "all of MY
1249
+ * user, system agents are a separate catalog and "All" means "all of MY
1250
1250
  * agents". For an admin surface, system agents ARE their agents — so "All"
1251
- * must be a single blended list, with each row still labelled (the `system`
1251
+ * must be a single blended list, with each row still labeled (the `system`
1252
1252
  * badge on `AgentRow`) so the two are never confused.
1253
1253
  */
1254
1254
  declare const makeSelectFilteredAgents: (includeSystemInAll?: boolean) => (a: readonly AgentSummary[], b: AgentConsumerState) => AgentSummary[];
@@ -1282,7 +1282,7 @@ declare function agentConsumerHasActiveFilters(consumer: AgentConsumerState, def
1282
1282
  * footer said "412 agents" — one screen, three numbers, one of them a lie
1283
1283
  * about agents the user cannot see or reach from there.
1284
1284
  *
1285
- * `is_archived` is now honoured by the same rule the list uses, so the badge,
1285
+ * `is_archived` is now honored by the same rule the list uses, so the badge,
1286
1286
  * the footer and the rows agree on every tab and under every archive filter.
1287
1287
  *
1288
1288
  * 🚨 0.9.2 — AND THERE IS NO LONGER AN EXCEPTION. The system tab used to be
@@ -299,7 +299,7 @@ interface AgentCatalogRpcCall extends PromiseLike<PgResultLike> {
299
299
  * PostgREST's `in` filter on the function's result rows — how the pinned
300
300
  * read asks `agx_get_list_full` for just the starred ids (2026-10-09).
301
301
  * OPTIONAL in the structural type: a host bridge without it gets the whole
302
- * catalogue instead, announced through the errorSink.
302
+ * catalog instead, announced through the errorSink.
303
303
  */
304
304
  in?(column: string, values: readonly string[]): AgentCatalogRpcCall;
305
305
  }
@@ -313,7 +313,7 @@ interface AgentCatalogRpcCall extends PromiseLike<PgResultLike> {
313
313
  * the public schema's functions, so a bridge never crashes the pickers.
314
314
  *
315
315
  * Absent → `createAgentCatalog` throws `AgentCatalogConfigError`. There is no
316
- * degraded mode: the package IS the catalogue read.
316
+ * degraded mode: the package IS the catalog read.
317
317
  */
318
318
  interface AgentCatalogClient {
319
319
  schema?(name: string): {
@@ -367,8 +367,8 @@ interface AgentCatalogFavorites {
367
367
  /**
368
368
  * Every state row the caller owns of one kind (`ues_list`). The pinned read
369
369
  * asks for `"favorite"` to learn WHICH agents to read, so a sidebar never
370
- * pulls the whole catalogue to show a handful of stars. OPTIONAL: a port
371
- * without it makes the pinned read fall back to the whole catalogue, loudly.
370
+ * pulls the whole catalog to show a handful of stars. OPTIONAL: a port
371
+ * without it makes the pinned read fall back to the whole catalog, loudly.
372
372
  */
373
373
  list?(kind?: "favorite" | "pinned" | "hidden"): Promise<{
374
374
  ok: true;
@@ -394,7 +394,7 @@ interface AgentCatalogFavorites {
394
394
  * `requireUserId` THROWS when there is no session — never a silent anonymous
395
395
  * read. The catalog catches that throw in exactly ONE place (the tab-default
396
396
  * heuristic, where a signed-out visitor legitimately lands on the public
397
- * catalogue) and reports it to the `errorSink` the first time; every other
397
+ * catalog) and reports it to the `errorSink` the first time; every other
398
398
  * caller lets it propagate.
399
399
  */
400
400
  interface AgentCatalogIdentity {
@@ -485,7 +485,7 @@ interface AgentCatalogLabels {
485
485
  emptyDefault: string;
486
486
  emptyShared: string;
487
487
  emptySystem: string;
488
- /** Empty state for a signed-out visitor — there is no catalogue to read. */
488
+ /** Empty state for a signed-out visitor — there is no catalog to read. */
489
489
  emptySignedOut: string;
490
490
  loading: string;
491
491
  triggerFallback: string;
@@ -604,7 +604,7 @@ interface ResolvedDefaultRow {
604
604
  mandateKey: string;
605
605
  /** The `agent.definition` id the mandate resolved to. */
606
606
  holderId: string;
607
- /** The holder's REAL name, read from the catalogue — never hardcoded. */
607
+ /** The holder's REAL name, read from the catalog — never hardcoded. */
608
608
  holderName: string;
609
609
  holderDescription: string | null;
610
610
  provenance: string;
@@ -716,7 +716,7 @@ interface AgentCatalogState {
716
716
  /**
717
717
  * The caller's starred rows (`ensureFavoriteRows`): `succeeded` once every
718
718
  * starred agent the caller can see is in `byId` — by the narrow pinned read
719
- * or by a complete catalogue load, whichever came first.
719
+ * or by a complete catalog load, whichever came first.
720
720
  */
721
721
  favoriteRowsStatus: AgentCatalogStatus;
722
722
  }
@@ -741,17 +741,17 @@ interface AgentCatalog {
741
741
  /**
742
742
  * The signed-in user id, or `null` when there is no session. The ONE place
743
743
  * `identity.requireUserId()`'s throw is caught — a signed-out visitor
744
- * legitimately lands on the public catalogue — and it is reported to the
744
+ * legitimately lands on the public catalog — and it is reported to the
745
745
  * errorSink the first time so it is never silent.
746
746
  */
747
747
  getUserIdOrNull(): string | null;
748
- /** Load the catalogue if it is not fresh. Safe to call on every mount. */
748
+ /** Load the catalog if it is not fresh. Safe to call on every mount. */
749
749
  ensureLoaded(options?: {
750
750
  force?: boolean;
751
751
  }): Promise<void>;
752
752
  /**
753
753
  * Load ONLY the caller's starred agents into the registry (the pinned read —
754
- * `ues_list` then `agx_get_list_full?id=in.(…)`), never the whole catalogue.
754
+ * `ues_list` then `agx_get_list_full?id=in.(…)`), never the whole catalog.
755
755
  * Answered at once when a complete load is fresh. Deduped; safe on every
756
756
  * mount. For surfaces that show stars without being a picker (a sidebar's
757
757
  * Pinned section): nothing loads the full list until a picker opens.
@@ -804,11 +804,11 @@ declare function getRegisteredAgentCatalog(catalogId?: string): AgentCatalog | u
804
804
  *
805
805
  * Every database call the catalog makes, and nothing else. Five of them:
806
806
  *
807
- * 1. `agx_get_list_full()` — the complete catalogue (owned + directly-shared
807
+ * 1. `agx_get_list_full()` — the complete catalog (owned + directly-shared
808
808
  * + org-shared user agents, unioned with active builtins).
809
809
  * 2. `agx_search(p_query, p_deep, p_limit, p_offset)` — tier-2 server search.
810
810
  * 3. `agx_resolve_agent_address(p_ids)` — the single-agent name read, used
811
- * when a mandate's Holder is not in the caller's own catalogue.
811
+ * when a mandate's Holder is not in the caller's own catalog.
812
812
  * 4. The caller's stars: `ues_get_bulk('agent', ids)` through the
813
813
  * favorites port (`platform.user_entity_state`), overlaid on every row
814
814
  * set this module returns to the store.
@@ -817,12 +817,12 @@ declare function getRegisteredAgentCatalog(catalogId?: string): AgentCatalog | u
817
817
  * 6. THE PINNED READ (2026-10-09): the caller's starred ids (`ues_list`
818
818
  * through the favorites port), then `agx_get_list_full` filtered to
819
819
  * exactly those ids (`?id=in.(…)`). A sidebar's Pinned section shows a
820
- * handful of rows; it never pays for the whole catalogue to find them.
820
+ * handful of rows; it never pays for the whole catalog to find them.
821
821
  *
822
822
  * 🚨 THE LIST READ IS COMPLETE OR IT THROWS. PostgREST caps every response at
823
823
  * `db-max-rows` (1000 on Matrx Main) and reports success — matrx-frontend's
824
824
  * `fetchAgentsListFull` issued a bare `.rpc()` and would silently have
825
- * returned 1000 rows of a larger catalogue (the ~400-builtin truncation
825
+ * returned 1000 rows of a larger catalog (the ~400-builtin truncation
826
826
  * incident is the near-miss). Here the read goes through `readAllRows` with
827
827
  * `{ count: "exact" }` and a stable `.order("id")`, so a truncation is a
828
828
  * loud `IncompleteReadError` instead of a confidently short picker.
@@ -838,7 +838,7 @@ declare class AgentCatalogReadError extends Error {
838
838
  constructor(source: string, detail: string);
839
839
  }
840
840
  /**
841
- * Read the WHOLE agent catalogue. Throws rather than returning a partial
841
+ * Read the WHOLE agent catalog. Throws rather than returning a partial
842
842
  * list — see the file header.
843
843
  */
844
844
  declare function readAgentCatalogRows(client: AgentCatalogClient): Promise<AgentSummary[]>;
@@ -859,7 +859,7 @@ declare function searchAgentsOnServer(client: AgentCatalogClient, args: {
859
859
  }): Promise<AgentServerSearchResult>;
860
860
  /**
861
861
  * The single-agent read, used when a mandate's resolved Holder is not in the
862
- * caller's own catalogue (a platform agent nobody has shared, most often).
862
+ * caller's own catalog (a platform agent nobody has shared, most often).
863
863
  *
864
864
  * Two existing doors, in order — never a new RPC:
865
865
  * 1. `agx_search` with the id as the query. The scorer awards an exact id
@@ -942,7 +942,7 @@ declare function orchestraDelegatesLine(badge: OrchestraBadge, limit?: number):
942
942
  * What every client used to do: prepend a placeholder row whose id is
943
943
  * `mandate:<key>` and whose name and description are HARDCODED, and let the
944
944
  * server resolve the real Holder at run time. That is how matrx-local's row
945
- * came to be labelled "Matrx Desktop Agent" while `local.cloud_chat` actually
945
+ * came to be labeled "Matrx Desktop Agent" while `local.cloud_chat` actually
946
946
  * resolves to General Chat — a label lying on screen, with nothing anywhere
947
947
  * that could notice.
948
948
  *
@@ -957,8 +957,8 @@ declare function orchestraDelegatesLine(badge: OrchestraBadge, limit?: number):
957
957
  * itself. It asks. That is why a `defaultMandateKey` with no transport is
958
958
  * a loud config error and not a DB read.
959
959
  * - The row renders the Holder's REAL name and description, read from the
960
- * catalogue rows already in hand, or through ONE existing single-agent
961
- * read when the Holder is not in this caller's catalogue.
960
+ * catalog rows already in hand, or through ONE existing single-agent
961
+ * read when the Holder is not in this caller's catalog.
962
962
  * - The last resolution is cached in the `storage` port for first paint.
963
963
  * - Whenever the cached row and the LIVE resolution disagree on holder id
964
964
  * or holder name, the picker shows a PERSISTENT in-picker banner AND the
@@ -1038,7 +1038,7 @@ declare function resolveDefaultRow(args: ResolveDefaultRowArgs): Promise<Resolve
1038
1038
  * VERBATIM port of matrx-frontend `features/agents/constants/agent-list-labels.ts`.
1039
1039
  * The only seam inverted: the two label constants moved into the `labels` port
1040
1040
  * (`DEFAULT_AGENT_CATALOG_LABELS.publicTab` / `.publicBadge`) so a host can
1041
- * override them; the FUNCTIONS below keep their exact behaviour.
1041
+ * override them; the FUNCTIONS below keep their exact behavior.
1042
1042
  */
1043
1043
 
1044
1044
  declare function agentListEmptyLabel(tab: AgentTab, labels: AgentCatalogLabels): string;
@@ -1137,7 +1137,7 @@ declare function agentMatchesSearch(agent: AgentSearchable, query: string): bool
1137
1137
  * F1 — every sort now ends on `id` ASC, the same final key `agx_get_list`
1138
1138
  * ends on, so the order of TIED rows is defined by the rows instead of
1139
1139
  * by whichever transport the host used to fetch them.
1140
- * F5 — the tab-badge counts honour the archive filter, so the badge, the
1140
+ * F5 — the tab-badge counts honor the archive filter, so the badge, the
1141
1141
  * footer and the rendered rows are the same number.
1142
1142
  *
1143
1143
  * Everything else below is byte-identical to the original.
@@ -1148,7 +1148,7 @@ declare const AGENT_CARDS_LIMIT_MOBILE = 4;
1148
1148
  declare const AGENT_LIST_ITEMS_PER_PAGE = 20;
1149
1149
  /**
1150
1150
  * Last-arguments memoization on reference equality — reselect's default
1151
- * `defaultMemoize` behaviour, in eleven lines and with no dependency. A
1151
+ * `defaultMemoize` behavior, in eleven lines and with no dependency. A
1152
1152
  * selector built here is memoized PER INSTANCE, exactly like a
1153
1153
  * `createSelector` result, so the factories below keep their contract:
1154
1154
  * build the selector once per (consumerId, …) and reuse it.
@@ -1196,13 +1196,13 @@ declare const selectAllAgentTags: (a: readonly AgentSummary[]) => string[];
1196
1196
  declare const selectAllSystemAgentTags: (a: readonly AgentSummary[]) => string[];
1197
1197
  /** Live user-type agents (excludes builtins). */
1198
1198
  declare const selectUserTypeAgents: (a: readonly AgentSummary[]) => AgentSummary[];
1199
- /** Builtin/system agents only. For chat pickers and full catalogues. */
1199
+ /** Builtin/system agents only. For chat pickers and full catalogs. */
1200
1200
  declare const selectBuiltinTypeAgents: (a: readonly AgentSummary[]) => AgentSummary[];
1201
1201
  /**
1202
1202
  * The ONE ordering rule, and it is TOTAL on every path.
1203
1203
  *
1204
1204
  * searching: score DESC → server rank ASC → sort key → id ASC
1205
- * not searching: favourites first (when asked) → sort key → id ASC
1205
+ * not searching: favorites first (when asked) → sort key → id ASC
1206
1206
  *
1207
1207
  * `id` ASC is the final key `agx_get_list` itself ends on, so two hosts that
1208
1208
  * fetched the same rows through different transports render the same screen.
@@ -1246,9 +1246,9 @@ declare const makeSelectFilteredSharedAgents: () => (a: readonly AgentSummary[],
1246
1246
  * all) draw from user-type agents; the system tab draws from builtins.
1247
1247
  *
1248
1248
  * `includeSystemInAll` is the ADMIN reading of the "All" tab. For a normal
1249
- * user, system agents are a separate catalogue and "All" means "all of MY
1249
+ * user, system agents are a separate catalog and "All" means "all of MY
1250
1250
  * agents". For an admin surface, system agents ARE their agents — so "All"
1251
- * must be a single blended list, with each row still labelled (the `system`
1251
+ * must be a single blended list, with each row still labeled (the `system`
1252
1252
  * badge on `AgentRow`) so the two are never confused.
1253
1253
  */
1254
1254
  declare const makeSelectFilteredAgents: (includeSystemInAll?: boolean) => (a: readonly AgentSummary[], b: AgentConsumerState) => AgentSummary[];
@@ -1282,7 +1282,7 @@ declare function agentConsumerHasActiveFilters(consumer: AgentConsumerState, def
1282
1282
  * footer said "412 agents" — one screen, three numbers, one of them a lie
1283
1283
  * about agents the user cannot see or reach from there.
1284
1284
  *
1285
- * `is_archived` is now honoured by the same rule the list uses, so the badge,
1285
+ * `is_archived` is now honored by the same rule the list uses, so the badge,
1286
1286
  * the footer and the rows agree on every tab and under every archive filter.
1287
1287
  *
1288
1288
  * 🚨 0.9.2 — AND THERE IS NO LONGER AN EXCEPTION. The system tab used to be
@@ -189,7 +189,7 @@ async function readAgentCatalogRows(client) {
189
189
  if (dropped > 0) {
190
190
  throw new AgentCatalogReadError(
191
191
  "agx_get_list_full",
192
- `${dropped} row(s) came back without an id and were refused. A row that cannot be identified cannot be selected, so the catalogue is not trustworthy \u2014 check the RPC's return shape.`
192
+ `${dropped} row(s) came back without an id and were refused. A row that cannot be identified cannot be selected, so the catalog is not trustworthy \u2014 check the RPC's return shape.`
193
193
  );
194
194
  }
195
195
  return rows;
@@ -690,7 +690,7 @@ function createAgentCatalog(config) {
690
690
  if (!config.client || typeof config.client.rpc !== "function") {
691
691
  throw new AgentCatalogConfigError({
692
692
  code: "missing_client",
693
- message: "createAgentCatalog needs a Supabase client \u2014 it IS the catalogue read",
693
+ message: "createAgentCatalog needs a Supabase client \u2014 it IS the catalog read",
694
694
  remedy: "pass `client` (a supabase-js client, or anything with rpc() and schema().from())"
695
695
  });
696
696
  }
@@ -730,7 +730,7 @@ function createAgentCatalog(config) {
730
730
  function reportFavoriteReadFailure(message) {
731
731
  errorSink({
732
732
  code: "favorite_read_failed",
733
- message: `your starred agents could not be read (${message}); every star is shown unset until the next catalogue load`,
733
+ message: `your starred agents could not be read (${message}); every star is shown unset until the next catalog load`,
734
734
  context: { catalogId }
735
735
  });
736
736
  }
@@ -780,7 +780,7 @@ function createAgentCatalog(config) {
780
780
  anonymousReported = true;
781
781
  errorSink({
782
782
  code: "identity_unavailable",
783
- message: "identity.requireUserId() threw, so the picker is treating this session as signed out and opening on the public catalogue. Favoriting is unavailable until a session exists.",
783
+ message: "identity.requireUserId() threw, so the picker is treating this session as signed out and opening on the public catalog. Favoriting is unavailable until a session exists.",
784
784
  context: { detail: errorMessage(e) }
785
785
  });
786
786
  }
@@ -818,7 +818,7 @@ function createAgentCatalog(config) {
818
818
  publish({ ...state, status: "failed", error: message });
819
819
  errorSink({
820
820
  code: "list_read_failed",
821
- message: `the agent catalogue could not be read: ${message}`,
821
+ message: `the agent catalog could not be read: ${message}`,
822
822
  context: { catalogId }
823
823
  });
824
824
  throw e;
@@ -864,7 +864,7 @@ function createAgentCatalog(config) {
864
864
  pinnedFallbackReported = true;
865
865
  errorSink({
866
866
  code: "pinned_read_unsupported",
867
- message: `the pinned-agents read fell back to the whole catalogue (${e.message}); pass a favorites port with list() and a supabase-js client`,
867
+ message: `the pinned-agents read fell back to the whole catalog (${e.message}); pass a favorites port with list() and a supabase-js client`,
868
868
  context: { catalogId }
869
869
  });
870
870
  }
@@ -973,7 +973,7 @@ function createAgentCatalog(config) {
973
973
  if (!existing) {
974
974
  errorSink({
975
975
  code: "favorite_unknown_agent",
976
- message: `cannot favorite ${agentId}: it is not in this catalogue`
976
+ message: `cannot favorite ${agentId}: it is not in this catalog`
977
977
  });
978
978
  return;
979
979
  }
@@ -1205,7 +1205,7 @@ var SHAPES = {
1205
1205
  /**
1206
1206
  * THE ARCHIVE GLYPH (Lucide `archive`) — the ONE mark of the platform
1207
1207
  * archive filter, drawn identically in every Matrx client so the control a
1208
- * person learns on one surface is recognisable on all of them.
1208
+ * person learns on one surface is recognizable on all of them.
1209
1209
  */
1210
1210
  archive: {
1211
1211
  paths: [