Appearance
Catalog schema
This page is the type reference for what comes out of the registry/catalog actors and what lives in discovery-index.json.
ISystemCatalogEntry
Returned by catalog.list and catalog.resolve.
typescript
// SystemCatalogActor.ts:67-80
interface ISystemCatalogEntry {
mount: string; // canonical logical mount, e.g. "system.devices"
type: string; // class name, package name, or "binding"
purpose?: string; // free-form description
ops?: string[]; // op names accepted at this mount
packageName?: string;
providerCount: number;
providers: ICatalogProviderEntry[];
runtimeRoot?: string; // session/runtime mount of the owning runtime
runtimeId?: string;
runtimeType?: string;
authorityRoot?: string;
localMount?: string; // mount path relative to the owning runtime
}
interface ICatalogProviderEntry {
provider: string;
runtimeId?: string;
packageName?: string;
localMount: string;
runtimeRoot?: string;
runtimeType?: string;
authorityRoot?: string;
}ISystemCatalogSearchResult
Returned by catalog.search.
typescript
// SystemCatalogActor.ts:107-129
interface ISystemCatalogSearchResult {
mount: string;
source: 'actor' | 'webapp';
runtimeId?: string;
packageRef?: string;
displayName?: string;
description?: string;
icon?: string;
routePrefix?: string; // present for webapp results
shells?: readonly string[]; // present for webapp results
type?: string;
kind?: string;
inferredKind?: string;
declaredKind?: string;
accepts?: readonly string[];
emits?: readonly string[];
skills?: readonly string[];
tags?: readonly string[];
capabilities?: readonly string[];
status?: string;
providerCount?: number;
localMount?: string;
}IBindingNamespaceNode
Returned by catalog.roots, catalog.children, catalog.tree.
typescript
interface IBindingNamespaceNode {
mount: string; // full canonical mount, e.g. "system"
segment: string; // last dot-segment, e.g. "system"
isBinding: boolean; // true if this exact mount has a registered claim
providerCount: number; // number of live providers at this mount (0 if not isBinding)
children: IBindingNamespaceNode[];
}IPackageDiscoveryMetadata (discovery-index.json entry)
Each version under discovery-index.json:packages.<pkg>.versions.<ver>.metadata:
typescript
// SystemPackageRegistryActor.ts:21-51
interface IPackageDiscoveryMetadata {
packageName: string;
version: string;
displayName?: string;
description?: string;
inferredKind?: string;
declaredKind?: string;
tags: readonly string[];
capabilities: readonly string[];
webapp?: {
appName?: string;
displayName?: string;
description?: string;
shells: readonly string[];
icon?: string;
routePrefix?: string;
};
components: readonly {
type?: string;
exportName?: string;
mount?: string;
surface?: string;
description?: string;
kind?: string;
accepts: readonly string[];
emits: readonly string[];
skills: readonly string[];
tags: readonly string[];
capabilities: readonly string[];
}[];
}IPackageRegistrySearchResult
Returned by system.packages.registry.search.
typescript
// SystemPackageRegistryActor.ts:53-63
interface IPackageRegistrySearchResult {
packageName: string;
version: string;
displayName?: string;
description?: string;
inferredKind?: string;
declaredKind?: string;
keywords: readonly string[];
matchedFields: readonly string[];
score: number;
}IPackageDiscoveryIndex (file shape)
Top-level shape of discovery-index.json:
typescript
// projects/matrix-3/packages/mx-cli/src/utils/discovery-index.ts
interface IPackageDiscoveryIndex {
packages: Record<string, {
versions: Record<string, {
indexedAt: string; // ISO timestamp
indexedBy: string; // tool identifier
metadata: IPackageDiscoveryMetadata;
}>
}>;
}Example:
json
{
"packages": {
"@open-matrix/chat": {
"versions": {
"0.2.3": {
"indexedAt": "2026-04-30T12:00:00Z",
"indexedBy": "publish-pipeline",
"metadata": {
"packageName": "@open-matrix/chat",
"version": "0.2.3",
"displayName": "Chat",
"inferredKind": "webapp",
"tags": ["chat", "ui"],
"capabilities": ["chat", "ui"],
"webapp": {
"appName": "chat",
"shells": ["platform"]
},
"components": [
{
"type": "ChatActor",
"mount": "chat",
"accepts": ["chat.send"],
"emits": ["chat.message"],
"skills": []
}
]
}
}
}
}
}
}See also
Source: Type declarations in
projects/matrix-3/packages/system-catalog/src/SystemCatalogActor.ts:67-129,projects/matrix-3/packages/system-catalog/src/SystemPackageRegistryActor.ts:21-63,projects/matrix-3/packages/mx-cli/src/utils/discovery-index.ts.