{ "argumentSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "pattern": "system/home.tsx", "resultSchema": { "$defs": { "AboutRecord": { "properties": { "createdAt": { "description": "When the room was created.", "type": "FabricEpochNsec" }, "kind": { "$ref": "#/$defs/ChatRoomKind", "description": "How the room was created." }, "title": { "description": "The title a group room was created with.", "type": "string" } }, "required": [ "kind" ], "type": "object" }, "AddFileEvent": { "properties": { "blob": { "$ref": "#/$defs/BlobRef", "description": "The blob holding the bytes." }, "mediaType": { "description": "The media type the blob was stored with.", "type": "string" }, "name": { "description": "The new entry's name, the name its blob was stored under.", "type": "string" }, "onConflict": { "$ref": "#/$defs/NameConflict", "description": "What to do when `name` is taken; `refuse` when absent." }, "requestId": { "description": "Chosen by the sender; the event's own key when there is none.", "type": "string" }, "size": { "description": "The size of the file, in bytes.", "type": "number" } }, "type": "object" }, "AgentQueueEntry": { "properties": { "address": { "type": "string" }, "host": { "type": "string" }, "run": { "asCell": [ "cell" ], "scope": "user" } }, "required": [ "run", "host" ], "type": "object" }, "AgentQueueOutput": { "properties": { "$NAME": { "type": "string" }, "$UI": { "$ref": "https://commonfabric.org/schemas/vnode.json" }, "agentRunner": { "$ref": "#/$defs/AgentRunnerEntry", "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/agent-queue.tsx", "moduleIdentity": "Bl23wJQYznZDCPIE55hyMfIiYAaR56J8ZOIxavF6uI8", "path": [ "setAgentRunner" ] } } } }, "entries": { "default": [], "items": { "$ref": "#/$defs/AgentQueueEntry" }, "type": "array" }, "setAgentRunner": { "$ref": "#/$defs/SetAgentRunnerEvent", "asCell": [ "stream" ] } }, "required": [ "entries", "setAgentRunner", "$NAME", "$UI" ], "type": "object" }, "AgentRun": { "properties": { "actualModels": { "items": { "type": "string" }, "type": "array" }, "attempts": { "type": "number" }, "cancelRequestedAt": { "type": "string" }, "claim": { "properties": { "leaseUntil": { "type": "string" }, "runner": { "type": "string" } }, "required": [ "runner", "leaseUntil" ], "type": "object" }, "errorCode": { "$ref": "#/$defs/AgentRunErrorCode" }, "finishedAt": { "type": "string" }, "inputs": { "additionalProperties": { "type": "unknown" }, "properties": {}, "type": "object" }, "maxConfidentiality": { "items": { "type": "unknown" }, "type": "array" }, "modelAttributionComplete": { "type": "boolean" }, "modelResponses": { "items": { "properties": { "model": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "modelTurn": { "type": "number" } }, "required": [ "modelTurn", "model" ], "type": "object" }, "type": "array" }, "modelTurns": { "type": "number" }, "outcome": { "$ref": "#/$defs/AgentRunOutcome" }, "piece": { "type": "unknown" }, "request": { "type": "unknown" }, "requestHash": { "type": "string" }, "result": { "type": "unknown" }, "resultSchema": { "type": "unknown" }, "runRef": { "type": "string" }, "space": { "type": "unknown" }, "startedAt": { "type": "string" }, "state": { "$ref": "#/$defs/AgentRunState" }, "stateSince": { "type": "string" }, "submittedAt": { "type": "string" }, "task": { "type": "string" }, "toolCalls": { "type": "number" }, "tools": { "items": { "type": "string" }, "type": "array" }, "usage": { "$ref": "#/$defs/AgentRunUsage" }, "usageCoverage": { "enum": [ "direct", "including-descendants" ] } }, "required": [ "requestHash", "request", "piece", "space", "task", "inputs", "resultSchema", "submittedAt", "state", "stateSince" ], "type": "object" }, "AgentRunErrorCode": { "enum": [ "INVALID_INPUT", "INVALID_RESULT", "LIMIT_REACHED", "PROVIDER_FAILURE", "RUNNER_LOST", "CANCELLED", "REFUSED" ] }, "AgentRunOutcome": { "enum": [ "completed", "failed", "refused", "cancelled" ] }, "AgentRunState": { "enum": [ "queued", "claimed", "running", "completed", "failed", "refused", "cancelled" ] }, "AgentRunUsage": { "properties": { "cacheWriteTokens": { "type": "number" }, "cachedInputTokens": { "type": "number" }, "costUsd": { "type": "number" }, "estimateWithheldReason": { "type": "string" }, "estimatedCostUsd": { "type": "number" }, "inputTokens": { "type": "number" }, "outputTokens": { "type": "number" }, "reasoningTokens": { "type": "number" }, "totalTokens": { "type": "number" } }, "type": "object" }, "AgentRunnerEntry": { "properties": { "host": { "type": "string" }, "lastClaimAt": { "type": "string" }, "registeredAt": { "type": "string" }, "registrationId": { "type": "string" }, "tools": { "items": { "type": "string" }, "type": "array" } }, "required": [ "host", "tools", "registeredAt" ], "type": "object" }, "BackwardsCompatibleProfile": { "properties": { "$NAME": { "type": "string" }, "$UI": { "type": "unknown" }, "addElement": { "$ref": "#/$defs/MutateProfileElementsEvent", "asCell": [ "stream" ] }, "addExternalLink": { "$ref": "#/$defs/MutateExternalProfileLinksEvent", "asCell": [ "stream" ] }, "addPiece": { "$ref": "#/$defs/MutateProfileElementsEvent", "asCell": [ "stream" ] }, "avatar": { "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "setAvatar" ] } } }, "type": "string" }, "bio": { "default": "", "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "setBio" ] } } }, "type": "string" }, "elements": { "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "mutateElements" ] } } }, "items": { "$ref": "#/$defs/ProfileElement" }, "type": "array" }, "externalLinks": { "default": [], "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "mutateExternalProfileLinks" ] } } }, "items": { "$ref": "#/$defs/ExternalProfileLink" }, "type": "array" }, "inbox": { "$ref": "#/$defs/ProfileInbox", "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "setInbox" ] } } } }, "initialNameApplied": { "type": "string" }, "isEditing": { "default": false, "type": "boolean" }, "name": { "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "setName" ] } } }, "type": "string" }, "picture": { "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "setPicture" ] } } }, "type": "FabricBytes" }, "publishVerifiedIdentities": { "$ref": "#/$defs/MutateVerifiedIdentitiesEvent", "asCell": [ "stream" ] }, "removeElement": { "$ref": "#/$defs/MutateProfileElementsEvent", "asCell": [ "stream" ] }, "removeExternalLink": { "$ref": "#/$defs/MutateExternalProfileLinksEvent", "asCell": [ "stream" ] }, "revokeVerifiedIdentities": { "$ref": "#/$defs/MutateVerifiedIdentitiesEvent", "asCell": [ "stream" ] }, "setAvatar": { "$ref": "#/$defs/SetProfileAvatarEvent", "asCell": [ "stream" ] }, "setBio": { "$ref": "#/$defs/SetProfileBioEvent", "asCell": [ "stream" ] }, "setInbox": { "$ref": "#/$defs/SetProfileInboxEvent", "asCell": [ "stream" ] }, "setName": { "$ref": "#/$defs/SetProfileNameEvent", "asCell": [ "stream" ] }, "setPicture": { "$ref": "#/$defs/SetProfilePictureEvent", "asCell": [ "stream" ] }, "toggleEditing": { "asCell": [ "stream", "opaque" ] }, "verifiedIdentities": { "default": [], "ifc": { "addIntegrity": [ { "kind": "represents-principal", "subject": { "__ctCurrentPrincipal": true } } ], "ownerPrincipal": { "__ctCurrentPrincipal": true }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-home.tsx", "moduleIdentity": "hmhOprcuTBeSYU70jYnOGoY3rceUd4_e5CcSnmMH1Y8", "path": [ "publishVerifiedIdentities" ] } } }, "items": { "$ref": "#/$defs/VerifiedExternalIdentity" }, "type": "array" } }, "required": [ "name", "avatar", "bio", "externalLinks", "verifiedIdentities", "elements", "setName", "setAvatar", "addElement", "removeElement", "isEditing", "initialNameApplied", "$NAME", "$UI" ], "type": "object" }, "BlobRef": { "properties": { "id": { "description": "The blob's id: `fid1:` and the hash of its name, media type and bytes.", "type": "string" }, "space": { "description": "The DID of the space whose blob store holds the bytes.", "type": "string" } }, "required": [ "space", "id" ], "type": "object" }, "ChatContainer": { "properties": { "chatRoom": { "$ref": "#/$defs/ChatRoomLink", "description": "The declared conversation, wherever its room lives." }, "fileStoreRecord": { "$ref": "#/$defs/FileStoreRecord", "description": "Where the container keeps its space's file store." } }, "type": "object" }, "ChatIndexEntry": { "properties": { "counterpart": { "description": "A direct room's other member, by principal.", "type": "string" }, "kind": { "$ref": "#/$defs/ChatRoomKind", "description": "The room's kind, as its `about.kind` says." }, "revision": { "description": "The opaque revision supplied by `rooms` for its membership or discovery\nsource. A request to forget uses that view's revision; direct mappings\nand act outcomes may omit it.", "type": "string" }, "room": { "$ref": "#/$defs/ChatRoomLink", "description": "The room." }, "since": { "description": "When first listed for this user, using catalog admission for discovery.", "type": "FabricEpochNsec" } }, "required": [ "room", "kind", "since" ], "type": "object" }, "ChatManagerNotice": { "properties": { "id": { "description": "The notice's id, unique in the manager.", "type": "string" }, "recipient": { "description": "The DID of the person admitted.", "type": "string" }, "room": { "$ref": "#/$defs/ChatRoomLink", "description": "The room the recipient was admitted to." } }, "required": [ "id", "room", "recipient" ], "type": "object" }, "ChatManagerProfile": { "properties": { "avatar": { "description": "The person's avatar: a URL or a glyph, if they have set one.", "type": "string" }, "inbox": { "$ref": "#/$defs/ProfileInbox", "description": "Where the person's offers are delivered, as the profile types its pointer:\na link naming nothing of the inbox but its name. An inbox labels its\noffers confidential to its owner, and a run reading the pointer as a link\nto more of the inbox, or untyped, takes that label on, which then refuses\nits sends." }, "name": { "description": "The person's display name, if they have set one.", "type": "string" } }, "type": "object" }, "ChatOfferDelivery": { "enum": [ "offered", "noticed" ] }, "ChatRefusalCode": { "enum": [ "space-own-chat", "shared-inbox" ] }, "ChatRequestOutcome": { "anyOf": [ { "properties": { "status": { "description": "The request has not finished.", "enum": [ "pending" ], "type": "string" } }, "required": [ "status" ], "type": "object" }, { "properties": { "delivery": { "$ref": "#/$defs/ChatOfferDelivery", "description": "How `offerRoom` told the member of the room; absent for the others." }, "entry": { "$ref": "#/$defs/ChatIndexEntry", "description": "The entry it produced; absent for `forget` and `offerRoom`." }, "status": { "description": "The request finished.", "enum": [ "done" ], "type": "string" } }, "required": [ "status" ], "type": "object" }, { "properties": { "code": { "$ref": "#/$defs/ChatRefusalCode", "description": "Which refusal it is, for a client to act on, where a client has one to\ntake; absent for the others." }, "reason": { "description": "Why, for a person to read.", "type": "string" }, "status": { "description": "The request was refused.", "enum": [ "refused" ], "type": "string" } }, "required": [ "status", "reason" ], "type": "object" } ] }, "ChatRoomAbout": { "properties": { "createdAt": { "description": "When the room was created; absent for a space's own chat.", "type": "FabricEpochNsec" }, "kind": { "$ref": "#/$defs/ChatRoomKind", "description": "`\"direct\"` if created as a direct room; `\"group\"` otherwise." }, "policy": { "$ref": "#/$defs/ChatRoomPolicy", "description": "The room's policy, stated correctly, in a document of its own." }, "record": { "$ref": "#/$defs/AboutRecord", "description": "The record the room's creator wrote, whose label names them; absent for a\nspace's own chat, which no one created as a room." }, "title": { "description": "The room's title, which every member shares: the one a member last set,\nor else the one the room was created with. A direct room has none until a\nmember sets one, and a space's own chat has none.", "type": "string" } }, "required": [ "kind", "policy" ], "type": "object" }, "ChatRoomKind": { "enum": [ "direct", "group" ] }, "ChatRoomLink": { "properties": { "about": { "$ref": "#/$defs/ChatRoomAbout", "description": "What the room says about itself." }, "messages": { "description": "Where the conversation stands: what of `messages` every member shares.", "properties": { "count": { "description": "How many messages the room holds, obliterated tombstones included.", "type": "number" }, "newestAt": { "description": "The newest message's `sentAt`; absent while there are none.", "type": "FabricEpochNsec" } }, "required": [ "count" ], "type": "object" }, "roster": { "description": "The profiles of those who joined the room, in the order they joined, as a\nmanager reads them: each a link, whose profile is read only through it.", "items": { "$ref": "#/$defs/ChatManagerProfile" }, "type": "array" } }, "type": "object" }, "ChatRoomPolicy": { "properties": { "deletionIsObliteration": { "description": "Whether a sender's deletion of their own message obliterates it.", "type": "boolean" }, "keepsHistory": { "description": "Stated for the policy's shape, and read by nothing: a message keeps no history.", "type": "boolean" }, "maxOpenWindows": { "description": "Stated for the policy's shape, and read by nothing: the room offers no windows.", "type": "number" }, "maxWindowCount": { "description": "How many of the newest messages `messages.latest` holds.", "type": "number" }, "ownersMayObliterate": { "description": "Whether an OWNER may obliterate messages.", "type": "boolean" }, "proposedTimeMaxAgeNsec": { "description": "Stated for the policy's shape, and read by nothing: a sender proposes no time.", "type": "FabricDurationNsec" }, "proposedTimeMaxLeadNsec": { "description": "Stated for the policy's shape, and read by nothing: a sender proposes no time.", "type": "FabricDurationNsec" }, "recentActivityWindowNsec": { "description": "Stated for the policy's shape, and read by nothing: the room keeps no activity log.", "type": "FabricDurationNsec" } }, "required": [ "ownersMayObliterate", "keepsHistory", "deletionIsObliteration", "proposedTimeMaxAgeNsec", "proposedTimeMaxLeadNsec", "recentActivityWindowNsec", "maxWindowCount", "maxOpenWindows" ], "type": "object" }, "CollectionChoiceEvent": { "properties": { "target": { "properties": { "dataset": { "properties": { "revision": { "type": "string" }, "space": { "type": "string" }, "state": { "type": "string" } }, "required": [ "space", "revision", "state" ], "type": "object" } }, "required": [ "dataset" ], "type": "object" } }, "required": [ "target" ], "type": "object" }, "CreateProfileEvent": { "properties": { "detail": { "properties": { "message": { "type": "string" } }, "type": "object" }, "key": { "type": "string" }, "name": { "type": "string" }, "target": { "properties": { "value": { "type": "string" } }, "type": "object" } }, "type": "object" }, "EnsurePrivateInboxEvent": { "properties": { "adopt": { "$ref": "#/$defs/ShareInboxPiece", "description": "The inbox the deciding profile advertises, which the host has vetted for\nHome to adopt; absent when the host vetted none." }, "from": { "$ref": "#/$defs/InboxPointable", "description": "The deciding profile: the first, in the order `#profile` answers in, that\npoints at an inbox. Absent from a host that names none, which Home takes\nas the first profile in its list that points at an inbox.", "tags": [ "profile" ] }, "refused": { "description": "The host's refusal of the inbox the deciding profile advertises, for Home\nto record; absent when the host refused none.", "properties": { "inbox": { "$ref": "#/$defs/ShareInboxPiece", "description": "The inbox refused." }, "reason": { "description": "Why the host refused it, by its code.", "type": "string" } }, "required": [ "reason", "inbox" ], "type": "object" } }, "type": "object" }, "ExternalIdentityAssertion": { "properties": { "type": { "type": "string" }, "value": { "type": "string" }, "verifiedAt": { "type": "string" } }, "required": [ "type", "value", "verifiedAt" ], "type": "object" }, "ExternalProfileLink": { "properties": { "label": { "type": "string" }, "url": { "type": "string" } }, "required": [ "label", "url" ], "type": "object" }, "FabriChatManagerOutput": { "properties": { "$NAME": { "description": "The manager's name, for lists of pieces.", "type": "string" }, "$UI": { "$ref": "https://commonfabric.org/schemas/vnode.json", "description": "The manager's rendering." }, "$VIEWS": { "description": "The manager's data face, as one group.", "properties": { "chats": { "$ref": "#/$defs/FabriChatManagerView" } }, "required": [ "chats" ], "type": "object" }, "accept": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Records a room this user has been admitted to." }, "createGroup": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Creates a group room." }, "delivered": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Reports a notice delivered." }, "direct": { "additionalProperties": { "$ref": "#/$defs/ChatIndexEntry" }, "description": "The direct room this user shares with each counterpart, by principal.", "properties": {}, "type": "object" }, "forget": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Removes a room from this user's list." }, "joinRoom": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Makes a room this user has entered one of their chats: lists it, or\nlists it again once forgotten, and adds them to its participants. A room\ntheir chats list already is left as it is." }, "offerRoom": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Offers someone added to a room the room, where this user may add people\nto it, and records how they were told of it." }, "openDirect": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Finds or creates the direct room with a person." }, "outgoingNotices": { "description": "Notices this user's requests have produced that no one has delivered,\nother than those whose room's roster lists a profile attesting their\nrecipient.", "items": { "$ref": "#/$defs/ChatManagerNotice" }, "type": "array" }, "people": { "additionalProperties": { "items": { "$ref": "#/$defs/ChatManagerProfile" }, "type": "array" }, "description": "The people this user's rooms list, other than this user: by the principal\neach one's profile attests, the profiles attesting it, each once, in the\norder the rooms, newest first, list them.", "properties": {}, "scope": "user", "type": "object" }, "requests": { "additionalProperties": { "$ref": "#/$defs/ChatRequestOutcome" }, "description": "The outcome of each request, by the `requestId` its caller chose.", "properties": {}, "type": "object" }, "roomMembership": { "description": "Explicit room membership, including forgotten conversations.", "items": { "$ref": "#/$defs/RoomMembership" }, "type": "array" }, "rooms": { "description": "Every room this user belongs to and hasn't forgotten, newest first.", "items": { "$ref": "#/$defs/ChatIndexEntry" }, "scope": "user", "type": "array" }, "sharedSpaceCatalog": { "$ref": "#/$defs/SharedSpaceCatalogStorage", "description": "The stored catalog used for standalone membership and container discovery.\n`rooms` combines those discoveries with individual `roomMembership` choices;\na reader can inspect catalog membership here without computing the view." } }, "required": [ "rooms", "sharedSpaceCatalog", "roomMembership", "direct", "requests", "outgoingNotices", "people", "openDirect", "createGroup", "offerRoom", "accept", "joinRoom", "forget", "delivered", "$NAME", "$UI", "$VIEWS" ], "type": "object" }, "FabriChatManagerView": { "properties": { "accept": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Records a room this user has been admitted to." }, "createGroup": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Creates a group room." }, "delivered": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Reports a notice delivered." }, "direct": { "additionalProperties": { "$ref": "#/$defs/ChatIndexEntry" }, "description": "The direct room this user shares with each counterpart, by principal.", "properties": {}, "type": "object" }, "forget": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Removes a room from this user's list." }, "joinRoom": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Makes a room this user has entered one of their chats: lists it, or\nlists it again once forgotten, and adds them to its participants. A room\ntheir chats list already is left as it is." }, "offerRoom": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Offers someone added to a room the room, where this user may add people\nto it, and records how they were told of it." }, "openDirect": { "$ref": "#/$defs/ManagerStreamEvent", "asCell": [ "stream" ], "description": "Finds or creates the direct room with a person." }, "outgoingNotices": { "description": "Notices this user's requests have produced that no one has delivered,\nother than those whose room's roster lists a profile attesting their\nrecipient.", "items": { "$ref": "#/$defs/ChatManagerNotice" }, "type": "array" }, "people": { "additionalProperties": { "items": { "$ref": "#/$defs/ChatManagerProfile" }, "type": "array" }, "description": "The people this user's rooms list, other than this user: by the principal\neach one's profile attests, the profiles attesting it, each once, in the\norder the rooms, newest first, list them.", "properties": {}, "scope": "user", "type": "object" }, "requests": { "additionalProperties": { "$ref": "#/$defs/ChatRequestOutcome" }, "description": "The outcome of each request, by the `requestId` its caller chose.", "properties": {}, "type": "object" }, "roomMembership": { "description": "Explicit room membership, including forgotten conversations.", "items": { "$ref": "#/$defs/RoomMembership" }, "type": "array" }, "rooms": { "description": "Every room this user belongs to and hasn't forgotten, newest first.", "items": { "$ref": "#/$defs/ChatIndexEntry" }, "scope": "user", "type": "array" }, "sharedSpaceCatalog": { "$ref": "#/$defs/SharedSpaceCatalogStorage", "description": "The stored catalog used for standalone membership and container discovery.\n`rooms` combines those discoveries with individual `roomMembership` choices;\na reader can inspect catalog membership here without computing the view." } }, "required": [ "rooms", "sharedSpaceCatalog", "roomMembership", "direct", "requests", "outgoingNotices", "people", "openDirect", "createGroup", "offerRoom", "accept", "joinRoom", "forget", "delivered" ], "type": "object" }, "Favorite": { "properties": { "cell": { "properties": { "$NAME": { "type": "string" } }, "type": "object" }, "id": { "type": "string" }, "spaceName": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "userTags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "cell", "tags", "userTags" ], "type": "object" }, "FileEntry": { "properties": { "addedAt": { "description": "When the file was added.", "type": "FabricEpochNsec" }, "addedBy": { "$ref": "#/$defs/FileProfile", "description": "The profile of whoever added it." }, "blob": { "$ref": "#/$defs/BlobRef", "description": "The blob holding the bytes." }, "mediaType": { "description": "The media type of the bytes.", "type": "string" }, "name": { "description": "The name the store finds this file by, and its blob's name.", "type": "string" }, "removedAt": { "description": "When the file was removed from its store, if it has been.", "type": "FabricEpochNsec" }, "size": { "description": "The size of the file, in bytes.", "type": "number" } }, "required": [ "name", "mediaType", "blob", "size", "addedAt", "addedBy" ], "type": "object" }, "FileProfile": { "properties": { "avatar": { "description": "A URL of their picture.", "type": "string" }, "name": { "description": "The name the person goes by.", "type": "string" } }, "type": "object" }, "FileRefusalCode": { "enum": [ "invalid-request", "invalid-name", "name-taken", "other-space", "no-blob", "not-found", "not-permitted" ] }, "FileRequestOutcome": { "anyOf": [ { "properties": { "entry": { "$ref": "#/$defs/FileEntry", "description": "The entry the request added or changed." }, "name": { "description": "The name the request gave the entry.", "type": "string" }, "status": { "enum": [ "done" ], "type": "string" } }, "required": [ "status", "entry", "name" ], "type": "object" }, { "properties": { "code": { "$ref": "#/$defs/FileRefusalCode", "description": "Why, as a code a client can act on." }, "reason": { "description": "Why, as prose for a person.", "type": "string" }, "status": { "enum": [ "refused" ], "type": "string" } }, "required": [ "status", "reason", "code" ], "type": "object" } ] }, "FileStoreFiles": { "properties": { "add": { "$ref": "#/$defs/AddFileEvent", "asCell": [ "stream" ], "description": "Adds a file, for a blob already in the store's space." }, "byName": { "additionalProperties": { "$ref": "#/$defs/FileEntry" }, "description": "The same files, by name.", "properties": {}, "type": "object" }, "entries": { "description": "Every file in the store, in the order they were added.", "items": { "$ref": "#/$defs/FileEntry" }, "type": "array" }, "remove": { "$ref": "#/$defs/RemoveFileEvent", "asCell": [ "stream" ], "description": "Takes a file out of the store, and marks it removed." }, "rename": { "$ref": "#/$defs/RenameFileEvent", "asCell": [ "stream" ], "description": "Changes a file's name, and its blob with it." }, "requests": { "additionalProperties": { "$ref": "#/$defs/FileRequestOutcome" }, "description": "The outcome of each request, by its `requestId`.", "properties": {}, "type": "object" } }, "required": [ "entries", "byName", "requests", "add", "remove", "rename" ], "type": "object" }, "FileStoreOutput": { "properties": { "$VIEWS": { "properties": { "files": { "$ref": "#/$defs/FileStoreFiles" } }, "required": [ "files" ], "type": "object" }, "add": { "$ref": "#/$defs/AddFileEvent", "asCell": [ "stream" ], "description": "Adds a file, for a blob already in the store's space." }, "byName": { "additionalProperties": { "$ref": "#/$defs/FileEntry" }, "description": "The same files, by name.", "properties": {}, "type": "object" }, "entries": { "description": "Every file in the store, in the order they were added.", "items": { "$ref": "#/$defs/FileEntry" }, "type": "array" }, "remove": { "$ref": "#/$defs/RemoveFileEvent", "asCell": [ "stream" ], "description": "Takes a file out of the store, and marks it removed." }, "rename": { "$ref": "#/$defs/RenameFileEvent", "asCell": [ "stream" ], "description": "Changes a file's name, and its blob with it." }, "requests": { "additionalProperties": { "$ref": "#/$defs/FileRequestOutcome" }, "description": "The outcome of each request, by its `requestId`.", "properties": {}, "type": "object" } }, "required": [ "$VIEWS", "entries", "byName", "requests", "add", "remove", "rename" ], "type": "object" }, "FileStoreRecord": { "properties": { "store": { "$ref": "#/$defs/FileStoreOutput", "description": "The store; absent while the root names none." } }, "type": "object" }, "InboxPointable": { "properties": { "inbox": { "$ref": "#/$defs/ProfileInbox" }, "setInbox": { "$ref": "#/$defs/SetProfileInboxEvent", "asCell": [ "stream" ] } }, "type": "object" }, "JournalEntry": { "properties": { "eventType": { "type": "string" }, "narrative": { "type": "string" }, "narrativePending": { "type": "boolean" }, "snapshot": { "properties": { "name": { "type": "string" }, "schemaTag": { "type": "string" }, "valueExcerpt": { "type": "string" } }, "type": "object" }, "space": { "type": "string" }, "subject": { "type": "unknown" }, "tags": { "items": { "type": "string" }, "type": "array" }, "timestamp": { "type": "number" } }, "type": "object" }, "ManagerStreamEvent": { "properties": { "container": { "$ref": "#/$defs/ChatContainer", "description": "The container whose explicit `chatRoom` declaration names the room." }, "counterpart": { "description": "The DID of a direct room's other member.", "type": "string" }, "id": { "description": "The id of a notice delivered.", "type": "string" }, "joinableByLink": { "description": "Whether a new group room admits anyone who has its link; absent for a room\nadmitting its members alone.", "type": "boolean" }, "keepArchived": { "description": "Whether accepting a room leaves its entry archived, when it is; absent,\naccepting the room restores it.", "type": "boolean" }, "member": { "description": "The DID of a member added to a room, whom `offerRoom` offers it to.", "type": "string" }, "members": { "description": "The DIDs of a new group room's other members.", "items": { "type": "string" }, "type": "array" }, "messageAct": { "description": "Whether a `joinRoom` comes from a message or a reaction the user sent in\nthe room, which leaves the title the catalog lists an already listed room\nunder as it is.", "type": "boolean" }, "profile": { "$ref": "#/$defs/ChatManagerProfile", "description": "A direct room's other member's profile, through whose share inbox a new\nroom, or a found one that was offered them nothing, is offered to them, or\nthe profile of a member added to a room, through whose share inbox\n`offerRoom` offers it." }, "profiles": { "description": "The profiles of more of a new group room's other members, each naming its\nmember with its `represents-principal` label, through whose share inbox\nthe room is offered to them.", "items": { "$ref": "#/$defs/ChatManagerProfile" }, "type": "array" }, "requestId": { "description": "Chosen by the sender; the outcome is recorded under it, except for a start\nthat would create a room without its reviewed `ChatStart`, which is\nrefused whole and records none.", "type": "string" }, "revision": { "description": "The revision of a room's entry, as the list the request was made from\nshowed it, for a room to forget.", "type": "string" }, "room": { "$ref": "#/$defs/ChatRoomLink", "description": "A room to offer, accept, join, or forget." }, "target": { "description": "A rendered control's text, or the profile it starts a direct room with.", "properties": { "dataset": { "description": "The principal an older room's chip names the person by.", "properties": { "counterpart": { "type": "string" } }, "type": "object" }, "name": { "$ref": "#/$defs/ChatManagerProfile", "description": "The profile of the person a participant's chip starts a chat with." }, "value": { "type": "string" } }, "type": "object" }, "title": { "description": "A new group room's title.", "type": "string" } }, "type": "object" }, "MutateExternalProfileLinksEvent": { "properties": { "label": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "MutateProfileElementsEvent": { "properties": { "catalogId": { "type": "string" }, "cell": true, "patternUrl": { "type": "string" }, "pieceId": { "type": "string" }, "pieceSpace": { "type": "string" }, "tag": { "type": "string" }, "title": { "type": "string" }, "userTags": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "MutateVerifiedIdentitiesEvent": { "properties": { "identities": { "items": { "$ref": "#/$defs/VerifiedExternalIdentity" }, "type": "array" } }, "type": "object" }, "NameConflict": { "enum": [ "refuse", "rename" ] }, "PrivateInboxHolder": { "properties": { "piece": { "$ref": "#/$defs/ShareInboxPiece", "description": "The inbox piece." } }, "type": "object" }, "PrivateInboxRefusal": { "properties": { "inbox": { "$ref": "#/$defs/ShareInboxPiece", "description": "The inbox refused, which the deciding profile points at." }, "reason": { "description": "The host's code for why it refused the inbox, as the event named it,\ntrimmed and cut to `REFUSAL_REASON_MAX_LENGTH`. Today the host sends one\nof `InboxAdoptionRefusal`'s codes, from\n`packages/piece/src/ops/private-inbox.ts`, such as\n`inbox-adoption-acl-mismatch`.", "type": "string" }, "refusedAt": { "description": "When Home first recorded this refusal, of this inbox for this reason, in\nmilliseconds since the epoch. A handler's clock reads to the second.", "type": "number" } }, "required": [ "reason", "inbox", "refusedAt" ], "type": "object" }, "PrivateInboxRefusalHolder": { "properties": { "refusal": { "$ref": "#/$defs/PrivateInboxRefusal", "description": "The refusal." } }, "type": "object" }, "PrivateInboxReplacement": { "properties": { "inbox": { "$ref": "#/$defs/ShareInboxPiece", "description": "The refused inbox, which the profiles pointing at it no longer advertise." }, "reason": { "description": "The host's code for why it refused that inbox, as the refusal held it.", "type": "string" }, "refusedAt": { "description": "When Home first recorded the refusal, as the refusal held it.", "type": "number" }, "replacedAt": { "description": "When the owner had Home replace the inbox, in milliseconds since the epoch.\nA handler's clock reads to the second.", "type": "number" } }, "required": [ "inbox", "reason", "refusedAt", "replacedAt" ], "type": "object" }, "PrivateInboxReplacementHolder": { "$ref": "#/$defs/PrivateInboxReplacementRecord", "ifc": { "uiContract": { "action": "ReplaceRefusedPrivateInbox", "helper": "UiAction", "requiredEventIntegrity": [ "PrivateInboxRefusalSurface" ], "trustedPattern": "PrivateInboxRefusalSurface" }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/private-inbox.tsx", "moduleIdentity": "SbCbjrI-XpolerD4AqFbkZ6jyegtkSp_iV2ZmB1n3XA", "path": [ "replaceRefusedPrivateInbox" ] } } } }, "PrivateInboxReplacementRecord": { "properties": { "replacement": { "$ref": "#/$defs/PrivateInboxReplacement", "description": "The replacement." } }, "type": "object" }, "PrivateInboxRequest": { "properties": { "from": { "$ref": "#/$defs/InboxPointable", "description": "The profile the client finds the owner by, which is to advertise Home's\ninbox: the one `#profile` answers with.", "tags": [ "profile" ] } }, "type": "object" }, "ProfileElement": { "properties": { "cell": true, "source": { "enum": [ "catalog", "url", "piece" ] }, "tag": { "type": "string" }, "title": { "type": "string" }, "userTags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "cell", "tag", "userTags" ], "type": "object" }, "ProfileInbox": { "properties": { "piece": { "$ref": "#/$defs/ShareInboxPiece", "description": "The owner's share inbox piece." } }, "type": "object" }, "RemoveFileEvent": { "properties": { "entry": { "$ref": "#/$defs/FileEntry", "description": "The entry to remove." }, "requestId": { "description": "Chosen by the sender; the event's own key when there is none.", "type": "string" } }, "type": "object" }, "RenameFileEvent": { "properties": { "entry": { "$ref": "#/$defs/FileEntry", "description": "The entry to rename." }, "name": { "description": "The entry's new name.", "type": "string" }, "onConflict": { "$ref": "#/$defs/NameConflict", "description": "What to do when `name` is taken; `refuse` when absent." }, "requestId": { "description": "Chosen by the sender; the event's own key when there is none.", "type": "string" } }, "type": "object" }, "RoomMembership": { "properties": { "catalogRevision": { "description": "A standalone catalog revision, which keeps the catalog authoritative.", "type": "string" }, "container": { "$ref": "#/$defs/ChatContainer", "description": "The root declaring a conversation joined through a container." }, "counterpart": { "description": "A direct room's other member, by principal.", "type": "string" }, "kind": { "$ref": "#/$defs/ChatRoomKind", "description": "The room's kind, as its `about.kind` says." }, "revision": { "description": "The event that last changed membership.", "type": "string" }, "room": { "$ref": "#/$defs/ChatRoomLink", "description": "The room." }, "since": { "description": "When first listed for this user, using catalog admission for discovery.", "type": "FabricEpochNsec" }, "state": { "description": "Whether the user keeps the conversation in their chats.", "enum": [ "saved", "archived" ] } }, "required": [ "state", "revision", "room", "kind", "since" ], "type": "object" }, "SetAgentRunnerEvent": { "properties": { "expectedRegistrationId": { "type": "string" }, "runner": { "$ref": "#/$defs/AgentRunnerEntry" } }, "type": "object" }, "SetProfileAvatarEvent": { "properties": { "avatar": { "type": "string" }, "detail": { "properties": { "message": { "type": "string" } }, "type": "object" }, "key": { "type": "string" }, "target": { "properties": { "value": { "type": "string" } }, "type": "object" } }, "type": "object" }, "SetProfileBioEvent": { "properties": { "bio": { "type": "string" }, "detail": { "properties": { "message": { "type": "string" } }, "type": "object" }, "key": { "type": "string" }, "target": { "properties": { "value": { "type": "string" } }, "type": "object" } }, "type": "object" }, "SetProfileInboxEvent": { "properties": { "inbox": { "$ref": "#/$defs/ShareInboxPiece", "description": "The inbox piece to point at; absent clears the pointer." }, "replacing": { "anyOf": [ { "type": "undefined" }, { "$ref": "#/$defs/ShareInboxPiece" } ], "description": "What the profile is to point at for the write to happen. Left out, the\npointer is set whatever it holds. Present and `undefined`, it is set only\nwhile the profile points at no inbox. A link, it is set only while the\nprofile points at that inbox, by a comparison of links that reads only\nlink shape: a link to an inbox holding nothing is a link, and names it.\nAn event spelled `{ inbox, replacing: undefined }` is a conditional one." } }, "type": "object" }, "SetProfileNameEvent": { "properties": { "detail": { "properties": { "message": { "type": "string" } }, "type": "object" }, "key": { "type": "string" }, "name": { "type": "string" }, "target": { "properties": { "value": { "type": "string" } }, "type": "object" } }, "type": "object" }, "SetProfilePictureEvent": { "properties": { "detail": { "properties": { "bytes": { "type": "FabricBytes" } }, "type": "object" }, "picture": { "type": "FabricBytes" } }, "type": "object" }, "ShareInboxPiece": { "properties": { "$NAME": { "type": "string" } }, "type": "object" }, "SharedSpaceCatalog": { "properties": { "entries": { "additionalProperties": { "$ref": "#/$defs/SharedSpaceEntry" }, "properties": {}, "type": "object" }, "offers": { "additionalProperties": { "$ref": "#/$defs/SharedSpaceOfferReceipt" }, "properties": {}, "type": "object" } }, "required": [ "entries", "offers" ], "type": "object" }, "SharedSpaceCatalogStorage": { "additionalProperties": true, "properties": {}, "type": "object" }, "SharedSpaceCollectionOutput": { "properties": { "$NAME": { "type": "string" }, "$UI": { "$ref": "https://commonfabric.org/schemas/vnode.json" }, "chooseMembership": { "$ref": "#/$defs/CollectionChoiceEvent", "asCell": [ "stream" ] }, "kind": { "type": "string" }, "membership": { "type": "string" }, "search": { "type": "string" } }, "required": [ "search", "kind", "membership", "chooseMembership", "$NAME", "$UI" ], "type": "object" }, "SharedSpaceCollectionView": { "anyOf": [ { "$ref": "#/$defs/SharedSpaceUnavailable" }, { "properties": { "archived": { "items": { "$ref": "#/$defs/SharedSpaceEntry" }, "type": "array" }, "byKind": { "additionalProperties": { "$ref": "#/$defs/SharedSpaceKindView" }, "properties": {}, "type": "object" }, "entries": { "additionalProperties": { "$ref": "#/$defs/SharedSpaceEntry" }, "properties": {}, "type": "object" }, "other": { "items": { "$ref": "#/$defs/SharedSpaceEntry" }, "type": "array" }, "saved": { "items": { "$ref": "#/$defs/SharedSpaceEntry" }, "type": "array" }, "status": { "enum": [ "ready" ], "type": "string" } }, "required": [ "status", "entries", "saved", "archived", "other", "byKind" ], "type": "object" } ] }, "SharedSpaceCommands": { "properties": { "changeMembership": { "$ref": "#/$defs/SharedSpaceMembershipChange", "asCell": [ "stream" ] }, "register": { "$ref": "#/$defs/SharedSpaceRegistration", "asCell": [ "stream" ] } }, "required": [ "register", "changeMembership" ], "type": "object" }, "SharedSpaceEntry": { "properties": { "from": { "type": "string" }, "host": { "type": "string" }, "kind": { "type": "string" }, "lastAction": { "type": "unknown" }, "revision": { "type": "string" }, "since": { "type": "number" }, "space": { "type": "string" }, "state": { "type": "string" }, "title": { "type": "string" } }, "required": [ "space", "host", "kind", "state", "revision" ], "type": "object" }, "SharedSpaceImportCommands": { "properties": { "remove": { "$ref": "#/$defs/SharedSpaceRemoval", "asCell": [ "stream" ] } }, "required": [ "remove" ], "type": "object" }, "SharedSpaceInterface": { "properties": { "commands": { "$ref": "#/$defs/SharedSpaceCommands" }, "imports": { "$ref": "#/$defs/SharedSpaceImportCommands" }, "receipts": { "$ref": "#/$defs/SharedSpaceReceiptView" }, "view": { "$ref": "#/$defs/SharedSpaceCollectionView" } }, "required": [ "view", "receipts", "commands", "imports" ], "type": "object" }, "SharedSpaceKindView": { "properties": { "archived": { "items": { "$ref": "#/$defs/SharedSpaceEntry" }, "type": "array" }, "other": { "items": { "$ref": "#/$defs/SharedSpaceEntry" }, "type": "array" }, "saved": { "items": { "$ref": "#/$defs/SharedSpaceEntry" }, "type": "array" } }, "required": [ "saved", "archived", "other" ], "type": "object" }, "SharedSpaceMembership": { "enum": [ "saved", "archived" ] }, "SharedSpaceMembershipChange": { "properties": { "expectedRevision": { "type": "string" }, "id": { "type": "string" }, "space": { "type": "string" }, "state": { "$ref": "#/$defs/SharedSpaceMembership" } }, "required": [ "space", "id", "expectedRevision", "state" ], "type": "object" }, "SharedSpaceOfferReceipt": { "properties": { "from": { "type": "string" }, "host": { "type": "string" }, "id": { "type": "string" }, "kind": { "type": "string" }, "space": { "type": "string" } }, "required": [ "from", "id", "space", "host", "kind" ], "type": "object" }, "SharedSpaceReceiptView": { "anyOf": [ { "$ref": "#/$defs/SharedSpaceUnavailable" }, { "properties": { "offers": { "additionalProperties": { "$ref": "#/$defs/SharedSpaceOfferReceipt" }, "properties": {}, "type": "object" }, "status": { "enum": [ "ready" ], "type": "string" } }, "required": [ "status", "offers" ], "type": "object" } ] }, "SharedSpaceRegistration": { "properties": { "host": { "type": "string" }, "initialState": { "$ref": "#/$defs/SharedSpaceMembership" }, "kind": { "type": "string" }, "offer": { "properties": { "from": { "type": "string" }, "id": { "type": "string" } }, "required": [ "from", "id" ], "type": "object" }, "since": { "type": "number" }, "space": { "type": "string" }, "title": { "type": "string" } }, "required": [ "space", "host", "kind" ], "type": "object" }, "SharedSpaceRemoval": { "properties": { "expectedRevision": { "type": "string" }, "space": { "type": "string" } }, "required": [ "space", "expectedRevision" ], "type": "object" }, "SharedSpaceUnavailable": { "properties": { "reason": { "enum": [ "loading", "malformed" ] }, "status": { "enum": [ "unavailable" ], "type": "string" } }, "required": [ "status", "reason" ], "type": "object" }, "SpaceEntry": { "properties": { "did": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "TrustedDefaultProfile": { "properties": { "profile": { "$ref": "#/$defs/BackwardsCompatibleProfile", "ifc": { "addIntegrity": [ "profile-link" ], "uiContract": { "action": "SetDefaultProfile", "helper": "UiAction", "requiredEventIntegrity": [ "ProfilePickerSurface" ], "trustedPattern": "ProfilePickerSurface" }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-create.tsx", "moduleIdentity": "wPZgi1QEH-J_AMpGs7Q9d6RM4Vq2_xfVZRyU20ZrSTk", "path": [ "setDefaultProfile" ] } } } } }, "type": "object" }, "TrustedProfileLink": { "$ref": "#/$defs/BackwardsCompatibleProfile", "ifc": { "addIntegrity": [ "profile-link" ], "uiContract": { "action": "CreateProfile", "helper": "UiAction", "requiredEventIntegrity": [ "ProfileCreateSurface" ], "trustedPattern": "ProfileCreateSurface" }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-create.tsx", "moduleIdentity": "wPZgi1QEH-J_AMpGs7Q9d6RM4Vq2_xfVZRyU20ZrSTk", "path": [ "submitProfileCreation" ] } } } }, "TrustedProfileList": { "ifc": { "addIntegrity": [ "profile-link" ], "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-create.tsx", "moduleIdentity": "wPZgi1QEH-J_AMpGs7Q9d6RM4Vq2_xfVZRyU20ZrSTk", "path": [ "submitProfileCreation" ] } } }, "items": { "$ref": "#/$defs/TrustedProfileLink" }, "type": "array" }, "TrustedProfileMru": { "ifc": { "addIntegrity": [ "profile-link" ], "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-create.tsx", "moduleIdentity": "wPZgi1QEH-J_AMpGs7Q9d6RM4Vq2_xfVZRyU20ZrSTk", "path": [ "setMruProfile" ] } } }, "items": { "$ref": "#/$defs/BackwardsCompatibleProfile", "ifc": { "addIntegrity": [ "profile-link" ], "uiContract": { "action": "SetMruProfile", "helper": "UiAction", "requiredEventIntegrity": [ "ProfilePickerSurface" ], "trustedPattern": "ProfilePickerSurface" }, "writeAuthorizedBy": { "__ctWriterIdentityOf": { "file": "/packages/patterns/system/profile-create.tsx", "moduleIdentity": "wPZgi1QEH-J_AMpGs7Q9d6RM4Vq2_xfVZRyU20ZrSTk", "path": [ "setMruProfile" ] } } } }, "type": "array" }, "VerifiedExternalIdentity": { "$ref": "#/$defs/ExternalIdentityAssertion", "ifc": { "requiredIntegrity": [ "loom-verified-external-identity" ] } } }, "properties": { "$NAME": { "type": "string" }, "$UI": { "$ref": "https://commonfabric.org/schemas/vnode.json" }, "addFavorite": { "asCell": [ "stream" ], "properties": { "id": { "type": "string" }, "piece": { "properties": { "$NAME": { "type": "string" } }, "type": "object" }, "spaceName": { "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "piece" ], "type": "object" }, "addJournalEntry": { "asCell": [ "stream" ], "properties": { "entry": { "$ref": "#/$defs/JournalEntry" } }, "required": [ "entry" ], "type": "object" }, "addSpace": { "asCell": [ "stream" ], "properties": { "detail": { "properties": { "message": { "type": "string" } }, "required": [ "message" ], "type": "object" }, "did": { "type": "string" }, "name": { "type": "string" } }, "type": "object" }, "adoptSpace": { "asCell": [ "stream" ], "properties": { "did": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name", "did" ], "type": "object" }, "agentQueue": { "$ref": "#/$defs/AgentQueueOutput" }, "changeSharedSpaceMembership": { "$ref": "#/$defs/SharedSpaceMembershipChange", "asCell": [ "stream" ] }, "chatManager": { "$ref": "#/$defs/FabriChatManagerOutput" }, "createProfile": { "$ref": "#/$defs/CreateProfileEvent", "asCell": [ "stream" ] }, "defaultAppUrl": { "default": "", "type": "string" }, "defaultProfile": { "$ref": "#/$defs/TrustedDefaultProfile" }, "ensurePrivateInbox": { "$ref": "#/$defs/EnsurePrivateInboxEvent", "asCell": [ "stream" ] }, "favorites": { "default": [], "items": { "$ref": "#/$defs/Favorite" }, "type": "array" }, "journal": { "default": [], "items": { "$ref": "#/$defs/JournalEntry" }, "type": "array" }, "legacyDefaultProfile": { "$ref": "#/$defs/BackwardsCompatibleProfile" }, "mru": { "$ref": "#/$defs/TrustedProfileMru", "default": [] }, "privateInbox": { "$ref": "#/$defs/PrivateInboxHolder" }, "privateInboxRefusal": { "$ref": "#/$defs/PrivateInboxRefusalHolder", "default": {} }, "privateInboxReplacement": { "$ref": "#/$defs/PrivateInboxReplacementHolder" }, "profiles": { "$ref": "#/$defs/TrustedProfileList", "default": [] }, "registerSharedSpace": { "$ref": "#/$defs/SharedSpaceRegistration", "asCell": [ "stream" ] }, "removeFavorite": { "asCell": [ "stream" ], "properties": { "id": { "type": "string" }, "piece": { "type": "unknown" } }, "type": "object" }, "removeSharedSpace": { "$ref": "#/$defs/SharedSpaceRemoval", "asCell": [ "stream" ] }, "removeSpace": { "asCell": [ "stream" ], "properties": { "did": { "type": "string" }, "name": { "type": "string" } }, "type": "object" }, "renameSpace": { "asCell": [ "stream" ], "properties": { "did": { "type": "string" }, "name": { "type": "string" } }, "required": [ "did", "name" ], "type": "object" }, "replaceRefusedPrivateInbox": { "asCell": [ "stream", "opaque" ] }, "requestPrivateInbox": { "$ref": "#/$defs/PrivateInboxRequest", "asCell": [ "stream" ] }, "retainedPrivateInboxes": { "default": [], "items": { "$ref": "#/$defs/ShareInboxPiece" }, "type": "array" }, "sharedSpaceCatalog": { "$ref": "#/$defs/SharedSpaceCatalog" }, "sharedSpaces": { "$ref": "#/$defs/SharedSpaceInterface" }, "socialSpaceCollection": { "$ref": "#/$defs/SharedSpaceCollectionOutput", "description": "The collection browser's named instance and session-local controls." }, "spaces": { "default": [], "items": { "$ref": "#/$defs/SpaceEntry" }, "type": "array" } }, "required": [ "socialSpaceCollection", "favorites", "journal", "spaces", "defaultAppUrl", "profiles", "mru", "agentQueue", "chatManager", "privateInbox", "retainedPrivateInboxes", "privateInboxRefusal", "privateInboxReplacement", "sharedSpaces", "sharedSpaceCatalog", "registerSharedSpace", "changeSharedSpaceMembership", "removeSharedSpace", "createProfile", "ensurePrivateInbox", "requestPrivateInbox", "replaceRefusedPrivateInbox", "addFavorite", "removeFavorite", "addJournalEntry", "addSpace", "removeSpace", "adoptSpace", "renameSpace", "$NAME", "$UI" ], "type": "object" } }