@agentshouse/mdruntime-adapter 0.1.0-cd673d02b6e50 → 0.1.0-cd7e4bb187177

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.
@@ -1,2 +1,2398 @@
1
- export declare const HOUSE_MODEL_TYPES = "$defs:\n room:\n description: A Room, by its Room reference, under the key `room`.\n type: string\n pattern: '^r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$'\n app:\n description: An App, by its App reference, under the key `app`.\n type: string\n pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$'\n document:\n description: A document of a Room, by its file reference, under the key `document`.\n type: string\n pattern: '^af_([123456789abcdefghjkmnpqrstvwxyz][0123456789abcdefghjkmnpqrstvwxyz]*)\\.([0123456789abcdefghjkmnpqrstvwxyz])$'\n id:\n description: Any other entity, by its identifier, under the key of its kind. An entity a type says more about is an object holding it under that key beside its facts.\n type: string\n format: uuid\n namespace:\n description: The Namespace a grant entry covers, an App or a Room by its reference with the area of it.\n type: string\n maxLength: 512\n pattern: '^(?:a_[A-Za-z0-9._-]+(?:\\/source)?|r_[A-Za-z0-9._-]+(?:\\/(?:settings|settings\\/schema|settings\\/model|settings\\/indexing|content))?)$'\n request:\n description: One Routine Request of a Room.\n type: object\n additionalProperties: false\n properties:\n routine_request: { $ref: '#/$defs/id' }\n conversation: { $ref: '#/$defs/id' }\n origin: { enum: [ user, trigger ] }\n state: { enum: [ awaiting_approval, started, finished, not_started, withdrawn_by_author, withdrawn_admission, declined ] }\n target: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] }\n record: { $ref: '#/$defs/id' }\n routine_access: { $ref: '#/$defs/id' }\n agent: { $ref: '#/$defs/id' }\n routine: { type: object, additionalProperties: false, properties: { name: { type: string }, version: { type: integer, exclusiveMinimum: 0 } }, minProperties: 1 }\n approved: { type: string, format: date-time }\n approved_by: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] }\n settled_by: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] }\n failure_category: { enum: [ routine_access_not_found, routine_retired, target_agent_unavailable, agent_unavailable, admission_lapsed ] }\n created: { type: string, format: date-time }\n activated: { type: string, format: date-time }\n settled: { type: string, format: date-time }\n environment_starting: { const: true }\n undelivered: { const: true }\n result: { type: string }\n url: { type: string, format: uri }\n required: [ routine_request, origin, state, target, created ]\n caller:\n description: One caller of a Routine Access, a User under `user` with their account `email` and display `name`, or under `user` alone once they left the Room, or the Access's `room`, whose Triggers then call.\n type: object\n additionalProperties: false\n properties:\n user: { $ref: '#/$defs/id' }\n email: { type: string }\n name: { type: string }\n room: { $ref: '#/$defs/room' }\n minProperties: 1\n trigger_test:\n description: One test of a Trigger condition as the Trigger reference page writes one, a value compared at a `path` or `all`, `any` or `not` of tests.\n type: object\n additionalProperties: true\n trigger_values:\n type: array\n items: { anyOf: [ { type: string }, { type: number }, { type: boolean } ] }\n trigger_scope:\n description: The documents a Trigger condition watches, by `type`, by `folder` or one document at its `path`, which `create_trigger` takes as `document`.\n type: object\n additionalProperties: false\n properties:\n type: { type: string }\n folder: { type: string }\n path: { type: string }\n minProperties: 1\n maxProperties: 1\nhouse-account:\n description: \"The User's own identifier as `user`, their registration as `created`, their email verification and chosen language, every notification group with the channels it now reaches as `notifications`, `telegram: available` while the Building runs its Telegram bots and no Telegram account is linked to it, `linked` while one is, `started` once that account has also pressed Start in the Inbox bot, `meta`, the Building's Meta app as `application` and its signup configuration as `configuration`, with `business_app` where its signup offers to keep the WhatsApp Business app on the number's phone, while it offers Connect Meta, `tiktok: available` while it offers Connect TikTok, `building: administrator` while the User is one of the Building's administrators, and `full_house: true` while the User holds Full House.\"\n properties:\n reflected: { type: string, format: date-time }\n user: { $ref: '#/$defs/id' }\n email_verified: { type: string, format: date-time }\n language: { enum: [ en ] }\n notifications: { type: array, items: { type: object, additionalProperties: false, properties: { group: { type: string }, channels: { type: array, items: { type: string } } }, required: [ group, channels ] } }\n created: { type: string, format: date-time }\n telegram: { enum: [ available, linked, started ] }\n meta: { type: object, additionalProperties: false, properties: { application: { type: string, pattern: '^\\d{1,32}$' }, configuration: { type: string, pattern: '^\\d{1,32}$' }, business_app: { const: true } }, required: [ application, configuration ] }\n tiktok: { enum: [ available ] }\n building: { enum: [ administrator ] }\n full_house: { const: true }\n required: [ reflected, user, email_verified, notifications, created ]\nhouse-agent:\n description: One registered Agent this User owns, with the `profile` and `environment` it binds, when it was `created` and, once it is, `retired`.\n properties:\n reflected: { type: string, format: date-time }\n agent: { $ref: '#/$defs/id' }\n name: { type: string }\n profile: { $ref: '#/$defs/id' }\n environment: { $ref: '#/$defs/id' }\n launch_directory: { type: string }\n created: { type: string, format: date-time }\n retired: { type: string, format: date-time }\n required: [ reflected, agent, name, profile, environment, launch_directory, created ]\nhouse-agent-profile:\n description: One reusable Agent Profile this User owns, with the execution route it binds and the `arguments` that route passes its CLI. Its body is its instructions, whole, in Markdown.\n properties:\n reflected: { type: string, format: date-time }\n profile: { $ref: '#/$defs/id' }\n name: { type: string }\n revision: { type: integer, minimum: 0 }\n adapter_kind: { type: string }\n model: { type: string }\n effort: { type: string }\n mode: { type: string }\n arguments: { type: array, items: { type: string } }\n required: [ reflected, profile, name, revision ]\nhouse-app:\n description: \"One App this User owns, holds or installed, `ownership` naming whether it is its own or one it holds, its `owner` by `name` when another User owns it, and `my_app` `true` on this User's My App alone, with the path of its window on the control origin as `address`, its tab icon for a light and for a dark appearance as image data addresses with, while the icon is generated, its one to four colours, blend and angle, its running release as `latest_release` by `release` and `sequence`, with the external origins it declares as `external_origins`, whether its code reaches this User's conversations as `conversations`, the Room slots it declares in order as `room_slots`, each `slot` with its `access` and `types`, and the names of the App functions it declares in order as `functions`, each installation this User holds, and every User who holds the App as `holders`, this User and its owner included, by `user`, `name` and `email`. Each installation entry names the `installation`, the App's running `release` and when it was installed as `created`. Each features entry names, for an App this User does not own, a `feature`, a browser feature, a House model type or a House act its release declares, and its `consent`, `allowed` or `denied` the first time the App asked; a feature never asked is absent. `features_version` is the version of this User's latest consent change for the App, which apps/features/set answers as `features_version`.\"\n properties:\n reflected: { type: string, format: date-time }\n app: { $ref: '#/$defs/app' }\n address: { type: string, pattern: '^\\/app\\/a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }\n name: { type: string }\n ownership: { enum: [ own, held ] }\n owner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n my_app: { const: true }\n created: { type: string, format: date-time }\n tab_icon_light: { type: string, pattern: ^data:image\\/ }\n tab_icon_dark: { type: string, pattern: ^data:image\\/ }\n tab_icon_colours: { type: array, items: { type: string, pattern: '^#[0-9a-f]{6}$' } }\n tab_icon_blend: { enum: [ linear, radial ] }\n tab_icon_angle: { type: integer, minimum: 0, maximum: 359 }\n latest_release: { type: object, additionalProperties: false, properties: { release: { $ref: '#/$defs/id' }, sequence: { type: integer, exclusiveMinimum: 0 } }, required: [ release, sequence ] }\n external_origins: { type: array, items: { type: string, format: uri } }\n conversations: { enum: [ yes, no ] }\n room_slots: { type: array, items: { type: object, additionalProperties: false, properties: { slot: { type: string }, access: { enum: [ read, write ] }, types: { type: array, items: { type: string } } }, required: [ slot, access, types ] } }\n functions: { type: array, items: { type: string } }\n installations: { type: array, items: { type: object, additionalProperties: false, properties: { installation: { $ref: '#/$defs/id' }, release: { $ref: '#/$defs/id' }, created: { type: string, format: date-time } }, required: [ installation, release, created ] } }\n holders: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string }, email: { type: string } }, required: [ user, name, email ] } }\n features: { type: array, items: { type: object, additionalProperties: false, properties: { feature: { type: string }, consent: { enum: [ allowed, denied ] } }, required: [ feature, consent ] } }\n features_version: { type: integer, exclusiveMinimum: 0 }\n required: [ reflected, app, address, name, ownership, created ]\nhouse-app-preferences:\n description: An App's preferences. Its own vocabulary is in the body.\n properties:\n app: { $ref: '#/$defs/app' }\n required: [ app ]\nhouse-app-room-binding:\n description: \"One durable App-Room binding this User holds: an ordered Room list, one Shared schema, or `rooms`, `all` for every Room this User has or `all_but_private` for every one but their Private Room, for a named Room slot of one `app`, shared by every device and browser installation they sign in from. Only this User's own bindings appear here. A Shared-schema binding names the `shared_schema` with its own structural `compatibility` and `findings`, the Rooms that currently use it and this User reads, and how many Rooms the instance bound leaves out. A `rooms` binding holds this User's Rooms that fit the slot, and `left_out` counts the others and those past the instance bound. Each entry names a `room` and the last structural comparison of the slot with its selected model as `compatibility`, `unchecked`, `compatible` or `incompatible`, and each finding a `room` and one exact structural `finding` of it against the slot. An explicit entry whose Room this User cannot read is absent until access returns; an empty explicit list has no document. An incompatible entry or Shared schema blocks nothing: the App still opens and the model still changes.\"\n properties:\n reflected: { type: string, format: date-time }\n app: { $ref: '#/$defs/app' }\n slot: { type: string, pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }\n types: { type: array, items: { type: string } }\n slot_access: { enum: [ read, write ] }\n shared_schema: { type: object, additionalProperties: false, properties: { shared_schema: { $ref: '#/$defs/id' }, compatibility: { enum: [ unchecked, compatible, incompatible ] }, findings: { type: array, items: { type: string } } }, required: [ shared_schema, compatibility, findings ] }\n rooms: { enum: [ all, all_but_private ] }\n left_out: { type: integer, minimum: 0 }\n entries: { type: array, items: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, compatibility: { enum: [ unchecked, compatible, incompatible ] } }, required: [ room, compatibility ] } }\n findings: { type: array, items: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, finding: { type: string } }, required: [ room, finding ] } }\n required: [ reflected, app, slot ]\nhouse-client:\n description: One MCP client this User authorized, named as it was created. Its last use and whether its credentials expired are read on request.\n properties:\n reflected: { type: string, format: date-time }\n client: { $ref: '#/$defs/id' }\n name: { type: string }\n kind: { enum: [ browser, headless ] }\n created: { type: string, format: date-time }\n ended: { type: string, format: date-time }\n end: { enum: [ revoked ] }\n required: [ reflected, client, name, kind, created ]\nhouse-environment:\n description: \"One Environment this User holds, with its configuration, its `name`, the one its User entered, when it was `created`, the Rooms it reaches, `all`, `all_but_private` or the `selected` ones `rooms` names, each by its `room`, `login_code`, `yes` while it holds a reusable login code, the agent CLI kinds House admits in `offered`, the kinds House last set in `wanted`, and the latest readiness its Kit reported in `agents`. `kind` is the kind of Environment, `sandbox`, a small Environment House runs with limited capacity, especially disk, `vps`, an always-on Environment House runs with better specs, or `own` for its owner's own computer. `lifecycle` is the state of that Sandbox or VPS: `provisioning` while House creates it, `starting` while it starts or House wakes it, `available` once its Kit connected, `stopped` or `failed`. For a Sandbox, `budget` is its runtime budget in hours a month and `budget_spent` is `yes` once its runtime this UTC month reached it. Each offered entry names one adapter kind the owner may select for this Environment. Each wanted entry names one adapter kind the Kit should hold. Each agent entry names the adapter `kind`, its installed `version` or null when the Kit could not install it, for a CLI below its adapter's minimum that `minimum`, `failure`, that install's cause, `installing`, true only while the Kit installs it, whether the CLI is `signed_in`, its `models`, each `model` with its `efforts` as the CLI's session options name them, its `modes`, each `mode` with the `name` the CLI gives it, and `full_access`, the mode that bypasses every permission, or null for a CLI that offers no mode and always runs so. A wanted kind no entry names is not yet reported. `transcribe` is whether the Kit transcribes a message's audio files, as House last set it, and `transcription` names whether the Kit has the engine `installed` and the `failure` of its last download or null, as the Kit last reported it. `os` is the operating system and version of the Environment, `kit_release` the installed Kit release and `form` the computer's form, `laptop`, `desktop` or `server`, as the Kit last reported them. Placement failure is projected on its transitions; `failed` names the failure's category and never its cause. For a VPS, `ssh` is its owner's root login on port 22.\"\n properties:\n reflected: { type: string, format: date-time }\n environment: { $ref: '#/$defs/id' }\n name: { type: string }\n created: { type: string, format: date-time }\n revoked: { type: string, format: date-time }\n reach: { enum: [ all, all_but_private, selected ] }\n rooms: { type: array, items: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' } }, required: [ room ] } }\n login_code: { enum: [ yes, no ] }\n kind: { enum: [ sandbox, vps, own ] }\n lifecycle: { enum: [ provisioning, starting, available, stopped, failed ] }\n offered: { type: array, items: { type: string } }\n wanted: { type: array, items: { type: string } }\n agents: { type: array, items: { type: object, additionalProperties: false, properties: { kind: { type: string, minLength: 1, maxLength: 64 }, version: { anyOf: [ { type: string, minLength: 1, maxLength: 64 }, { type: 'null' } ] }, minimum: { description: \"Present only for a CLI below its adapter's minimum version: that minimum.\", type: string, minLength: 1, maxLength: 64 }, failure: { anyOf: [ { type: string, minLength: 1, maxLength: 4096 }, { type: 'null' } ] }, installing: { description: 'Present only while the Kit installs the CLI, whose version and failure are then null.', type: boolean, const: true }, signed_in: { type: boolean }, models: { maxItems: 256, type: array, items: { type: object, additionalProperties: false, properties: { model: { type: string, minLength: 1 }, efforts: { maxItems: 32, type: array, items: { type: string, minLength: 1 } } }, required: [ model, efforts ] } }, modes: { maxItems: 32, type: array, items: { type: object, additionalProperties: false, properties: { mode: { type: string, minLength: 1 }, name: { type: string, minLength: 1, maxLength: 128 } }, required: [ mode, name ] } }, full_access: { anyOf: [ { type: string, minLength: 1 }, { type: 'null' } ] } }, required: [ kind, version, failure, signed_in, models, modes, full_access ] } }\n transcribe: { enum: [ on, off ] }\n transcription: { type: object, additionalProperties: false, properties: { installed: { type: boolean }, failure: { anyOf: [ { type: string, minLength: 1, maxLength: 4096 }, { type: 'null' } ] } }, required: [ installed, failure ] }\n os: { type: string }\n kit_release: { type: string }\n form: { enum: [ laptop, desktop, server ] }\n failed: { enum: [ provisioning_failed, bootstrap_timeout, provider_capacity, provider_unavailable, provider_removed, placement_conflict, placement_intervention, environment_authority_unavailable ] }\n budget: { type: string, pattern: ^\\d+(?:\\.\\d+)?$ }\n budget_spent: { enum: [ yes, no ] }\n ssh: { type: string, pattern: ^root@\\S+$ }\n required: [ reflected, environment, name, created, reach, kind, offered, transcribe ]\nhouse-exports:\n description: This User's Exports, each with its `status`, when it was `created` and, once it has one, when it `expires`; a ready one names its download page as `page`.\n properties:\n reflected: { type: string, format: date-time }\n exports: { type: array, items: { type: object, additionalProperties: false, properties: { export: { $ref: '#/$defs/id' }, status: { enum: [ queued, running, ready, failed ] }, created: { type: string, format: date-time }, expires: { type: string, format: date-time }, page: { type: string, pattern: '^\\/exports\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' } }, required: [ export, status, created ] } }\n required: [ reflected ]\nhouse-member:\n description: One User who shares a Room with this User, with their current display name and accepted about-me Markdown. Their email, the Rooms they share and each one's access are in the `roster` of each `house-room` document.\n properties:\n reflected: { type: string, format: date-time }\n user: { $ref: '#/$defs/id' }\n name: { type: string }\n about_me: { type: string }\n required: [ reflected, user, name ]\nhouse-notification:\n description: \"One kept Human Notification for this User: its kind, when it was sent as `created`, its way in, its email's subject and each fact of its value that is not sealed, named in snake_case. An entity a fact names is an object holding its identifier under the key of its kind, when the notification carries it, and its `name`, `email` and other facts beside it; a fact holding null is absent. `way_in` is either the House `path` it opens or the entity it is about, by its identifier under the key of its kind, a Trigger with its `room`. Its body is its email's words in Markdown. Both were worded once, in the User's language when it was delivered; an App may show them or word it itself from its kind and value. Read state belongs to each browser.\"\n properties:\n notification: { $ref: '#/$defs/id' }\n kind: { type: string, enum: [ share-offer, join-request, join-request-approved, app-room-binding-incompatible, app-deleted, app-call, room-ownership-offer, managed-environment-retention-opened, managed-environment-placement-intervention, storage-full, sandbox-budget-spent, break-glass-owner-disclosure, routine-start-approval-request, routine-request-declined, routine-request-started, routine-request-finished, routine-request-not-started, export-ready, export-failed, site-disabled, site-binding-incompatible, site-room-left, site-images-full, custom, trigger-did-nothing ] }\n created: { type: string, format: date-time }\n way_in: { type: object, additionalProperties: false, properties: { path: { type: string, pattern: ^\\/ }, room: { $ref: '#/$defs/room' }, app: { $ref: '#/$defs/app' }, agent: { $ref: '#/$defs/id' }, environment: { $ref: '#/$defs/id' }, routine: { $ref: '#/$defs/id' }, routine_request: { $ref: '#/$defs/id' }, trigger: { $ref: '#/$defs/id' }, site: { $ref: '#/$defs/id' } }, minProperties: 1 }\n subject: { type: string }\n share: { $ref: '#/$defs/id' }\n issuer: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }\n rooms: { type: array, items: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] } }\n apps: { maxItems: 20, type: array, items: { type: object, additionalProperties: false, properties: { name: { type: string, minLength: 1, maxLength: 200 }, reaches: { type: array, items: { type: string, minLength: 1, maxLength: 512 } } }, required: [ name, reaches ] } }\n expires_at: { type: string, format: date-time }\n join_request: { $ref: '#/$defs/id' }\n user: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }\n room: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, name: { type: string } }, minProperties: 1 }\n app: { type: object, additionalProperties: false, properties: { app: { $ref: '#/$defs/app' }, name: { type: string } }, minProperties: 1 }\n binding: { $ref: '#/$defs/id' }\n slot: { type: string }\n findings: { type: array, items: { type: string } }\n owner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n caller: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ user, name ] }\n ownership_offer: { $ref: '#/$defs/id' }\n offerer: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }\n environment: { type: object, additionalProperties: false, properties: { environment: { $ref: '#/$defs/id' }, name: { type: string }, kind: { enum: [ vps, sandbox ] } }, required: [ environment, name ] }\n reason: { type: string }\n deadline: { type: string, format: date-time }\n operation_kind: { type: string }\n free: { type: object, additionalProperties: false, properties: { held: { type: string, pattern: ^\\d+$ }, limit: { type: string, pattern: '^[1-9]\\d*$' }, measure: { type: string, enum: [ content, retained ] } }, required: [ held, limit, measure ] }\n budget: { type: string, pattern: ^\\d+(?:\\.\\d+)?$ }\n resets_at: { type: string, format: date-time }\n grant: { $ref: '#/$defs/id' }\n category: { type: string }\n access_started_at: { type: string, format: date-time }\n access_ended_at: { type: string, format: date-time }\n systems: { type: array, items: { type: string } }\n case_reference: { type: string }\n routine_request: { $ref: '#/$defs/id' }\n requester: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n agent: { type: object, additionalProperties: false, properties: { agent: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ name ] }\n conversation: { $ref: '#/$defs/id' }\n routine: { type: object, additionalProperties: false, properties: { routine: { $ref: '#/$defs/id' }, name: { type: string }, version: { type: integer, minimum: 1 } }, required: [ name ] }\n decliner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n input: { type: string }\n export: { $ref: '#/$defs/id' }\n size_bytes: { type: integer, minimum: 0 }\n site: { type: object, additionalProperties: false, properties: { site: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ site, name ] }\n address: { type: string, maxLength: 300, format: uri }\n to: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n copies: { type: integer, minimum: 0 }\n bound: { type: integer, minimum: 0 }\n title: { type: string }\n body: { type: string }\n authorship: { type: object, additionalProperties: false, properties: { kind: { type: string, const: trigger-action }, trigger: { $ref: '#/$defs/id' }, position: { type: integer, minimum: 0 } }, required: [ kind, trigger, position ] }\n path: { type: string, maxLength: 4096, pattern: ^\\/.* }\n trigger: { type: object, additionalProperties: false, properties: { trigger: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ trigger, name ] }\n cause: { type: string }\n required: [ notification, kind, created, way_in, subject ]\nhouse-ownership-offer:\n description: One open Room ownership offer addressed to this User. The Room's name and the name of the owner it is `from` are captured when the offer is made. The page is the House approval path where this User accepts or declines.\n properties:\n reflected: { type: string, format: date-time }\n ownership_offer: { $ref: '#/$defs/id' }\n room: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, name: { type: string } }, required: [ room, name ] }\n from: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n page: { type: string, pattern: '^\\/approve\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' }\n created: { type: string, format: date-time }\n expires: { type: string, format: date-time }\n required: [ reflected, ownership_offer, room, from, page, created, expires ]\nhouse-panel-preferences:\n description: The panel's preferences at /rooms/private/settings/panel.md. Its own vocabulary is in the body.\n properties: {}\nhouse-profile:\n description: The User's display name, the email they sign in with and accepted about-me Markdown.\n properties:\n reflected: { type: string, format: date-time }\n name: { type: string }\n email: { type: string }\n about_me: { type: string }\n required: [ reflected, name, email ]\nhouse-public-room:\n description: One Public Room this User added and reads without being its member. Its members are read with `list_members`, and `leave_room` removes it.\n properties:\n reflected: { type: string, format: date-time }\n room: { $ref: '#/$defs/room' }\n handle: { type: string, minLength: 6, maxLength: 63, pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$' }\n name: { type: string }\n archived: { type: string, format: date-time }\n required: [ reflected, room, handle, name ]\nhouse-push-address:\n description: \"One push address this User minted, never its secret: the Room it captures into, the Source it names, and where an outside service's post carries its event's identifier, the header `event_header` or the JSON pointer `event_json`.\"\n properties:\n reflected: { type: string, format: date-time }\n push_address: { $ref: '#/$defs/id' }\n room: { $ref: '#/$defs/room' }\n source: { type: string }\n event_header: { type: string }\n event_json: { type: string }\n required: [ reflected, push_address, room, source ]\nhouse-requests:\n description: \"The Routine Requests of one Room this User holds at the Keep level: each one waiting or started under `current` and the 50 that changed last under `history`. Each names its `routine` by `name` and `version`, the `target` User whose Agent it asks, the `agent` that took it, the `routine_access` and `record` it went through, the Users it was `approved_by` and `settled_by`, and when it was `created`, `approved`, `activated` and `settled`; a started one is `undelivered` while its Agent's computer has not taken it, which House hands it once that computer connects; a fact it does not hold is absent. Only the Agent\u2019s owner sees a request\u2019s conversation. A Room with no request has no such document.\"\n properties:\n reflected: { type: string, format: date-time }\n room: { $ref: '#/$defs/room' }\n current: { type: array, items: { $ref: '#/$defs/request' } }\n history: { type: array, items: { $ref: '#/$defs/request' } }\n required: [ reflected, room, current, history ]\nhouse-room:\n description: \"One Room this User reads, with the processing configuration that indexes it. `my_room` is `true` on this User's My Room alone, whatever its name and handle become. `admission` is `pending` while House is still settling this User into the Room, which finishes on its own and needs no act. `access` is this User's access word in the Room, `owner`, `manage`, `edit`, `keep`, `open` or `search`, with `only_while_online` on a `manage` or `edit` held at the Open level; `level` is the access level they hold on its content, `search`, `open` or `keep`, and `operations` are their own on its content. `policy` is whether House indexes the Room's documents, `Off` while it withholds indexing. Each indexing entry names a folder `path` and the `policy` set on it. `shared_schema` names the Shared schema whose copy is the Room's schema while the Room uses one, with its `name`. The owner alone sees `ownership_offer`, the `nominee` it is offered to and when it `expires`, while an offer is open, and `public`, the time they made the Room public, while every House User may read it; a member who does not own it sees its `owner` by name. `roster` lists the Room's members, each with when they were `admitted`, their member `document` and the access level and operations a Room Share could offer them without giving them anything new as `held`; it and `rights` carry the access this User may see, every member's to one who manages the Room and their own otherwise; `routines` lists the Routine Accesses this User or the Room's Triggers may call in it, each with its `routine`, by `name`, `description`, `input` and `version`, its `agent` and that Agent's `owner` by name: `starts_without_approval` on one this User may call and `triggers: true` on one the Triggers may call.\"\n properties:\n reflected: { type: string, format: date-time }\n room: { $ref: '#/$defs/room' }\n handle: { type: string, minLength: 6, maxLength: 63, pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$' }\n name: { type: string }\n my_room: { const: true }\n membership: { enum: [ owner, member ] }\n ownership_offer: { type: object, additionalProperties: false, properties: { nominee: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ user, name ] }, expires: { type: string, format: date-time } }, required: [ nominee, expires ] }\n access: { enum: [ owner, manage, edit, keep, open, search ] }\n level: { enum: [ search, open, keep ] }\n only_while_online: { const: true }\n operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } }\n owner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }\n members: { type: integer, minimum: 0 }\n triggers: { type: integer, minimum: 0 }\n published: { enum: [ yes, no ] }\n intake: { enum: [ yes, no ] }\n size: { type: number }\n admission: { enum: [ admitted, pending ] }\n created: { type: string, format: date-time }\n archived: { type: string, format: date-time }\n public: { type: string, format: date-time }\n policy: { enum: [ On, Off ] }\n indexing: { type: array, items: { type: object, additionalProperties: false, properties: { path: { type: string, minLength: 1 }, policy: { enum: [ On, Off ] } }, required: [ path, policy ] } }\n shared_schema: { type: object, additionalProperties: false, properties: { shared_schema: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ shared_schema, name ] }\n roster: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string }, owner: { type: boolean }, email: { type: string }, admitted: { type: string, format: date-time }, access: { type: string, enum: [ owner, manage, edit, keep, open, search ] }, only_while_online: { const: true }, document: { $ref: '#/$defs/document' }, schema_roles: { type: array, items: { type: string } }, held: { type: object, additionalProperties: false, properties: { level: { anyOf: [ { type: string, enum: [ search, open, keep ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } } }, required: [ level, operations ] } }, required: [ user, name, owner, email ] } }\n rights: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string }, entries: { type: array, items: { type: object, additionalProperties: false, properties: { namespace: { $ref: '#/$defs/namespace' }, level: { anyOf: [ { type: string, enum: [ search, open, keep ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } }, sources: { type: array, items: { type: object, additionalProperties: false, properties: { kind: { type: string, enum: [ direct, inherited ] }, namespace: { $ref: '#/$defs/namespace' }, level: { anyOf: [ { type: string, enum: [ search, open, keep ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } } }, required: [ kind, namespace, level, operations ] } } }, required: [ namespace, level, operations, sources ] } }, direct: { type: array, items: { type: object, additionalProperties: false, properties: { namespace: { $ref: '#/$defs/namespace' }, level: { anyOf: [ { type: string, enum: [ search, open, keep ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } } }, required: [ namespace, level, operations ] } }, admitted: { type: string, format: date-time }, schema_roles: { type: array, items: { type: string } } }, required: [ user, name, entries, direct, schema_roles ] } }\n routines: { type: array, items: { type: object, additionalProperties: false, properties: { routine_access: { $ref: '#/$defs/id' }, agent: { $ref: '#/$defs/id' }, owner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }, routine: { type: object, additionalProperties: false, properties: { name: { type: string }, description: { type: string }, input: { type: string }, version: { type: integer, exclusiveMinimum: 0 } }, required: [ name, description, input, version ] }, starts_without_approval: { type: boolean }, triggers: { type: boolean, const: true } }, required: [ routine_access, agent, owner, routine ] } }\n required: [ reflected, room, name, membership, access, admission, created, policy ]\nhouse-routine-access:\n description: \"One Routine Access this User granted, its `routine` by identifier and `name`, the `agent` it calls, its `room` and when it was `created`. While a scope is `selected_users`, each invokers or starters entry names one `user` by identifier with their account `email` and display `name` as of the last write of this document, or by identifier alone once that User has left the Room. An entry naming the Access's `room` admits the Room's Triggers as a caller, or lets them start without approval, whatever the scope. `allowance` is the daily request allowance every caller is under, absent when open, `0` excluding them. Each allowances entry names a caller under a value of their own instead: the `user` or the `room` and their `allowance`, or the caller alone when they have none. While `follow_up_scope` is `selected_users`, each follow_ups entry names one User who may send follow-up mail to the conversations their requests started, as invokers entries name them; `all_admitted` lets every User caller send it, and the Agent's owner always may. `mail_allowance` is the daily follow-up mail allowance every User caller is under, and each mail_allowances entry names a `user` under an `allowance` of their own. `last_failure` is the latest withdrawn request, whatever starts after it: its `origin`, `user` or `trigger`, its time `at` and its `reason`.\"\n properties:\n reflected: { type: string, format: date-time }\n routine_access: { $ref: '#/$defs/id' }\n routine: { type: object, additionalProperties: false, properties: { routine: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ routine, name ] }\n agent: { $ref: '#/$defs/id' }\n room: { $ref: '#/$defs/room' }\n invoker_scope: { type: string, enum: [ all_members, selected_users ] }\n start_scope: { type: string, enum: [ none, all_admitted, selected_users ] }\n follow_up_scope: { type: string, enum: [ none, all_admitted, selected_users ] }\n created: { type: string, format: date-time }\n revoked: { type: string, format: date-time }\n invokers: { type: array, items: { $ref: '#/$defs/caller' } }\n starters: { type: array, items: { $ref: '#/$defs/caller' } }\n follow_ups: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, email: { type: string }, name: { type: string } }, required: [ user ] } }\n allowance: { type: integer, minimum: 0 }\n allowances: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, room: { $ref: '#/$defs/room' }, allowance: { type: integer, minimum: 0 } }, minProperties: 1 } }\n mail_allowance: { type: integer, minimum: 0 }\n mail_allowances: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, allowance: { type: integer, minimum: 0 } }, required: [ user, allowance ] } }\n last_failure: { type: object, additionalProperties: false, properties: { origin: { enum: [ user, trigger ] }, at: { type: string, format: date-time }, reason: { type: string } }, required: [ origin, at, reason ] }\n required: [ reflected, routine_access, routine, agent, room, invoker_scope, start_scope, follow_up_scope, created ]\nhouse-service-key:\n description: \"One Service key a Room this User owns or manages holds, never the key itself: its `room`, its `name`, the one `origin` House sends it to, the `form` it is sent in, its `kind` with the header or query parameter `name` or the path `prefix`, and the address of its origin's icon once House kept one.\"\n properties:\n reflected: { type: string, format: date-time }\n service_key: { $ref: '#/$defs/id' }\n room: { $ref: '#/$defs/room' }\n name: { type: string }\n origin: { type: string, format: uri }\n form: { type: object, additionalProperties: false, properties: { kind: { enum: [ bearer, header, query, basic, path ] }, name: { type: string }, prefix: { type: string } }, required: [ kind ] }\n icon: { type: string, pattern: '^\\/service-keys\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\/icon$' }\n required: [ reflected, service_key, room, name, origin, form ]\nhouse-share:\n description: \"One Share this User issued, kept until it expires or is cancelled. An email delivery carries `share_to`, the address this User entered; a link delivery never carries the link. Each item names its `kind`, `room` or `app`, the Room or App under that key with its `name`, its `state`, `offerable`, `held`, `accepted`, `declined` or `superseded`, for a Room item the `level` it grants, the `operations` it grants as this User chose them and the Schema Roles its member gets as `roles` when it names any, and for an App item the external `origins` its latest release declared when this document was written, when it declared any. An App item is never shown `held`. Each pack entry names an App item's `app`, one of its `slot`s, and the `room` of the Room item that fills it, with that Room's `name`. Each `join_requests` entry of a link delivery names one Join request, its `state`, `waiting`, `approved` or `declined`, and the User it is `from` by account `email` and display `name` as House held them when this document was written, oldest first; the House approval path of a Join request is `/approve/` followed by its identifier.\"\n properties:\n reflected: { type: string, format: date-time }\n share: { $ref: '#/$defs/id' }\n share_link: { enum: [ yes, no ] }\n share_to: { type: string, format: email }\n items: { type: array, items: { type: object, additionalProperties: false, properties: { kind: { enum: [ room, app ] }, name: { type: string }, state: { enum: [ offerable, held, accepted, declined, superseded ] }, level: { enum: [ search, open, keep ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } }, roles: { type: array, items: { type: string } }, origins: { type: array, items: { type: string, format: uri } }, room: { $ref: '#/$defs/room' }, app: { $ref: '#/$defs/app' } }, required: [ kind, name, state, operations ] } }\n pack: { type: array, items: { type: object, additionalProperties: false, properties: { app: { $ref: '#/$defs/app' }, slot: { type: string, pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }, room: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, name: { type: string } }, required: [ room, name ] } }, required: [ app, slot, room ] } }\n join_requests: { type: array, items: { type: object, additionalProperties: false, properties: { join_request: { $ref: '#/$defs/id' }, state: { enum: [ waiting, approved, declined ] }, from: { type: object, additionalProperties: false, properties: { email: { type: string }, name: { type: string } }, required: [ email, name ] } }, required: [ join_request, state, from ] } }\n created: { type: string, format: date-time }\n expires: { type: string, format: date-time }\n required: [ reflected, share, share_link, created, expires ]\nhouse-share-offer:\n description: \"One live Share offered to this User by email while an item of it is still offered, `from` its issuer by display `name` and account `email`. Each item names its `kind`, `room` or `app`, its `name`, its `state` for this User, `offerable`, `held`, `accepted`, `declined` or `superseded`, for a Room item the `level` it grants and the `operations` it grants; it carries no reference. A Room item's access level and operations are the ones its issuer chose for the Room's content; its holder reads the Room's settings at that level, and holds `manageAccess` over its document model when it names `manageAccess`. A Room item naming Schema Roles names them as `roles`, which accepting the Share adds to this User's own in that Room. An App item grants use of the App and never its source, is never shown `held`, and names as `origins` the external origins its latest release declared when this document was written, when it declared any, which accepting the Share lets its code reach. Each pack entry names an offered `app`, one of its `slot`s, and the offered `room` that fills it, each by `name`. Names are as House held them when this document was written. The page is the House approval path where this User accepts or declines the whole Share.\"\n properties:\n reflected: { type: string, format: date-time }\n share: { $ref: '#/$defs/id' }\n from: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }\n page: { type: string, pattern: '^\\/approve\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' }\n items: { type: array, items: { type: object, additionalProperties: false, properties: { kind: { enum: [ room, app ] }, name: { type: string }, state: { enum: [ offerable, held, accepted, declined, superseded ] }, level: { enum: [ search, open, keep ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } }, roles: { type: array, items: { type: string } }, origins: { type: array, items: { type: string, format: uri } } }, required: [ kind, name, state, operations ] } }\n pack: { type: array, items: { type: object, additionalProperties: false, properties: { app: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }, slot: { type: string, pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }, room: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] } }, required: [ app, slot, room ] } }\n created: { type: string, format: date-time }\n expires: { type: string, format: date-time }\n required: [ reflected, share, from, page, created, expires ]\nhouse-site:\n description: \"One Site this User owns: its `name`, its address under this environment's Site suffix, its own `app` with that App's tab icon as a Site shows it, the running `release` of that App, which the Site serves, by `release` and `sequence`, its title and `intake_room`, the Intake Room by its `room`, whether an operator disabled it, its mode, and every Room slot of that release in its order. Each slot names its `slot` and as `entries` each Room its list holds, in list order, by its `room`, with that entry's address `segment` and the last `compatibility` outcome of that entry; a slot that lists no Room has no entry. Each finding names its `slot`, its `room` and one exact structural `finding` of that Room against the slot. An incompatible entry stays listed and blocks nothing. `release` is absent until that App's first release. `disabled` is `yes` while an operator holds the Site disabled, and `disabled_reason` carries the reason the operator stated; visitors then find the Site unavailable, this User may still change or delete it, and only an operator enables it again. `mode` is `snapshot` while visitors see the Published Snapshot `publication` names, or `live` while they see what its Rooms hold as it changes, which needs Full House; only this User changes it. `unpublished` is `yes` while this User holds the Site unpublished: visitors then find it unavailable at every address and nothing else changes, and only this User's republication serves it again; an operator's enable never does. `suspended` is `yes` while visitors find the Site unavailable at every address for the reason `suspended_reason` names: `full_house_required` while the Site is `live` and this User lacks Full House, or `public_delivery_limit` while what House's server sent for this User's Sites this UTC month has reached this User's Public delivery limit, unless `public_overage` is `on` while this User holds Full House. A suspension keeps the publication, the addresses, the Custom domains and every act of this User's, and ends by itself at the next UTC month, when this User gains Full House or when `public_overage` turns `on` while this User holds Full House; it lifts no Unpublish and no operator's disable. `public_overage` is `on` while this User keeps the Site serving past the Public delivery limit, which it does only while this User holds Full House; what it sends past the limit is charged as overage. It stays `on` when Full House ends and acts again when Full House returns. `publication` is the Published Snapshot the Site serves, or serves once republished, absent while it holds none. `acts` names the publication acts this User may take now: `unpublish` while the Site is published, `republish` while it is unpublished and holds a publication to serve; Publish data also serves an unpublished Site again, with what its Rooms hold. A cleared title is absent. `description` carries presentation. `screenshot` is the address of the image House captured of the Site at its primary address after a release, which a shared link to the Site shows, absent before the first capture. `analytics` is the owner's measurement ID the Site loads its analytics tag with, absent while unset. `indexing` is the search-engines-and-agents switch: while it is `yes`, the Site serves its documents as Markdown and lists them in its indexes. `entry_fallback` names the last time this release's Entry Data Contract could not serve an Entry Page as HTML: its `cause` (`over_bound`, `query_refused` or `unavailable`), the `route` and when it was `recorded`; that page then started the App as usual. `external_origins` names the declared external origins of that release. `notify_me` is `on` while the Site's notification Trigger is present and enabled in its Intake Room. `addresses` lists every address the Site answers at: its address under the Site suffix and each active Custom domain; every address other than `primary_address` redirects to it. Each `domains` entry names one Custom domain's `host`, its `state`, `pending`, `active` or `failed`, the DNS alias target its hostname must point at as `dns_target`, which is this environment's and the same for every domain, and the edge's `reason` when it gives one.\"\n properties:\n reflected: { type: string, format: date-time }\n site: { $ref: '#/$defs/id' }\n name: { type: string }\n address: { type: string, format: uri }\n addresses: { type: array, items: { type: string, format: uri } }\n primary_address: { type: string, format: uri }\n domains: { type: array, items: { type: object, additionalProperties: false, properties: { host: { type: string }, state: { enum: [ pending, active, failed ] }, dns_target: { type: string }, reason: { type: string } }, required: [ host, state, dns_target ] } }\n app: { $ref: '#/$defs/app' }\n tab_icon_light: { type: string, pattern: ^data:image\\/ }\n tab_icon_dark: { type: string, pattern: ^data:image\\/ }\n tab_icon_colours: { type: array, items: { type: string, pattern: '^#[0-9a-f]{6}$' } }\n tab_icon_blend: { enum: [ linear, radial ] }\n tab_icon_angle: { type: integer, minimum: 0, maximum: 359 }\n release: { type: object, additionalProperties: false, properties: { release: { $ref: '#/$defs/id' }, sequence: { type: integer, exclusiveMinimum: 0 } }, required: [ release, sequence ] }\n title: { type: string }\n description: { type: string }\n screenshot: { type: string, format: uri }\n analytics: { type: string, pattern: '^G-[A-Z0-9]{1,32}$' }\n intake_room: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' } }, required: [ room ] }\n external_origins: { type: array, items: { type: string, format: uri } }\n disabled: { enum: [ yes, no ] }\n disabled_reason: { type: string }\n mode: { enum: [ snapshot, live ] }\n unpublished: { enum: [ yes, no ] }\n suspended: { enum: [ yes, no ] }\n suspended_reason: { type: string, enum: [ full_house_required, public_delivery_limit ] }\n public_overage: { enum: [ on, off ] }\n publication: { $ref: '#/$defs/id' }\n acts: { type: array, items: { type: string, enum: [ unpublish, republish ] } }\n indexing: { enum: [ yes, no ] }\n entry_fallback: { type: object, additionalProperties: false, properties: { cause: { enum: [ over_bound, query_refused, unavailable ] }, route: { type: string }, recorded: { type: string, format: date-time } }, required: [ cause, route, recorded ] }\n created: { type: string, format: date-time }\n new_browsers: { type: integer, minimum: 0 }\n submissions: { type: integer, minimum: 0 }\n notify_me: { enum: [ on, off ] }\n image_copies: { type: integer, minimum: 0 }\n image_copy_bound: { type: integer, minimum: 0 }\n image_copy_limit_reached: { enum: [ yes, no ] }\n slots: { type: array, items: { type: object, additionalProperties: false, properties: { slot: { type: string, pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }, entries: { type: array, items: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, segment: { type: string }, compatibility: { enum: [ unchecked, compatible, incompatible ] } }, required: [ room, segment, compatibility ] } } }, required: [ slot, entries ] } }\n findings: { type: array, items: { type: object, additionalProperties: false, properties: { slot: { type: string, pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }, room: { $ref: '#/$defs/room' }, finding: { type: string } }, required: [ slot, room, finding ] } }\n required: [ reflected, site, name, address, primary_address, app, disabled, mode, unpublished, suspended, public_overage, indexing, created, new_browsers, submissions, notify_me, image_copies, image_copy_bound, image_copy_limit_reached ]\nhouse-trigger:\n description: \"One Trigger of this Room as its acts wrote it, which House alone writes: its `description`, the `condition` it fires on, its `actions` in order, whether each action and the Trigger are `enabled`, `paused_by` `types` while a change of the Room's types paused it, its `creator` by `user` and the `name` they had then, and when it was `created`. A `notify` action reaches the `users` its `to` names, the members its `fields` name in the matched document and the holders of its `roles`; a `routine` action sends its `payload` through its `routine_access`; a `function` action runs the `function` its `app`'s latest release declares, on House's servers. Whether an action's target holds is not written: it follows from the Room's members, the Routine Access and the App's latest release.\"\n properties:\n reflected: { type: string, format: date-time }\n trigger: { $ref: '#/$defs/id' }\n description: { type: string }\n condition:\n anyOf:\n - { type: object, additionalProperties: false, properties: { on: { const: documents }, scope: { $ref: '#/$defs/trigger_scope' }, mode: { const: starts_matching }, new_documents: { type: boolean }, match: { $ref: '#/$defs/trigger_test' }, by: { $ref: '#/$defs/trigger_test' }, moved_between_rooms: { type: boolean } }, required: [ on, scope, mode, new_documents, match ] }\n - { type: object, additionalProperties: false, properties: { on: { const: documents }, scope: { $ref: '#/$defs/trigger_scope' }, mode: { const: field_changes }, field: { type: string }, from: { anyOf: [ { $ref: '#/$defs/trigger_values' }, { const: new } ] }, to: { anyOf: [ { $ref: '#/$defs/trigger_values' }, { const: deleted } ] }, match: { $ref: '#/$defs/trigger_test' }, by: { $ref: '#/$defs/trigger_test' }, moved_between_rooms: { type: boolean } }, required: [ on, scope, mode, field ] }\n - { type: object, additionalProperties: false, properties: { on: { const: items }, source: { type: string }, address: { type: string }, match: { $ref: '#/$defs/trigger_test' } }, required: [ on ] }\n - { type: object, additionalProperties: false, properties: { on: { const: clock }, cron: { type: string }, time_zone: { type: string } }, required: [ on, cron, time_zone ] }\n - { type: object, additionalProperties: false, properties: { on: { const: clock }, scope: { type: object, additionalProperties: false, properties: { type: { type: string } }, required: [ type ] }, date: { type: string }, days: { type: integer }, at: { type: string }, time_zone: { type: string }, match: { $ref: '#/$defs/trigger_test' } }, required: [ on, scope, date, days, at, time_zone ] }\n actions:\n type: array\n items:\n anyOf:\n - { type: object, additionalProperties: false, properties: { kind: { const: notify }, enabled: { type: boolean }, title: { type: string }, text: { type: string }, to: { type: object, additionalProperties: false, properties: { users: { type: array, items: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] } }, fields: { type: array, items: { type: string } }, roles: { type: array, items: { type: string } } }, required: [ users, fields, roles ] } }, required: [ kind, enabled, title, text, to ] }\n - { type: object, additionalProperties: false, properties: { kind: { const: routine }, enabled: { type: boolean }, routine_access: { $ref: '#/$defs/id' }, payload: { type: string } }, required: [ kind, enabled, payload ] }\n - { type: object, additionalProperties: false, properties: { kind: { const: function }, enabled: { type: boolean }, app: { $ref: '#/$defs/app' }, function: { type: string } }, required: [ kind, enabled, app, function ] }\n enabled: { type: boolean }\n paused_by: { enum: [ types ] }\n creator: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ user, name ] }\n created: { type: string, format: date-time }\n required: [ reflected, trigger, description, condition, actions, enabled, creator, created ]\nhouse-web-wizard:\n description: \"One Web Wizard an agent made for this User: the `environment` it runs on, with that Environment's `name`, and its `state`, `waiting` until its owner presses Run, `running`, `finished` with the script's `exit_code`, `failed`, `cancelled` when its page closed before the script ended, or `lapsed` when nobody ran it in its time. Its body is the script, whole, in one fenced code block. The terminal's output is never kept.\"\n properties:\n reflected: { type: string, format: date-time }\n web_wizard: { $ref: '#/$defs/id' }\n environment: { type: object, additionalProperties: false, properties: { environment: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ environment, name ] }\n state: { enum: [ waiting, running, finished, failed, cancelled, lapsed ] }\n exit_code: { type: integer }\n required: [ reflected, web_wizard, environment, state ]\n";
1
+ export declare const HOUSE_MODEL_DECLARATION: {
2
+ readonly $defs: {
3
+ readonly room: {
4
+ readonly description: 'A Room, by its Room reference, under the key `room`.';
5
+ readonly type: 'string';
6
+ readonly pattern: '^r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$';
7
+ };
8
+ readonly app: {
9
+ readonly description: 'An App, by its App reference, under the key `app`.';
10
+ readonly type: 'string';
11
+ readonly pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$';
12
+ };
13
+ readonly document: {
14
+ readonly description: 'A document of a Room, by its file reference, under the key `document`.';
15
+ readonly type: 'string';
16
+ readonly pattern: '^af_([123456789abcdefghjkmnpqrstvwxyz][0123456789abcdefghjkmnpqrstvwxyz]*)\\.([0123456789abcdefghjkmnpqrstvwxyz])$';
17
+ };
18
+ readonly id: {
19
+ readonly description: 'Any other entity, by its identifier, under the key of its kind. An entity a type says more about is an object holding it under that key beside its facts.';
20
+ readonly type: 'string';
21
+ readonly format: 'uuid';
22
+ };
23
+ readonly namespace: {
24
+ readonly description: 'The Namespace a grant entry covers, an App or a Room by its reference with the area of it.';
25
+ readonly type: 'string';
26
+ readonly maxLength: 512;
27
+ readonly pattern: '^(?:a_[A-Za-z0-9._-]+(?:\\/source)?|r_[A-Za-z0-9._-]+(?:\\/(?:settings|settings\\/schema|settings\\/model|settings\\/indexing|content))?)$';
28
+ };
29
+ readonly caller: {
30
+ readonly description: "One caller of a Routine Access, a User under `user` with their account `email` and display `name`, or under `user` alone once they left the Room, or the Access's `room`, whose Triggers then call.";
31
+ readonly type: 'object';
32
+ readonly additionalProperties: false;
33
+ readonly properties: {
34
+ readonly user: {
35
+ readonly $ref: '#/$defs/id';
36
+ };
37
+ readonly email: {
38
+ readonly type: 'string';
39
+ };
40
+ readonly name: {
41
+ readonly type: 'string';
42
+ };
43
+ readonly room: {
44
+ readonly $ref: '#/$defs/room';
45
+ };
46
+ };
47
+ readonly minProperties: 1;
48
+ };
49
+ readonly trigger_test: {
50
+ readonly description: 'One test of a Trigger condition as the Trigger reference page writes one, a value compared at a `path` or `all`, `any` or `not` of tests.';
51
+ readonly type: 'object';
52
+ readonly additionalProperties: true;
53
+ };
54
+ readonly trigger_values: {
55
+ readonly type: 'array';
56
+ readonly items: {
57
+ readonly anyOf: readonly [{
58
+ readonly type: 'string';
59
+ }, {
60
+ readonly type: 'number';
61
+ }, {
62
+ readonly type: 'boolean';
63
+ }];
64
+ };
65
+ };
66
+ readonly trigger_scope: {
67
+ readonly description: 'The documents a Trigger condition watches, by `type`, by `folder` or one document at its `path`, which `create_trigger` takes as `document`.';
68
+ readonly type: 'object';
69
+ readonly additionalProperties: false;
70
+ readonly properties: {
71
+ readonly type: {
72
+ readonly type: 'string';
73
+ };
74
+ readonly folder: {
75
+ readonly type: 'string';
76
+ };
77
+ readonly path: {
78
+ readonly type: 'string';
79
+ };
80
+ };
81
+ readonly minProperties: 1;
82
+ readonly maxProperties: 1;
83
+ };
84
+ };
85
+ readonly 'house-account': {
86
+ readonly description: "The User's own identifier as `user`, their registration as `created`, their email verification and chosen language, every notification group with the channels it now reaches as `notifications`, `telegram: available` while the Building runs its Telegram bots and no Telegram account is linked to it, `linked` while one is, `started` once that account has also pressed Start in the Inbox bot, `meta`, the Building's Meta app as `application` and its signup configuration as `configuration` while it offers Connect Meta's signup, or `keys` while a business connects its own Meta app by its keys, `tiktok: available` while it offers Connect TikTok, `building: administrator` while the User is one of the Building's administrators, `full_house: true` while the User holds Full House, and the Building's caps of an App function's run as `function_limits`, its time in milliseconds as `time_ms`, its memory in bytes as `memory_bytes` and its external calls as `external_calls`.";
87
+ readonly properties: {
88
+ readonly reflected: {
89
+ readonly type: 'string';
90
+ readonly format: 'date-time';
91
+ };
92
+ readonly user: {
93
+ readonly $ref: '#/$defs/id';
94
+ };
95
+ readonly email_verified: {
96
+ readonly type: 'string';
97
+ readonly format: 'date-time';
98
+ };
99
+ readonly language: {
100
+ readonly enum: readonly ['en'];
101
+ };
102
+ readonly notifications: {
103
+ readonly type: 'array';
104
+ readonly items: {
105
+ readonly type: 'object';
106
+ readonly additionalProperties: false;
107
+ readonly properties: {
108
+ readonly group: {
109
+ readonly type: 'string';
110
+ };
111
+ readonly channels: {
112
+ readonly type: 'array';
113
+ readonly items: {
114
+ readonly type: 'string';
115
+ };
116
+ };
117
+ };
118
+ readonly required: readonly ['group', 'channels'];
119
+ };
120
+ };
121
+ readonly created: {
122
+ readonly type: 'string';
123
+ readonly format: 'date-time';
124
+ };
125
+ readonly telegram: {
126
+ readonly enum: readonly ['available', 'linked', 'started'];
127
+ };
128
+ readonly meta: {
129
+ readonly anyOf: readonly [{
130
+ readonly const: 'keys';
131
+ }, {
132
+ readonly type: 'object';
133
+ readonly additionalProperties: false;
134
+ readonly properties: {
135
+ readonly application: {
136
+ readonly type: 'string';
137
+ readonly pattern: '^\\d{1,32}$';
138
+ };
139
+ readonly configuration: {
140
+ readonly type: 'string';
141
+ readonly pattern: '^\\d{1,32}$';
142
+ };
143
+ };
144
+ readonly required: readonly ['application', 'configuration'];
145
+ }];
146
+ };
147
+ readonly tiktok: {
148
+ readonly enum: readonly ['available'];
149
+ };
150
+ readonly building: {
151
+ readonly enum: readonly ['administrator'];
152
+ };
153
+ readonly full_house: {
154
+ readonly const: true;
155
+ };
156
+ readonly function_limits: {
157
+ readonly type: 'object';
158
+ readonly additionalProperties: false;
159
+ readonly properties: {
160
+ readonly time_ms: {
161
+ readonly type: 'integer';
162
+ readonly exclusiveMinimum: 0;
163
+ };
164
+ readonly memory_bytes: {
165
+ readonly type: 'integer';
166
+ readonly exclusiveMinimum: 0;
167
+ };
168
+ readonly external_calls: {
169
+ readonly type: 'integer';
170
+ readonly exclusiveMinimum: 0;
171
+ };
172
+ };
173
+ readonly required: readonly ['time_ms', 'memory_bytes', 'external_calls'];
174
+ };
175
+ };
176
+ readonly required: readonly ['reflected', 'user', 'email_verified', 'notifications', 'created', 'function_limits'];
177
+ };
178
+ readonly 'house-agent': {
179
+ readonly description: 'One registered Agent this User owns, with the `profile` and `environment` it binds, when it was `created` and, once it is, `retired`.';
180
+ readonly properties: {
181
+ readonly reflected: {
182
+ readonly type: 'string';
183
+ readonly format: 'date-time';
184
+ };
185
+ readonly agent: {
186
+ readonly $ref: '#/$defs/id';
187
+ };
188
+ readonly name: {
189
+ readonly type: 'string';
190
+ };
191
+ readonly profile: {
192
+ readonly $ref: '#/$defs/id';
193
+ };
194
+ readonly environment: {
195
+ readonly $ref: '#/$defs/id';
196
+ };
197
+ readonly launch_directory: {
198
+ readonly type: 'string';
199
+ };
200
+ readonly created: {
201
+ readonly type: 'string';
202
+ readonly format: 'date-time';
203
+ };
204
+ readonly retired: {
205
+ readonly type: 'string';
206
+ readonly format: 'date-time';
207
+ };
208
+ };
209
+ readonly required: readonly ['reflected', 'agent', 'name', 'profile', 'environment', 'launch_directory', 'created'];
210
+ };
211
+ readonly 'house-agent-profile': {
212
+ readonly description: 'One reusable Agent Profile this User owns, with the execution route it binds and the `arguments` that route passes its CLI. Its body is its instructions, whole, in Markdown.';
213
+ readonly properties: {
214
+ readonly reflected: {
215
+ readonly type: 'string';
216
+ readonly format: 'date-time';
217
+ };
218
+ readonly profile: {
219
+ readonly $ref: '#/$defs/id';
220
+ };
221
+ readonly name: {
222
+ readonly type: 'string';
223
+ };
224
+ readonly revision: {
225
+ readonly type: 'integer';
226
+ readonly minimum: 0;
227
+ };
228
+ readonly adapter_kind: {
229
+ readonly type: 'string';
230
+ };
231
+ readonly model: {
232
+ readonly type: 'string';
233
+ };
234
+ readonly effort: {
235
+ readonly type: 'string';
236
+ };
237
+ readonly mode: {
238
+ readonly type: 'string';
239
+ };
240
+ readonly arguments: {
241
+ readonly type: 'array';
242
+ readonly items: {
243
+ readonly type: 'string';
244
+ };
245
+ };
246
+ };
247
+ readonly required: readonly ['reflected', 'profile', 'name', 'revision'];
248
+ };
249
+ readonly 'house-app': {
250
+ readonly description: "One App this User owns, holds or installed, `ownership` naming whether it is its own or one it holds, its `owner` by `name` when another User owns it, and `my_app` `true` on this User's My App alone, with the path of its window on the control origin as `address`, its tab icon for a light and for a dark appearance as image data addresses with, while the icon is generated, its one to four colours, blend and angle, its running release as `latest_release` by `release` and `sequence`, with the external origins it declares as `external_origins`, whether its code reaches this User's conversations as `conversations`, the Room slots it declares in order as `room_slots`, each `slot` with its `access` and `types`, and the names of the App functions it declares in order as `functions`, each installation this User holds, and every User who holds the App as `holders`, this User and its owner included, by `user`, `name` and `email`. Each installation entry names the `installation`, the App's running `release` and when it was installed as `created`. Each features entry names, for an App this User does not own, a `feature`, a browser feature, a House model type or a House act its release declares, and its `consent`, `allowed` or `denied` the first time the App asked; a feature never asked is absent. `features_version` is the version of this User's latest consent change for the App.";
251
+ readonly properties: {
252
+ readonly reflected: {
253
+ readonly type: 'string';
254
+ readonly format: 'date-time';
255
+ };
256
+ readonly app: {
257
+ readonly $ref: '#/$defs/app';
258
+ };
259
+ readonly address: {
260
+ readonly type: 'string';
261
+ readonly pattern: '^\\/app\\/a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$';
262
+ };
263
+ readonly name: {
264
+ readonly type: 'string';
265
+ };
266
+ readonly ownership: {
267
+ readonly enum: readonly ['own', 'held'];
268
+ };
269
+ readonly owner: {
270
+ readonly type: 'object';
271
+ readonly additionalProperties: false;
272
+ readonly properties: {
273
+ readonly name: {
274
+ readonly type: 'string';
275
+ };
276
+ };
277
+ readonly required: readonly ['name'];
278
+ };
279
+ readonly my_app: {
280
+ readonly const: true;
281
+ };
282
+ readonly created: {
283
+ readonly type: 'string';
284
+ readonly format: 'date-time';
285
+ };
286
+ readonly tab_icon_light: {
287
+ readonly type: 'string';
288
+ readonly pattern: '^data:image\\/';
289
+ };
290
+ readonly tab_icon_dark: {
291
+ readonly type: 'string';
292
+ readonly pattern: '^data:image\\/';
293
+ };
294
+ readonly tab_icon_colours: {
295
+ readonly type: 'array';
296
+ readonly items: {
297
+ readonly type: 'string';
298
+ readonly pattern: '^#[0-9a-f]{6}$';
299
+ };
300
+ };
301
+ readonly tab_icon_blend: {
302
+ readonly enum: readonly ['linear', 'radial'];
303
+ };
304
+ readonly tab_icon_angle: {
305
+ readonly type: 'integer';
306
+ readonly minimum: 0;
307
+ readonly maximum: 359;
308
+ };
309
+ readonly latest_release: {
310
+ readonly type: 'object';
311
+ readonly additionalProperties: false;
312
+ readonly properties: {
313
+ readonly release: {
314
+ readonly $ref: '#/$defs/id';
315
+ };
316
+ readonly sequence: {
317
+ readonly type: 'integer';
318
+ readonly exclusiveMinimum: 0;
319
+ };
320
+ };
321
+ readonly required: readonly ['release', 'sequence'];
322
+ };
323
+ readonly external_origins: {
324
+ readonly type: 'array';
325
+ readonly items: {
326
+ readonly type: 'string';
327
+ readonly format: 'uri';
328
+ };
329
+ };
330
+ readonly conversations: {
331
+ readonly enum: readonly ['yes', 'no'];
332
+ };
333
+ readonly room_slots: {
334
+ readonly type: 'array';
335
+ readonly items: {
336
+ readonly type: 'object';
337
+ readonly additionalProperties: false;
338
+ readonly properties: {
339
+ readonly slot: {
340
+ readonly type: 'string';
341
+ };
342
+ readonly access: {
343
+ readonly enum: readonly ['read', 'write'];
344
+ };
345
+ readonly types: {
346
+ readonly type: 'array';
347
+ readonly items: {
348
+ readonly type: 'string';
349
+ };
350
+ };
351
+ };
352
+ readonly required: readonly ['slot', 'access', 'types'];
353
+ };
354
+ };
355
+ readonly functions: {
356
+ readonly type: 'array';
357
+ readonly items: {
358
+ readonly type: 'string';
359
+ };
360
+ };
361
+ readonly installations: {
362
+ readonly type: 'array';
363
+ readonly items: {
364
+ readonly type: 'object';
365
+ readonly additionalProperties: false;
366
+ readonly properties: {
367
+ readonly installation: {
368
+ readonly $ref: '#/$defs/id';
369
+ };
370
+ readonly release: {
371
+ readonly $ref: '#/$defs/id';
372
+ };
373
+ readonly created: {
374
+ readonly type: 'string';
375
+ readonly format: 'date-time';
376
+ };
377
+ };
378
+ readonly required: readonly ['installation', 'release', 'created'];
379
+ };
380
+ };
381
+ readonly holders: {
382
+ readonly type: 'array';
383
+ readonly items: {
384
+ readonly type: 'object';
385
+ readonly additionalProperties: false;
386
+ readonly properties: {
387
+ readonly user: {
388
+ readonly $ref: '#/$defs/id';
389
+ };
390
+ readonly name: {
391
+ readonly type: 'string';
392
+ };
393
+ readonly email: {
394
+ readonly type: 'string';
395
+ };
396
+ };
397
+ readonly required: readonly ['user', 'name', 'email'];
398
+ };
399
+ };
400
+ readonly features: {
401
+ readonly type: 'array';
402
+ readonly items: {
403
+ readonly type: 'object';
404
+ readonly additionalProperties: false;
405
+ readonly properties: {
406
+ readonly feature: {
407
+ readonly type: 'string';
408
+ };
409
+ readonly consent: {
410
+ readonly enum: readonly ['allowed', 'denied'];
411
+ };
412
+ };
413
+ readonly required: readonly ['feature', 'consent'];
414
+ };
415
+ };
416
+ readonly features_version: {
417
+ readonly type: 'integer';
418
+ readonly exclusiveMinimum: 0;
419
+ };
420
+ };
421
+ readonly required: readonly ['reflected', 'app', 'address', 'name', 'ownership', 'created'];
422
+ };
423
+ readonly 'house-app-preferences': {
424
+ readonly description: "An App's preferences. Its own vocabulary is in the body.";
425
+ readonly properties: {
426
+ readonly app: {
427
+ readonly $ref: '#/$defs/app';
428
+ };
429
+ };
430
+ readonly required: readonly ['app'];
431
+ };
432
+ readonly 'house-app-room-binding': {
433
+ readonly description: "One durable App-Room binding this User holds: an ordered Room list, one Shared schema, or `rooms`, `all` for every Room this User has or `all_but_private` for every one but their Private Room, for a named Room slot of one `app`, shared by every device and browser installation they sign in from. Only this User's own bindings appear here. A Shared-schema binding names the `shared_schema` with its own structural `compatibility` and `findings`, the Rooms that currently use it and this User reads, and how many Rooms the instance bound leaves out. A `rooms` binding holds this User's Rooms that fit the slot, and `left_out` counts the others and those past the instance bound. Each entry names a `room` and the last structural comparison of the slot with its selected model as `compatibility`, `unchecked`, `compatible` or `incompatible`, and each finding a `room` and one exact structural `finding` of it against the slot. An explicit entry whose Room this User cannot read is absent until access returns; an empty explicit list has no document. An incompatible entry or Shared schema blocks nothing: the App still opens and the model still changes.";
434
+ readonly properties: {
435
+ readonly reflected: {
436
+ readonly type: 'string';
437
+ readonly format: 'date-time';
438
+ };
439
+ readonly app: {
440
+ readonly $ref: '#/$defs/app';
441
+ };
442
+ readonly slot: {
443
+ readonly type: 'string';
444
+ readonly pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$';
445
+ };
446
+ readonly types: {
447
+ readonly type: 'array';
448
+ readonly items: {
449
+ readonly type: 'string';
450
+ };
451
+ };
452
+ readonly slot_access: {
453
+ readonly enum: readonly ['read', 'write'];
454
+ };
455
+ readonly shared_schema: {
456
+ readonly type: 'object';
457
+ readonly additionalProperties: false;
458
+ readonly properties: {
459
+ readonly shared_schema: {
460
+ readonly $ref: '#/$defs/id';
461
+ };
462
+ readonly compatibility: {
463
+ readonly enum: readonly ['unchecked', 'compatible', 'incompatible'];
464
+ };
465
+ readonly findings: {
466
+ readonly type: 'array';
467
+ readonly items: {
468
+ readonly type: 'string';
469
+ };
470
+ };
471
+ };
472
+ readonly required: readonly ['shared_schema', 'compatibility', 'findings'];
473
+ };
474
+ readonly rooms: {
475
+ readonly enum: readonly ['all', 'all_but_private'];
476
+ };
477
+ readonly left_out: {
478
+ readonly type: 'integer';
479
+ readonly minimum: 0;
480
+ };
481
+ readonly entries: {
482
+ readonly type: 'array';
483
+ readonly items: {
484
+ readonly type: 'object';
485
+ readonly additionalProperties: false;
486
+ readonly properties: {
487
+ readonly room: {
488
+ readonly $ref: '#/$defs/room';
489
+ };
490
+ readonly compatibility: {
491
+ readonly enum: readonly ['unchecked', 'compatible', 'incompatible'];
492
+ };
493
+ };
494
+ readonly required: readonly ['room', 'compatibility'];
495
+ };
496
+ };
497
+ readonly findings: {
498
+ readonly type: 'array';
499
+ readonly items: {
500
+ readonly type: 'object';
501
+ readonly additionalProperties: false;
502
+ readonly properties: {
503
+ readonly room: {
504
+ readonly $ref: '#/$defs/room';
505
+ };
506
+ readonly finding: {
507
+ readonly type: 'string';
508
+ };
509
+ };
510
+ readonly required: readonly ['room', 'finding'];
511
+ };
512
+ };
513
+ };
514
+ readonly required: readonly ['reflected', 'app', 'slot'];
515
+ };
516
+ readonly 'house-client': {
517
+ readonly description: 'One MCP client this User authorized, named as it was created. Its last use and whether its credentials expired are read on request.';
518
+ readonly properties: {
519
+ readonly reflected: {
520
+ readonly type: 'string';
521
+ readonly format: 'date-time';
522
+ };
523
+ readonly client: {
524
+ readonly $ref: '#/$defs/id';
525
+ };
526
+ readonly name: {
527
+ readonly type: 'string';
528
+ };
529
+ readonly kind: {
530
+ readonly enum: readonly ['browser', 'headless'];
531
+ };
532
+ readonly created: {
533
+ readonly type: 'string';
534
+ readonly format: 'date-time';
535
+ };
536
+ readonly ended: {
537
+ readonly type: 'string';
538
+ readonly format: 'date-time';
539
+ };
540
+ readonly end: {
541
+ readonly enum: readonly ['revoked'];
542
+ };
543
+ };
544
+ readonly required: readonly ['reflected', 'client', 'name', 'kind', 'created'];
545
+ };
546
+ readonly 'house-environment': {
547
+ readonly description: "One Environment this User holds, with its configuration, its `name`, the one its User entered, when it was `created`, the Rooms it reaches, `all`, `all_but_private` or the `selected` ones `rooms` names, each by its `room`, `login_code`, `yes` while it holds a reusable login code, the agent CLI kinds House admits in `offered`, the kinds House last set in `wanted`, and the latest readiness its Kit reported in `agents`. `kind` is the kind of Environment, `sandbox`, a small Environment House runs with limited capacity, especially disk, `vps`, an always-on Environment House runs with better specs, or `own` for its owner's own computer. `lifecycle` is the state of that Sandbox or VPS: `provisioning` while House creates it, `starting` while it starts or House wakes it, `available` once its Kit connected, `stopped` or `failed`. For a Sandbox, `budget` is its runtime budget in hours a month and `budget_spent` is `yes` once its runtime this UTC month reached it. Each offered entry names one adapter kind the owner may select for this Environment. Each wanted entry names one adapter kind the Kit should hold. Each agent entry names the adapter `kind`, its installed `version` or null when the Kit could not install it, for a CLI below its adapter's minimum that `minimum`, `failure`, that install's cause, `installing`, true only while the Kit installs it, whether the CLI is `signed_in`, its `models`, each `model` with its `efforts` as the CLI's session options name them, its `modes`, each `mode` with the `name` the CLI gives it, and `full_access`, the mode that bypasses every permission, or null for a CLI that offers no mode and always runs so. A wanted kind no entry names is not yet reported. `transcribe` is whether the Kit transcribes a message's audio files, as House last set it, and `transcription` names whether the Kit has the engine `installed` and the `failure` of its last download or null, as the Kit last reported it. `os` is the operating system and version of the Environment, `kit_release` the installed Kit release and `form` the computer's form, `laptop`, `desktop` or `server`, as the Kit last reported them. Placement failure is projected on its transitions; `failed` names the failure's category and never its cause. For a VPS, `ssh` is its owner's root login on port 22.";
548
+ readonly properties: {
549
+ readonly reflected: {
550
+ readonly type: 'string';
551
+ readonly format: 'date-time';
552
+ };
553
+ readonly environment: {
554
+ readonly $ref: '#/$defs/id';
555
+ };
556
+ readonly name: {
557
+ readonly type: 'string';
558
+ };
559
+ readonly created: {
560
+ readonly type: 'string';
561
+ readonly format: 'date-time';
562
+ };
563
+ readonly revoked: {
564
+ readonly type: 'string';
565
+ readonly format: 'date-time';
566
+ };
567
+ readonly reach: {
568
+ readonly enum: readonly ['all', 'all_but_private', 'selected'];
569
+ };
570
+ readonly rooms: {
571
+ readonly type: 'array';
572
+ readonly items: {
573
+ readonly type: 'object';
574
+ readonly additionalProperties: false;
575
+ readonly properties: {
576
+ readonly room: {
577
+ readonly $ref: '#/$defs/room';
578
+ };
579
+ };
580
+ readonly required: readonly ['room'];
581
+ };
582
+ };
583
+ readonly login_code: {
584
+ readonly enum: readonly ['yes', 'no'];
585
+ };
586
+ readonly kind: {
587
+ readonly enum: readonly ['sandbox', 'vps', 'own'];
588
+ };
589
+ readonly lifecycle: {
590
+ readonly enum: readonly ['provisioning', 'starting', 'available', 'stopped', 'failed'];
591
+ };
592
+ readonly offered: {
593
+ readonly type: 'array';
594
+ readonly items: {
595
+ readonly type: 'string';
596
+ };
597
+ };
598
+ readonly wanted: {
599
+ readonly type: 'array';
600
+ readonly items: {
601
+ readonly type: 'string';
602
+ };
603
+ };
604
+ readonly agents: {
605
+ readonly type: 'array';
606
+ readonly items: {
607
+ readonly type: 'object';
608
+ readonly additionalProperties: false;
609
+ readonly properties: {
610
+ readonly kind: {
611
+ readonly type: 'string';
612
+ readonly minLength: 1;
613
+ readonly maxLength: 64;
614
+ };
615
+ readonly version: {
616
+ readonly anyOf: readonly [{
617
+ readonly type: 'string';
618
+ readonly minLength: 1;
619
+ readonly maxLength: 64;
620
+ }, {
621
+ readonly type: 'null';
622
+ }];
623
+ };
624
+ readonly minimum: {
625
+ readonly description: "Present only for a CLI below its adapter's minimum version: that minimum.";
626
+ readonly type: 'string';
627
+ readonly minLength: 1;
628
+ readonly maxLength: 64;
629
+ };
630
+ readonly failure: {
631
+ readonly anyOf: readonly [{
632
+ readonly type: 'string';
633
+ readonly minLength: 1;
634
+ readonly maxLength: 4096;
635
+ }, {
636
+ readonly type: 'null';
637
+ }];
638
+ };
639
+ readonly installing: {
640
+ readonly description: 'Present only while the Kit installs the CLI, whose version and failure are then null.';
641
+ readonly type: 'boolean';
642
+ readonly const: true;
643
+ };
644
+ readonly signed_in: {
645
+ readonly type: 'boolean';
646
+ };
647
+ readonly models: {
648
+ readonly maxItems: 256;
649
+ readonly type: 'array';
650
+ readonly items: {
651
+ readonly type: 'object';
652
+ readonly additionalProperties: false;
653
+ readonly properties: {
654
+ readonly model: {
655
+ readonly type: 'string';
656
+ readonly minLength: 1;
657
+ };
658
+ readonly efforts: {
659
+ readonly maxItems: 32;
660
+ readonly type: 'array';
661
+ readonly items: {
662
+ readonly type: 'string';
663
+ readonly minLength: 1;
664
+ };
665
+ };
666
+ };
667
+ readonly required: readonly ['model', 'efforts'];
668
+ };
669
+ };
670
+ readonly modes: {
671
+ readonly maxItems: 32;
672
+ readonly type: 'array';
673
+ readonly items: {
674
+ readonly type: 'object';
675
+ readonly additionalProperties: false;
676
+ readonly properties: {
677
+ readonly mode: {
678
+ readonly type: 'string';
679
+ readonly minLength: 1;
680
+ };
681
+ readonly name: {
682
+ readonly type: 'string';
683
+ readonly minLength: 1;
684
+ readonly maxLength: 128;
685
+ };
686
+ };
687
+ readonly required: readonly ['mode', 'name'];
688
+ };
689
+ };
690
+ readonly full_access: {
691
+ readonly anyOf: readonly [{
692
+ readonly type: 'string';
693
+ readonly minLength: 1;
694
+ }, {
695
+ readonly type: 'null';
696
+ }];
697
+ };
698
+ };
699
+ readonly required: readonly ['kind', 'version', 'failure', 'signed_in', 'models', 'modes', 'full_access'];
700
+ };
701
+ };
702
+ readonly transcribe: {
703
+ readonly enum: readonly ['on', 'off'];
704
+ };
705
+ readonly transcription: {
706
+ readonly type: 'object';
707
+ readonly additionalProperties: false;
708
+ readonly properties: {
709
+ readonly installed: {
710
+ readonly type: 'boolean';
711
+ };
712
+ readonly failure: {
713
+ readonly anyOf: readonly [{
714
+ readonly type: 'string';
715
+ readonly minLength: 1;
716
+ readonly maxLength: 4096;
717
+ }, {
718
+ readonly type: 'null';
719
+ }];
720
+ };
721
+ };
722
+ readonly required: readonly ['installed', 'failure'];
723
+ };
724
+ readonly os: {
725
+ readonly type: 'string';
726
+ };
727
+ readonly kit_release: {
728
+ readonly type: 'string';
729
+ };
730
+ readonly form: {
731
+ readonly enum: readonly ['laptop', 'desktop', 'server'];
732
+ };
733
+ readonly failed: {
734
+ readonly enum: readonly ['provisioning_failed', 'bootstrap_timeout', 'provider_capacity', 'provider_unavailable', 'provider_removed', 'placement_conflict', 'placement_intervention', 'environment_authority_unavailable'];
735
+ };
736
+ readonly budget: {
737
+ readonly type: 'string';
738
+ readonly pattern: '^\\d+(?:\\.\\d+)?$';
739
+ };
740
+ readonly budget_spent: {
741
+ readonly enum: readonly ['yes', 'no'];
742
+ };
743
+ readonly ssh: {
744
+ readonly type: 'string';
745
+ readonly pattern: '^root@\\S+$';
746
+ };
747
+ };
748
+ readonly required: readonly ['reflected', 'environment', 'name', 'created', 'reach', 'kind', 'offered', 'transcribe'];
749
+ };
750
+ readonly 'house-exports': {
751
+ readonly description: "This User's Exports, each with its `status`, when it was `created` and, once it has one, when it `expires`; a ready one names its download page as `page`.";
752
+ readonly properties: {
753
+ readonly reflected: {
754
+ readonly type: 'string';
755
+ readonly format: 'date-time';
756
+ };
757
+ readonly exports: {
758
+ readonly type: 'array';
759
+ readonly items: {
760
+ readonly type: 'object';
761
+ readonly additionalProperties: false;
762
+ readonly properties: {
763
+ readonly export: {
764
+ readonly $ref: '#/$defs/id';
765
+ };
766
+ readonly status: {
767
+ readonly enum: readonly ['queued', 'running', 'ready', 'failed'];
768
+ };
769
+ readonly created: {
770
+ readonly type: 'string';
771
+ readonly format: 'date-time';
772
+ };
773
+ readonly expires: {
774
+ readonly type: 'string';
775
+ readonly format: 'date-time';
776
+ };
777
+ readonly page: {
778
+ readonly type: 'string';
779
+ readonly pattern: '^\\/exports\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$';
780
+ };
781
+ };
782
+ readonly required: readonly ['export', 'status', 'created'];
783
+ };
784
+ };
785
+ };
786
+ readonly required: readonly ['reflected'];
787
+ };
788
+ readonly 'house-member': {
789
+ readonly description: "One User who shares a Room with this User, with their current display name and accepted about-me Markdown. Their email, the Rooms they share and each one's access are in the `roster` of each `house-room` document.";
790
+ readonly properties: {
791
+ readonly reflected: {
792
+ readonly type: 'string';
793
+ readonly format: 'date-time';
794
+ };
795
+ readonly user: {
796
+ readonly $ref: '#/$defs/id';
797
+ };
798
+ readonly name: {
799
+ readonly type: 'string';
800
+ };
801
+ readonly about_me: {
802
+ readonly type: 'string';
803
+ };
804
+ };
805
+ readonly required: readonly ['reflected', 'user', 'name'];
806
+ };
807
+ readonly 'house-notification': {
808
+ readonly description: "One kept Human Notification for this User: its kind, when it was sent as `created`, its way in, its email's subject and each fact of its value that is not sealed, named in snake_case. An entity a fact names is an object holding its identifier under the key of its kind, when the notification carries it, and its `name`, `email` and other facts beside it; a fact holding null is absent. `way_in` is either the House `path` it opens or the entity it is about, by its identifier under the key of its kind, a Trigger with its `room`. Its body is its email's words in Markdown. Both were worded once, in the User's language when it was delivered; an App may show them or word it itself from its kind and value. Read state belongs to each browser.";
809
+ readonly properties: {
810
+ readonly notification: {
811
+ readonly $ref: '#/$defs/id';
812
+ };
813
+ readonly kind: {
814
+ readonly type: 'string';
815
+ readonly enum: readonly ['share-offer', 'join-request', 'join-request-approved', 'app-room-binding-incompatible', 'app-deleted', 'app-call', 'room-ownership-offer', 'managed-environment-retention-opened', 'managed-environment-placement-intervention', 'storage-full', 'sandbox-budget-spent', 'break-glass-owner-disclosure', 'routine-start-approval-request', 'routine-request-declined', 'routine-request-started', 'routine-request-finished', 'routine-request-not-started', 'export-ready', 'export-failed', 'site-disabled', 'site-binding-incompatible', 'site-room-left', 'site-images-full', 'custom', 'trigger-did-nothing', 'function-failed'];
816
+ };
817
+ readonly created: {
818
+ readonly type: 'string';
819
+ readonly format: 'date-time';
820
+ };
821
+ readonly way_in: {
822
+ readonly type: 'object';
823
+ readonly additionalProperties: false;
824
+ readonly properties: {
825
+ readonly path: {
826
+ readonly type: 'string';
827
+ readonly pattern: '^\\/';
828
+ };
829
+ readonly room: {
830
+ readonly $ref: '#/$defs/room';
831
+ };
832
+ readonly app: {
833
+ readonly $ref: '#/$defs/app';
834
+ };
835
+ readonly agent: {
836
+ readonly $ref: '#/$defs/id';
837
+ };
838
+ readonly environment: {
839
+ readonly $ref: '#/$defs/id';
840
+ };
841
+ readonly routine: {
842
+ readonly $ref: '#/$defs/id';
843
+ };
844
+ readonly routine_request: {
845
+ readonly $ref: '#/$defs/id';
846
+ };
847
+ readonly trigger: {
848
+ readonly $ref: '#/$defs/id';
849
+ };
850
+ readonly site: {
851
+ readonly $ref: '#/$defs/id';
852
+ };
853
+ };
854
+ readonly minProperties: 1;
855
+ };
856
+ readonly subject: {
857
+ readonly type: 'string';
858
+ };
859
+ readonly share: {
860
+ readonly $ref: '#/$defs/id';
861
+ };
862
+ readonly issuer: {
863
+ readonly type: 'object';
864
+ readonly additionalProperties: false;
865
+ readonly properties: {
866
+ readonly name: {
867
+ readonly type: 'string';
868
+ };
869
+ readonly email: {
870
+ readonly type: 'string';
871
+ readonly format: 'email';
872
+ };
873
+ };
874
+ readonly required: readonly ['name', 'email'];
875
+ };
876
+ readonly rooms: {
877
+ readonly type: 'array';
878
+ readonly items: {
879
+ readonly type: 'object';
880
+ readonly additionalProperties: false;
881
+ readonly properties: {
882
+ readonly name: {
883
+ readonly type: 'string';
884
+ };
885
+ };
886
+ readonly required: readonly ['name'];
887
+ };
888
+ };
889
+ readonly apps: {
890
+ readonly maxItems: 20;
891
+ readonly type: 'array';
892
+ readonly items: {
893
+ readonly type: 'object';
894
+ readonly additionalProperties: false;
895
+ readonly properties: {
896
+ readonly name: {
897
+ readonly type: 'string';
898
+ readonly minLength: 1;
899
+ readonly maxLength: 200;
900
+ };
901
+ readonly reaches: {
902
+ readonly type: 'array';
903
+ readonly items: {
904
+ readonly type: 'string';
905
+ readonly minLength: 1;
906
+ readonly maxLength: 512;
907
+ };
908
+ };
909
+ };
910
+ readonly required: readonly ['name', 'reaches'];
911
+ };
912
+ };
913
+ readonly expires_at: {
914
+ readonly type: 'string';
915
+ readonly format: 'date-time';
916
+ };
917
+ readonly join_request: {
918
+ readonly $ref: '#/$defs/id';
919
+ };
920
+ readonly user: {
921
+ readonly type: 'object';
922
+ readonly additionalProperties: false;
923
+ readonly properties: {
924
+ readonly name: {
925
+ readonly type: 'string';
926
+ };
927
+ readonly email: {
928
+ readonly type: 'string';
929
+ readonly format: 'email';
930
+ };
931
+ };
932
+ readonly required: readonly ['name', 'email'];
933
+ };
934
+ readonly room: {
935
+ readonly type: 'object';
936
+ readonly additionalProperties: false;
937
+ readonly properties: {
938
+ readonly room: {
939
+ readonly $ref: '#/$defs/room';
940
+ };
941
+ readonly name: {
942
+ readonly type: 'string';
943
+ };
944
+ };
945
+ readonly minProperties: 1;
946
+ };
947
+ readonly app: {
948
+ readonly type: 'object';
949
+ readonly additionalProperties: false;
950
+ readonly properties: {
951
+ readonly app: {
952
+ readonly $ref: '#/$defs/app';
953
+ };
954
+ readonly name: {
955
+ readonly type: 'string';
956
+ };
957
+ };
958
+ readonly minProperties: 1;
959
+ };
960
+ readonly binding: {
961
+ readonly $ref: '#/$defs/id';
962
+ };
963
+ readonly slot: {
964
+ readonly type: 'string';
965
+ };
966
+ readonly findings: {
967
+ readonly type: 'array';
968
+ readonly items: {
969
+ readonly type: 'string';
970
+ };
971
+ };
972
+ readonly owner: {
973
+ readonly type: 'object';
974
+ readonly additionalProperties: false;
975
+ readonly properties: {
976
+ readonly name: {
977
+ readonly type: 'string';
978
+ };
979
+ };
980
+ readonly required: readonly ['name'];
981
+ };
982
+ readonly caller: {
983
+ readonly type: 'object';
984
+ readonly additionalProperties: false;
985
+ readonly properties: {
986
+ readonly user: {
987
+ readonly $ref: '#/$defs/id';
988
+ };
989
+ readonly name: {
990
+ readonly type: 'string';
991
+ };
992
+ };
993
+ readonly required: readonly ['user', 'name'];
994
+ };
995
+ readonly ownership_offer: {
996
+ readonly $ref: '#/$defs/id';
997
+ };
998
+ readonly offerer: {
999
+ readonly type: 'object';
1000
+ readonly additionalProperties: false;
1001
+ readonly properties: {
1002
+ readonly name: {
1003
+ readonly type: 'string';
1004
+ };
1005
+ readonly email: {
1006
+ readonly type: 'string';
1007
+ readonly format: 'email';
1008
+ };
1009
+ };
1010
+ readonly required: readonly ['name', 'email'];
1011
+ };
1012
+ readonly environment: {
1013
+ readonly type: 'object';
1014
+ readonly additionalProperties: false;
1015
+ readonly properties: {
1016
+ readonly environment: {
1017
+ readonly $ref: '#/$defs/id';
1018
+ };
1019
+ readonly name: {
1020
+ readonly type: 'string';
1021
+ };
1022
+ readonly kind: {
1023
+ readonly enum: readonly ['vps', 'sandbox'];
1024
+ };
1025
+ };
1026
+ readonly required: readonly ['environment', 'name'];
1027
+ };
1028
+ readonly reason: {
1029
+ readonly type: 'string';
1030
+ };
1031
+ readonly deadline: {
1032
+ readonly type: 'string';
1033
+ readonly format: 'date-time';
1034
+ };
1035
+ readonly operation_kind: {
1036
+ readonly type: 'string';
1037
+ };
1038
+ readonly free: {
1039
+ readonly type: 'object';
1040
+ readonly additionalProperties: false;
1041
+ readonly properties: {
1042
+ readonly held: {
1043
+ readonly type: 'string';
1044
+ readonly pattern: '^\\d+$';
1045
+ };
1046
+ readonly limit: {
1047
+ readonly type: 'string';
1048
+ readonly pattern: '^[1-9]\\d*$';
1049
+ };
1050
+ readonly measure: {
1051
+ readonly type: 'string';
1052
+ readonly enum: readonly ['content', 'retained'];
1053
+ };
1054
+ };
1055
+ readonly required: readonly ['held', 'limit', 'measure'];
1056
+ };
1057
+ readonly budget: {
1058
+ readonly type: 'string';
1059
+ readonly pattern: '^\\d+(?:\\.\\d+)?$';
1060
+ };
1061
+ readonly resets_at: {
1062
+ readonly type: 'string';
1063
+ readonly format: 'date-time';
1064
+ };
1065
+ readonly grant: {
1066
+ readonly $ref: '#/$defs/id';
1067
+ };
1068
+ readonly category: {
1069
+ readonly type: 'string';
1070
+ };
1071
+ readonly access_started_at: {
1072
+ readonly type: 'string';
1073
+ readonly format: 'date-time';
1074
+ };
1075
+ readonly access_ended_at: {
1076
+ readonly type: 'string';
1077
+ readonly format: 'date-time';
1078
+ };
1079
+ readonly systems: {
1080
+ readonly type: 'array';
1081
+ readonly items: {
1082
+ readonly type: 'string';
1083
+ };
1084
+ };
1085
+ readonly case_reference: {
1086
+ readonly type: 'string';
1087
+ };
1088
+ readonly routine_request: {
1089
+ readonly $ref: '#/$defs/id';
1090
+ };
1091
+ readonly requester: {
1092
+ readonly type: 'object';
1093
+ readonly additionalProperties: false;
1094
+ readonly properties: {
1095
+ readonly name: {
1096
+ readonly type: 'string';
1097
+ };
1098
+ };
1099
+ readonly required: readonly ['name'];
1100
+ };
1101
+ readonly agent: {
1102
+ readonly type: 'object';
1103
+ readonly additionalProperties: false;
1104
+ readonly properties: {
1105
+ readonly agent: {
1106
+ readonly $ref: '#/$defs/id';
1107
+ };
1108
+ readonly name: {
1109
+ readonly type: 'string';
1110
+ };
1111
+ };
1112
+ readonly required: readonly ['name'];
1113
+ };
1114
+ readonly conversation: {
1115
+ readonly $ref: '#/$defs/id';
1116
+ };
1117
+ readonly routine: {
1118
+ readonly type: 'object';
1119
+ readonly additionalProperties: false;
1120
+ readonly properties: {
1121
+ readonly routine: {
1122
+ readonly $ref: '#/$defs/id';
1123
+ };
1124
+ readonly name: {
1125
+ readonly type: 'string';
1126
+ };
1127
+ readonly version: {
1128
+ readonly type: 'integer';
1129
+ readonly minimum: 1;
1130
+ };
1131
+ };
1132
+ readonly required: readonly ['name'];
1133
+ };
1134
+ readonly decliner: {
1135
+ readonly type: 'object';
1136
+ readonly additionalProperties: false;
1137
+ readonly properties: {
1138
+ readonly name: {
1139
+ readonly type: 'string';
1140
+ };
1141
+ };
1142
+ readonly required: readonly ['name'];
1143
+ };
1144
+ readonly input: {
1145
+ readonly type: 'string';
1146
+ };
1147
+ readonly export: {
1148
+ readonly $ref: '#/$defs/id';
1149
+ };
1150
+ readonly size_bytes: {
1151
+ readonly type: 'integer';
1152
+ readonly minimum: 0;
1153
+ };
1154
+ readonly site: {
1155
+ readonly type: 'object';
1156
+ readonly additionalProperties: false;
1157
+ readonly properties: {
1158
+ readonly site: {
1159
+ readonly $ref: '#/$defs/id';
1160
+ };
1161
+ readonly name: {
1162
+ readonly type: 'string';
1163
+ };
1164
+ };
1165
+ readonly required: readonly ['site', 'name'];
1166
+ };
1167
+ readonly address: {
1168
+ readonly type: 'string';
1169
+ readonly maxLength: 300;
1170
+ readonly format: 'uri';
1171
+ };
1172
+ readonly to: {
1173
+ readonly type: 'object';
1174
+ readonly additionalProperties: false;
1175
+ readonly properties: {
1176
+ readonly name: {
1177
+ readonly type: 'string';
1178
+ };
1179
+ };
1180
+ readonly required: readonly ['name'];
1181
+ };
1182
+ readonly copies: {
1183
+ readonly type: 'integer';
1184
+ readonly minimum: 0;
1185
+ };
1186
+ readonly bound: {
1187
+ readonly type: 'integer';
1188
+ readonly minimum: 0;
1189
+ };
1190
+ readonly title: {
1191
+ readonly type: 'string';
1192
+ };
1193
+ readonly body: {
1194
+ readonly type: 'string';
1195
+ };
1196
+ readonly authorship: {
1197
+ readonly type: 'object';
1198
+ readonly additionalProperties: false;
1199
+ readonly properties: {
1200
+ readonly kind: {
1201
+ readonly type: 'string';
1202
+ readonly const: 'trigger-action';
1203
+ };
1204
+ readonly trigger: {
1205
+ readonly $ref: '#/$defs/id';
1206
+ };
1207
+ readonly position: {
1208
+ readonly type: 'integer';
1209
+ readonly minimum: 0;
1210
+ };
1211
+ };
1212
+ readonly required: readonly ['kind', 'trigger', 'position'];
1213
+ };
1214
+ readonly path: {
1215
+ readonly type: 'string';
1216
+ readonly maxLength: 4096;
1217
+ readonly pattern: '^\\/.*';
1218
+ };
1219
+ readonly trigger: {
1220
+ readonly type: 'object';
1221
+ readonly additionalProperties: false;
1222
+ readonly properties: {
1223
+ readonly trigger: {
1224
+ readonly $ref: '#/$defs/id';
1225
+ };
1226
+ readonly name: {
1227
+ readonly type: 'string';
1228
+ };
1229
+ };
1230
+ readonly required: readonly ['trigger', 'name'];
1231
+ };
1232
+ readonly cause: {
1233
+ readonly type: 'string';
1234
+ };
1235
+ readonly function: {
1236
+ readonly type: 'string';
1237
+ };
1238
+ readonly error: {
1239
+ readonly type: 'string';
1240
+ };
1241
+ };
1242
+ readonly required: readonly ['notification', 'kind', 'created', 'way_in', 'subject'];
1243
+ };
1244
+ readonly 'house-panel-preferences': {
1245
+ readonly description: "The panel's preferences at /rooms/private/settings/panel.md. Its own vocabulary is in the body.";
1246
+ readonly properties: {};
1247
+ };
1248
+ readonly 'house-profile': {
1249
+ readonly description: "The User's display name, the email they sign in with and accepted about-me Markdown.";
1250
+ readonly properties: {
1251
+ readonly reflected: {
1252
+ readonly type: 'string';
1253
+ readonly format: 'date-time';
1254
+ };
1255
+ readonly name: {
1256
+ readonly type: 'string';
1257
+ };
1258
+ readonly email: {
1259
+ readonly type: 'string';
1260
+ };
1261
+ readonly about_me: {
1262
+ readonly type: 'string';
1263
+ };
1264
+ };
1265
+ readonly required: readonly ['reflected', 'name', 'email'];
1266
+ };
1267
+ readonly 'house-public-room': {
1268
+ readonly description: 'One Public Room this User added and reads without being its member. Its members are read with `list_members`, and `leave_room` removes it.';
1269
+ readonly properties: {
1270
+ readonly reflected: {
1271
+ readonly type: 'string';
1272
+ readonly format: 'date-time';
1273
+ };
1274
+ readonly room: {
1275
+ readonly $ref: '#/$defs/room';
1276
+ };
1277
+ readonly handle: {
1278
+ readonly type: 'string';
1279
+ readonly minLength: 6;
1280
+ readonly maxLength: 63;
1281
+ readonly pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$';
1282
+ };
1283
+ readonly name: {
1284
+ readonly type: 'string';
1285
+ };
1286
+ readonly archived: {
1287
+ readonly type: 'string';
1288
+ readonly format: 'date-time';
1289
+ };
1290
+ };
1291
+ readonly required: readonly ['reflected', 'room', 'handle', 'name'];
1292
+ };
1293
+ readonly 'house-room': {
1294
+ readonly description: "One Room this User reads, with the processing configuration that indexes it. `my_room` is `true` on this User's My Room alone, whatever its name and handle become. `admission` is `pending` while House is still settling this User into the Room, which finishes on its own and needs no act. `access` is this User's access word in the Room, `owner`, `manage`, `edit`, `keep`, `open` or `search`, with `only_while_online` on a `manage` or `edit` held at the Open level; `level` is the access level they hold on its content, `search`, `open` or `keep`, and `operations` are their own on its content. `policy` is whether House indexes the Room's documents, `Off` while it withholds indexing. Each indexing entry names a folder `path` and the `policy` set on it. `shared_schema` names the Shared schema whose copy is the Room's schema while the Room uses one, with its `name`. The owner alone sees `ownership_offer`, the `nominee` it is offered to and when it `expires`, while an offer is open, and `public`, the time they made the Room public, while every House User may read it; a member who does not own it sees its `owner` by name. `roster` lists the Room's members, each with when they were `admitted`, their member `document` and the access level and operations a Room Share could offer them without giving them anything new as `held`; it and `rights` carry the access this User may see, every member's to one who manages the Room and their own otherwise; `routines` lists the Routine Accesses this User or the Room's Triggers may call in it, each with its `routine`, by `name`, `description`, `input` and `version`, its `agent` and that Agent's `owner` by name: `starts_without_approval` on one this User may call and `triggers: true` on one the Triggers may call.";
1295
+ readonly properties: {
1296
+ readonly reflected: {
1297
+ readonly type: 'string';
1298
+ readonly format: 'date-time';
1299
+ };
1300
+ readonly room: {
1301
+ readonly $ref: '#/$defs/room';
1302
+ };
1303
+ readonly handle: {
1304
+ readonly type: 'string';
1305
+ readonly minLength: 6;
1306
+ readonly maxLength: 63;
1307
+ readonly pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$';
1308
+ };
1309
+ readonly name: {
1310
+ readonly type: 'string';
1311
+ };
1312
+ readonly my_room: {
1313
+ readonly const: true;
1314
+ };
1315
+ readonly membership: {
1316
+ readonly enum: readonly ['owner', 'member'];
1317
+ };
1318
+ readonly ownership_offer: {
1319
+ readonly type: 'object';
1320
+ readonly additionalProperties: false;
1321
+ readonly properties: {
1322
+ readonly nominee: {
1323
+ readonly type: 'object';
1324
+ readonly additionalProperties: false;
1325
+ readonly properties: {
1326
+ readonly user: {
1327
+ readonly $ref: '#/$defs/id';
1328
+ };
1329
+ readonly name: {
1330
+ readonly type: 'string';
1331
+ };
1332
+ };
1333
+ readonly required: readonly ['user', 'name'];
1334
+ };
1335
+ readonly expires: {
1336
+ readonly type: 'string';
1337
+ readonly format: 'date-time';
1338
+ };
1339
+ };
1340
+ readonly required: readonly ['nominee', 'expires'];
1341
+ };
1342
+ readonly access: {
1343
+ readonly enum: readonly ['owner', 'manage', 'edit', 'keep', 'open', 'search'];
1344
+ };
1345
+ readonly level: {
1346
+ readonly enum: readonly ['search', 'open', 'keep'];
1347
+ };
1348
+ readonly only_while_online: {
1349
+ readonly const: true;
1350
+ };
1351
+ readonly operations: {
1352
+ readonly type: 'array';
1353
+ readonly items: {
1354
+ readonly type: 'string';
1355
+ readonly enum: readonly ['write', 'delete', 'export', 'manageAccess'];
1356
+ };
1357
+ };
1358
+ readonly owner: {
1359
+ readonly type: 'object';
1360
+ readonly additionalProperties: false;
1361
+ readonly properties: {
1362
+ readonly name: {
1363
+ readonly type: 'string';
1364
+ };
1365
+ };
1366
+ readonly required: readonly ['name'];
1367
+ };
1368
+ readonly members: {
1369
+ readonly type: 'integer';
1370
+ readonly minimum: 0;
1371
+ };
1372
+ readonly triggers: {
1373
+ readonly type: 'integer';
1374
+ readonly minimum: 0;
1375
+ };
1376
+ readonly published: {
1377
+ readonly enum: readonly ['yes', 'no'];
1378
+ };
1379
+ readonly intake: {
1380
+ readonly enum: readonly ['yes', 'no'];
1381
+ };
1382
+ readonly size: {
1383
+ readonly type: 'number';
1384
+ };
1385
+ readonly admission: {
1386
+ readonly enum: readonly ['admitted', 'pending'];
1387
+ };
1388
+ readonly created: {
1389
+ readonly type: 'string';
1390
+ readonly format: 'date-time';
1391
+ };
1392
+ readonly archived: {
1393
+ readonly type: 'string';
1394
+ readonly format: 'date-time';
1395
+ };
1396
+ readonly public: {
1397
+ readonly type: 'string';
1398
+ readonly format: 'date-time';
1399
+ };
1400
+ readonly policy: {
1401
+ readonly enum: readonly ['On', 'Off'];
1402
+ };
1403
+ readonly indexing: {
1404
+ readonly type: 'array';
1405
+ readonly items: {
1406
+ readonly type: 'object';
1407
+ readonly additionalProperties: false;
1408
+ readonly properties: {
1409
+ readonly path: {
1410
+ readonly type: 'string';
1411
+ readonly minLength: 1;
1412
+ };
1413
+ readonly policy: {
1414
+ readonly enum: readonly ['On', 'Off'];
1415
+ };
1416
+ };
1417
+ readonly required: readonly ['path', 'policy'];
1418
+ };
1419
+ };
1420
+ readonly shared_schema: {
1421
+ readonly type: 'object';
1422
+ readonly additionalProperties: false;
1423
+ readonly properties: {
1424
+ readonly shared_schema: {
1425
+ readonly $ref: '#/$defs/id';
1426
+ };
1427
+ readonly name: {
1428
+ readonly type: 'string';
1429
+ };
1430
+ };
1431
+ readonly required: readonly ['shared_schema', 'name'];
1432
+ };
1433
+ readonly roster: {
1434
+ readonly type: 'array';
1435
+ readonly items: {
1436
+ readonly type: 'object';
1437
+ readonly additionalProperties: false;
1438
+ readonly properties: {
1439
+ readonly user: {
1440
+ readonly $ref: '#/$defs/id';
1441
+ };
1442
+ readonly name: {
1443
+ readonly type: 'string';
1444
+ };
1445
+ readonly owner: {
1446
+ readonly type: 'boolean';
1447
+ };
1448
+ readonly email: {
1449
+ readonly type: 'string';
1450
+ };
1451
+ readonly admitted: {
1452
+ readonly type: 'string';
1453
+ readonly format: 'date-time';
1454
+ };
1455
+ readonly access: {
1456
+ readonly type: 'string';
1457
+ readonly enum: readonly ['owner', 'manage', 'edit', 'keep', 'open', 'search'];
1458
+ };
1459
+ readonly only_while_online: {
1460
+ readonly const: true;
1461
+ };
1462
+ readonly document: {
1463
+ readonly $ref: '#/$defs/document';
1464
+ };
1465
+ readonly schema_roles: {
1466
+ readonly type: 'array';
1467
+ readonly items: {
1468
+ readonly type: 'string';
1469
+ };
1470
+ };
1471
+ readonly held: {
1472
+ readonly type: 'object';
1473
+ readonly additionalProperties: false;
1474
+ readonly properties: {
1475
+ readonly level: {
1476
+ readonly anyOf: readonly [{
1477
+ readonly type: 'string';
1478
+ readonly enum: readonly ['search', 'open', 'keep'];
1479
+ }, {
1480
+ readonly type: 'null';
1481
+ }];
1482
+ };
1483
+ readonly operations: {
1484
+ readonly type: 'array';
1485
+ readonly items: {
1486
+ readonly type: 'string';
1487
+ readonly enum: readonly ['write', 'delete', 'export', 'manageAccess'];
1488
+ };
1489
+ };
1490
+ };
1491
+ readonly required: readonly ['level', 'operations'];
1492
+ };
1493
+ };
1494
+ readonly required: readonly ['user', 'name', 'owner', 'email'];
1495
+ };
1496
+ };
1497
+ readonly rights: {
1498
+ readonly type: 'array';
1499
+ readonly items: {
1500
+ readonly type: 'object';
1501
+ readonly additionalProperties: false;
1502
+ readonly properties: {
1503
+ readonly user: {
1504
+ readonly $ref: '#/$defs/id';
1505
+ };
1506
+ readonly name: {
1507
+ readonly type: 'string';
1508
+ };
1509
+ readonly entries: {
1510
+ readonly type: 'array';
1511
+ readonly items: {
1512
+ readonly type: 'object';
1513
+ readonly additionalProperties: false;
1514
+ readonly properties: {
1515
+ readonly namespace: {
1516
+ readonly $ref: '#/$defs/namespace';
1517
+ };
1518
+ readonly level: {
1519
+ readonly anyOf: readonly [{
1520
+ readonly type: 'string';
1521
+ readonly enum: readonly ['search', 'open', 'keep'];
1522
+ }, {
1523
+ readonly type: 'null';
1524
+ }];
1525
+ };
1526
+ readonly operations: {
1527
+ readonly type: 'array';
1528
+ readonly items: {
1529
+ readonly type: 'string';
1530
+ readonly enum: readonly ['write', 'delete', 'export', 'manageAccess'];
1531
+ };
1532
+ };
1533
+ readonly sources: {
1534
+ readonly type: 'array';
1535
+ readonly items: {
1536
+ readonly type: 'object';
1537
+ readonly additionalProperties: false;
1538
+ readonly properties: {
1539
+ readonly kind: {
1540
+ readonly type: 'string';
1541
+ readonly enum: readonly ['direct', 'inherited'];
1542
+ };
1543
+ readonly namespace: {
1544
+ readonly $ref: '#/$defs/namespace';
1545
+ };
1546
+ readonly level: {
1547
+ readonly anyOf: readonly [{
1548
+ readonly type: 'string';
1549
+ readonly enum: readonly ['search', 'open', 'keep'];
1550
+ }, {
1551
+ readonly type: 'null';
1552
+ }];
1553
+ };
1554
+ readonly operations: {
1555
+ readonly type: 'array';
1556
+ readonly items: {
1557
+ readonly type: 'string';
1558
+ readonly enum: readonly ['write', 'delete', 'export', 'manageAccess'];
1559
+ };
1560
+ };
1561
+ };
1562
+ readonly required: readonly ['kind', 'namespace', 'level', 'operations'];
1563
+ };
1564
+ };
1565
+ };
1566
+ readonly required: readonly ['namespace', 'level', 'operations', 'sources'];
1567
+ };
1568
+ };
1569
+ readonly direct: {
1570
+ readonly type: 'array';
1571
+ readonly items: {
1572
+ readonly type: 'object';
1573
+ readonly additionalProperties: false;
1574
+ readonly properties: {
1575
+ readonly namespace: {
1576
+ readonly $ref: '#/$defs/namespace';
1577
+ };
1578
+ readonly level: {
1579
+ readonly anyOf: readonly [{
1580
+ readonly type: 'string';
1581
+ readonly enum: readonly ['search', 'open', 'keep'];
1582
+ }, {
1583
+ readonly type: 'null';
1584
+ }];
1585
+ };
1586
+ readonly operations: {
1587
+ readonly type: 'array';
1588
+ readonly items: {
1589
+ readonly type: 'string';
1590
+ readonly enum: readonly ['write', 'delete', 'export', 'manageAccess'];
1591
+ };
1592
+ };
1593
+ };
1594
+ readonly required: readonly ['namespace', 'level', 'operations'];
1595
+ };
1596
+ };
1597
+ readonly admitted: {
1598
+ readonly type: 'string';
1599
+ readonly format: 'date-time';
1600
+ };
1601
+ readonly schema_roles: {
1602
+ readonly type: 'array';
1603
+ readonly items: {
1604
+ readonly type: 'string';
1605
+ };
1606
+ };
1607
+ };
1608
+ readonly required: readonly ['user', 'name', 'entries', 'direct', 'schema_roles'];
1609
+ };
1610
+ };
1611
+ readonly routines: {
1612
+ readonly type: 'array';
1613
+ readonly items: {
1614
+ readonly type: 'object';
1615
+ readonly additionalProperties: false;
1616
+ readonly properties: {
1617
+ readonly routine_access: {
1618
+ readonly $ref: '#/$defs/id';
1619
+ };
1620
+ readonly agent: {
1621
+ readonly $ref: '#/$defs/id';
1622
+ };
1623
+ readonly owner: {
1624
+ readonly type: 'object';
1625
+ readonly additionalProperties: false;
1626
+ readonly properties: {
1627
+ readonly name: {
1628
+ readonly type: 'string';
1629
+ };
1630
+ };
1631
+ readonly required: readonly ['name'];
1632
+ };
1633
+ readonly routine: {
1634
+ readonly type: 'object';
1635
+ readonly additionalProperties: false;
1636
+ readonly properties: {
1637
+ readonly name: {
1638
+ readonly type: 'string';
1639
+ };
1640
+ readonly description: {
1641
+ readonly type: 'string';
1642
+ };
1643
+ readonly input: {
1644
+ readonly type: 'string';
1645
+ };
1646
+ readonly version: {
1647
+ readonly type: 'integer';
1648
+ readonly exclusiveMinimum: 0;
1649
+ };
1650
+ };
1651
+ readonly required: readonly ['name', 'description', 'input', 'version'];
1652
+ };
1653
+ readonly starts_without_approval: {
1654
+ readonly type: 'boolean';
1655
+ };
1656
+ readonly triggers: {
1657
+ readonly type: 'boolean';
1658
+ readonly const: true;
1659
+ };
1660
+ };
1661
+ readonly required: readonly ['routine_access', 'agent', 'owner', 'routine'];
1662
+ };
1663
+ };
1664
+ };
1665
+ readonly required: readonly ['reflected', 'room', 'name', 'membership', 'access', 'admission', 'created', 'policy'];
1666
+ };
1667
+ readonly 'house-routine-access': {
1668
+ readonly description: "One Routine Access this User granted, its `routine` by identifier and `name`, the `agent` it calls, its `room` and when it was `created`. While a scope is `selected_users`, each invokers or starters entry names one `user` by identifier with their account `email` and display `name` as of the last write of this document, or by identifier alone once that User has left the Room. An entry naming the Access's `room` admits the Room's Triggers as a caller, or lets them start without approval, whatever the scope. `last_failure` is the latest withdrawn request, whatever starts after it: its `origin`, `user` or `trigger`, its time `at` and its `reason`.";
1669
+ readonly properties: {
1670
+ readonly reflected: {
1671
+ readonly type: 'string';
1672
+ readonly format: 'date-time';
1673
+ };
1674
+ readonly routine_access: {
1675
+ readonly $ref: '#/$defs/id';
1676
+ };
1677
+ readonly routine: {
1678
+ readonly type: 'object';
1679
+ readonly additionalProperties: false;
1680
+ readonly properties: {
1681
+ readonly routine: {
1682
+ readonly $ref: '#/$defs/id';
1683
+ };
1684
+ readonly name: {
1685
+ readonly type: 'string';
1686
+ };
1687
+ };
1688
+ readonly required: readonly ['routine', 'name'];
1689
+ };
1690
+ readonly agent: {
1691
+ readonly $ref: '#/$defs/id';
1692
+ };
1693
+ readonly room: {
1694
+ readonly $ref: '#/$defs/room';
1695
+ };
1696
+ readonly invoker_scope: {
1697
+ readonly type: 'string';
1698
+ readonly enum: readonly ['all_members', 'selected_users'];
1699
+ };
1700
+ readonly start_scope: {
1701
+ readonly type: 'string';
1702
+ readonly enum: readonly ['none', 'all_admitted', 'selected_users'];
1703
+ };
1704
+ readonly created: {
1705
+ readonly type: 'string';
1706
+ readonly format: 'date-time';
1707
+ };
1708
+ readonly revoked: {
1709
+ readonly type: 'string';
1710
+ readonly format: 'date-time';
1711
+ };
1712
+ readonly invokers: {
1713
+ readonly type: 'array';
1714
+ readonly items: {
1715
+ readonly $ref: '#/$defs/caller';
1716
+ };
1717
+ };
1718
+ readonly starters: {
1719
+ readonly type: 'array';
1720
+ readonly items: {
1721
+ readonly $ref: '#/$defs/caller';
1722
+ };
1723
+ };
1724
+ readonly last_failure: {
1725
+ readonly type: 'object';
1726
+ readonly additionalProperties: false;
1727
+ readonly properties: {
1728
+ readonly origin: {
1729
+ readonly enum: readonly ['user', 'trigger'];
1730
+ };
1731
+ readonly at: {
1732
+ readonly type: 'string';
1733
+ readonly format: 'date-time';
1734
+ };
1735
+ readonly reason: {
1736
+ readonly type: 'string';
1737
+ };
1738
+ };
1739
+ readonly required: readonly ['origin', 'at', 'reason'];
1740
+ };
1741
+ };
1742
+ readonly required: readonly ['reflected', 'routine_access', 'routine', 'agent', 'room', 'invoker_scope', 'start_scope', 'created'];
1743
+ };
1744
+ readonly 'house-routine': {
1745
+ readonly description: "One Routine that serves this Room, which House alone writes from its owner's document in their Private Room: the `routine` by identifier, its `description`, the `input` a caller sends, empty when it takes nothing, and the `agent` it starts, by `agent` and the `name` that Agent had when this card was last written. The Routine's instruction is never written here.";
1746
+ readonly properties: {
1747
+ readonly reflected: {
1748
+ readonly type: 'string';
1749
+ readonly format: 'date-time';
1750
+ };
1751
+ readonly routine: {
1752
+ readonly $ref: '#/$defs/id';
1753
+ };
1754
+ readonly description: {
1755
+ readonly type: 'string';
1756
+ };
1757
+ readonly input: {
1758
+ readonly type: 'string';
1759
+ };
1760
+ readonly agent: {
1761
+ readonly type: 'object';
1762
+ readonly additionalProperties: false;
1763
+ readonly properties: {
1764
+ readonly agent: {
1765
+ readonly $ref: '#/$defs/id';
1766
+ };
1767
+ readonly name: {
1768
+ readonly type: 'string';
1769
+ };
1770
+ };
1771
+ readonly required: readonly ['agent', 'name'];
1772
+ };
1773
+ };
1774
+ readonly required: readonly ['reflected', 'routine', 'description', 'input', 'agent'];
1775
+ };
1776
+ readonly 'house-site': {
1777
+ readonly description: "One Site this User owns: its `name`, its address under this environment's Site suffix, its own `app`, the tab icon it shows, the one this User set for the Site while `tab_icon_from` is `site` and that App's while it is `app`, the running `release` of that App, which the Site serves, by `release` and `sequence`, its title and `intake_room`, the Intake Room by its `room`, whether an operator disabled it, its mode, and every Room slot of that release in its order. Each slot names its `slot` and as `entries` each Room its list holds, in list order, by its `room`, with that entry's address `segment` and the last `compatibility` outcome of that entry; a slot that lists no Room has no entry. Each finding names its `slot`, its `room` and one exact structural `finding` of that Room against the slot. An incompatible entry stays listed and blocks nothing. `release` is absent until that App's first release. `disabled` is `yes` while an operator holds the Site disabled, and `disabled_reason` carries the reason the operator stated; visitors then find the Site unavailable, this User may still change or delete it, and only an operator enables it again. `mode` is `snapshot` while visitors see the Published Snapshot `publication` names, or `live` while they see what its Rooms hold as it changes, which needs Full House; only this User changes it. `unpublished` is `yes` while this User holds the Site unpublished: visitors then find it unavailable at every address and nothing else changes, and only this User's republication serves it again; an operator's enable never does. `suspended` is `yes` while visitors find the Site unavailable at every address for the reason `suspended_reason` names: `full_house_required` while the Site is `live` and this User lacks Full House, or `public_delivery_limit` while what House's server sent for this User's Sites this UTC month has reached this User's Public delivery limit, unless `public_overage` is `on` while this User holds Full House. A suspension keeps the publication, the addresses, the Custom domains and every act of this User's, and ends by itself at the next UTC month, when this User gains Full House or when `public_overage` turns `on` while this User holds Full House; it lifts no Unpublish and no operator's disable. `public_overage` is `on` while this User keeps the Site serving past the Public delivery limit, which it does only while this User holds Full House; what it sends past the limit is charged as overage. It stays `on` when Full House ends and acts again when Full House returns, and is absent on a Building that offers no Public overage. `publication` is the Published Snapshot the Site serves, or serves once republished, absent while it holds none. `acts` names the publication acts this User may take now: `unpublish` while the Site is published, `republish` while it is unpublished and holds a publication to serve; Publish data also serves an unpublished Site again, with what its Rooms hold. A cleared title is absent. `description` carries presentation. `screenshot` is the address of the image House captured of the Site at its primary address after a release, which a shared link to the Site shows, absent before the first capture. `analytics` is the owner's measurement ID the Site loads its analytics tag with, absent while unset. `indexing` is the search-engines-and-agents switch: while it is `yes`, the Site serves its documents as Markdown and lists them in its indexes. `entry_fallback` names the last time this release's Entry Data Contract could not serve an Entry Page as HTML: its `cause` (`over_bound`, `query_refused` or `unavailable`), the `route` and when it was `recorded`; that page then started the App as usual. `external_origins` names the declared external origins of that release. `notify_me` is `on` while the Site's notification Trigger is present and enabled in its Intake Room. `addresses` lists every address the Site answers at: its address under the Site suffix and each active Custom domain; every address other than `primary_address` redirects to it. Each `domains` entry names one Custom domain's `host`, its `state`, `pending`, `active` or `failed`, the DNS alias target its hostname must point at as `dns_target`, which is this environment's and the same for every domain, and the edge's `reason` when it gives one.";
1778
+ readonly properties: {
1779
+ readonly reflected: {
1780
+ readonly type: 'string';
1781
+ readonly format: 'date-time';
1782
+ };
1783
+ readonly site: {
1784
+ readonly $ref: '#/$defs/id';
1785
+ };
1786
+ readonly name: {
1787
+ readonly type: 'string';
1788
+ };
1789
+ readonly address: {
1790
+ readonly type: 'string';
1791
+ readonly format: 'uri';
1792
+ };
1793
+ readonly addresses: {
1794
+ readonly type: 'array';
1795
+ readonly items: {
1796
+ readonly type: 'string';
1797
+ readonly format: 'uri';
1798
+ };
1799
+ };
1800
+ readonly primary_address: {
1801
+ readonly type: 'string';
1802
+ readonly format: 'uri';
1803
+ };
1804
+ readonly domains: {
1805
+ readonly type: 'array';
1806
+ readonly items: {
1807
+ readonly type: 'object';
1808
+ readonly additionalProperties: false;
1809
+ readonly properties: {
1810
+ readonly host: {
1811
+ readonly type: 'string';
1812
+ };
1813
+ readonly state: {
1814
+ readonly enum: readonly ['pending', 'active', 'failed'];
1815
+ };
1816
+ readonly dns_target: {
1817
+ readonly type: 'string';
1818
+ };
1819
+ readonly reason: {
1820
+ readonly type: 'string';
1821
+ };
1822
+ };
1823
+ readonly required: readonly ['host', 'state', 'dns_target'];
1824
+ };
1825
+ };
1826
+ readonly app: {
1827
+ readonly $ref: '#/$defs/app';
1828
+ };
1829
+ readonly tab_icon_light: {
1830
+ readonly type: 'string';
1831
+ readonly pattern: '^data:image\\/';
1832
+ };
1833
+ readonly tab_icon_dark: {
1834
+ readonly type: 'string';
1835
+ readonly pattern: '^data:image\\/';
1836
+ };
1837
+ readonly tab_icon_colours: {
1838
+ readonly type: 'array';
1839
+ readonly items: {
1840
+ readonly type: 'string';
1841
+ readonly pattern: '^#[0-9a-f]{6}$';
1842
+ };
1843
+ };
1844
+ readonly tab_icon_blend: {
1845
+ readonly enum: readonly ['linear', 'radial'];
1846
+ };
1847
+ readonly tab_icon_angle: {
1848
+ readonly type: 'integer';
1849
+ readonly minimum: 0;
1850
+ readonly maximum: 359;
1851
+ };
1852
+ readonly tab_icon_from: {
1853
+ readonly enum: readonly ['site', 'app'];
1854
+ };
1855
+ readonly release: {
1856
+ readonly type: 'object';
1857
+ readonly additionalProperties: false;
1858
+ readonly properties: {
1859
+ readonly release: {
1860
+ readonly $ref: '#/$defs/id';
1861
+ };
1862
+ readonly sequence: {
1863
+ readonly type: 'integer';
1864
+ readonly exclusiveMinimum: 0;
1865
+ };
1866
+ };
1867
+ readonly required: readonly ['release', 'sequence'];
1868
+ };
1869
+ readonly title: {
1870
+ readonly type: 'string';
1871
+ };
1872
+ readonly description: {
1873
+ readonly type: 'string';
1874
+ };
1875
+ readonly screenshot: {
1876
+ readonly type: 'string';
1877
+ readonly format: 'uri';
1878
+ };
1879
+ readonly analytics: {
1880
+ readonly type: 'string';
1881
+ readonly pattern: '^G-[A-Z0-9]{1,32}$';
1882
+ };
1883
+ readonly intake_room: {
1884
+ readonly type: 'object';
1885
+ readonly additionalProperties: false;
1886
+ readonly properties: {
1887
+ readonly room: {
1888
+ readonly $ref: '#/$defs/room';
1889
+ };
1890
+ };
1891
+ readonly required: readonly ['room'];
1892
+ };
1893
+ readonly external_origins: {
1894
+ readonly type: 'array';
1895
+ readonly items: {
1896
+ readonly type: 'string';
1897
+ readonly format: 'uri';
1898
+ };
1899
+ };
1900
+ readonly disabled: {
1901
+ readonly enum: readonly ['yes', 'no'];
1902
+ };
1903
+ readonly disabled_reason: {
1904
+ readonly type: 'string';
1905
+ };
1906
+ readonly mode: {
1907
+ readonly enum: readonly ['snapshot', 'live'];
1908
+ };
1909
+ readonly unpublished: {
1910
+ readonly enum: readonly ['yes', 'no'];
1911
+ };
1912
+ readonly suspended: {
1913
+ readonly enum: readonly ['yes', 'no'];
1914
+ };
1915
+ readonly suspended_reason: {
1916
+ readonly type: 'string';
1917
+ readonly enum: readonly ['full_house_required', 'public_delivery_limit'];
1918
+ };
1919
+ readonly public_overage: {
1920
+ readonly enum: readonly ['on', 'off'];
1921
+ };
1922
+ readonly publication: {
1923
+ readonly $ref: '#/$defs/id';
1924
+ };
1925
+ readonly acts: {
1926
+ readonly type: 'array';
1927
+ readonly items: {
1928
+ readonly type: 'string';
1929
+ readonly enum: readonly ['unpublish', 'republish'];
1930
+ };
1931
+ };
1932
+ readonly indexing: {
1933
+ readonly enum: readonly ['yes', 'no'];
1934
+ };
1935
+ readonly entry_fallback: {
1936
+ readonly type: 'object';
1937
+ readonly additionalProperties: false;
1938
+ readonly properties: {
1939
+ readonly cause: {
1940
+ readonly enum: readonly ['over_bound', 'query_refused', 'unavailable'];
1941
+ };
1942
+ readonly route: {
1943
+ readonly type: 'string';
1944
+ };
1945
+ readonly recorded: {
1946
+ readonly type: 'string';
1947
+ readonly format: 'date-time';
1948
+ };
1949
+ };
1950
+ readonly required: readonly ['cause', 'route', 'recorded'];
1951
+ };
1952
+ readonly created: {
1953
+ readonly type: 'string';
1954
+ readonly format: 'date-time';
1955
+ };
1956
+ readonly new_browsers: {
1957
+ readonly type: 'integer';
1958
+ readonly minimum: 0;
1959
+ };
1960
+ readonly submissions: {
1961
+ readonly type: 'integer';
1962
+ readonly minimum: 0;
1963
+ };
1964
+ readonly notify_me: {
1965
+ readonly enum: readonly ['on', 'off'];
1966
+ };
1967
+ readonly image_copies: {
1968
+ readonly type: 'integer';
1969
+ readonly minimum: 0;
1970
+ };
1971
+ readonly image_copy_bound: {
1972
+ readonly type: 'integer';
1973
+ readonly minimum: 0;
1974
+ };
1975
+ readonly image_copy_limit_reached: {
1976
+ readonly enum: readonly ['yes', 'no'];
1977
+ };
1978
+ readonly slots: {
1979
+ readonly type: 'array';
1980
+ readonly items: {
1981
+ readonly type: 'object';
1982
+ readonly additionalProperties: false;
1983
+ readonly properties: {
1984
+ readonly slot: {
1985
+ readonly type: 'string';
1986
+ readonly pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$';
1987
+ };
1988
+ readonly entries: {
1989
+ readonly type: 'array';
1990
+ readonly items: {
1991
+ readonly type: 'object';
1992
+ readonly additionalProperties: false;
1993
+ readonly properties: {
1994
+ readonly room: {
1995
+ readonly $ref: '#/$defs/room';
1996
+ };
1997
+ readonly segment: {
1998
+ readonly type: 'string';
1999
+ };
2000
+ readonly compatibility: {
2001
+ readonly enum: readonly ['unchecked', 'compatible', 'incompatible'];
2002
+ };
2003
+ };
2004
+ readonly required: readonly ['room', 'segment', 'compatibility'];
2005
+ };
2006
+ };
2007
+ };
2008
+ readonly required: readonly ['slot', 'entries'];
2009
+ };
2010
+ };
2011
+ readonly findings: {
2012
+ readonly type: 'array';
2013
+ readonly items: {
2014
+ readonly type: 'object';
2015
+ readonly additionalProperties: false;
2016
+ readonly properties: {
2017
+ readonly slot: {
2018
+ readonly type: 'string';
2019
+ readonly pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$';
2020
+ };
2021
+ readonly room: {
2022
+ readonly $ref: '#/$defs/room';
2023
+ };
2024
+ readonly finding: {
2025
+ readonly type: 'string';
2026
+ };
2027
+ };
2028
+ readonly required: readonly ['slot', 'room', 'finding'];
2029
+ };
2030
+ };
2031
+ };
2032
+ readonly required: readonly ['reflected', 'site', 'name', 'address', 'primary_address', 'app', 'tab_icon_from', 'disabled', 'mode', 'unpublished', 'suspended', 'indexing', 'created', 'new_browsers', 'submissions', 'notify_me', 'image_copies', 'image_copy_bound', 'image_copy_limit_reached'];
2033
+ };
2034
+ readonly 'house-trigger': {
2035
+ readonly description: "One Trigger of this Room as its acts wrote it, which House alone writes: its `description`, the `condition` it fires on, its `actions` in order, whether each action and the Trigger are `enabled`, `paused_by` `types` while a change of the Room's types paused it, its `creator` by `user` and the `name` they had then, and when it was `created`. A `notify` action reaches the `users` its `to` names, the members its `fields` name in the matched document and the holders of its `roles`; a `routine` action sends its `payload` through its `routine_access`; a `function` action runs the `function` its `app`'s latest release declares, on House's servers, or, naming no `app`, the Room owner's Environment function of that name on its Environment, which only a Trigger of their Private Room holds. Whether an action's target holds is not written: it follows from the Room's members, the Routine Access, the App's latest release and the owner's functions.";
2036
+ readonly properties: {
2037
+ readonly reflected: {
2038
+ readonly type: 'string';
2039
+ readonly format: 'date-time';
2040
+ };
2041
+ readonly trigger: {
2042
+ readonly $ref: '#/$defs/id';
2043
+ };
2044
+ readonly description: {
2045
+ readonly type: 'string';
2046
+ };
2047
+ readonly condition: {
2048
+ readonly anyOf: readonly [{
2049
+ readonly type: 'object';
2050
+ readonly additionalProperties: false;
2051
+ readonly properties: {
2052
+ readonly on: {
2053
+ readonly const: 'documents';
2054
+ };
2055
+ readonly scope: {
2056
+ readonly $ref: '#/$defs/trigger_scope';
2057
+ };
2058
+ readonly mode: {
2059
+ readonly const: 'starts_matching';
2060
+ };
2061
+ readonly new_documents: {
2062
+ readonly type: 'boolean';
2063
+ };
2064
+ readonly match: {
2065
+ readonly $ref: '#/$defs/trigger_test';
2066
+ };
2067
+ readonly by: {
2068
+ readonly $ref: '#/$defs/trigger_test';
2069
+ };
2070
+ readonly moved_between_rooms: {
2071
+ readonly type: 'boolean';
2072
+ };
2073
+ };
2074
+ readonly required: readonly ['on', 'scope', 'mode', 'new_documents', 'match'];
2075
+ }, {
2076
+ readonly type: 'object';
2077
+ readonly additionalProperties: false;
2078
+ readonly properties: {
2079
+ readonly on: {
2080
+ readonly const: 'documents';
2081
+ };
2082
+ readonly scope: {
2083
+ readonly $ref: '#/$defs/trigger_scope';
2084
+ };
2085
+ readonly mode: {
2086
+ readonly const: 'field_changes';
2087
+ };
2088
+ readonly field: {
2089
+ readonly type: 'string';
2090
+ };
2091
+ readonly from: {
2092
+ readonly anyOf: readonly [{
2093
+ readonly $ref: '#/$defs/trigger_values';
2094
+ }, {
2095
+ readonly const: 'new';
2096
+ }];
2097
+ };
2098
+ readonly to: {
2099
+ readonly anyOf: readonly [{
2100
+ readonly $ref: '#/$defs/trigger_values';
2101
+ }, {
2102
+ readonly const: 'deleted';
2103
+ }];
2104
+ };
2105
+ readonly match: {
2106
+ readonly $ref: '#/$defs/trigger_test';
2107
+ };
2108
+ readonly by: {
2109
+ readonly $ref: '#/$defs/trigger_test';
2110
+ };
2111
+ readonly moved_between_rooms: {
2112
+ readonly type: 'boolean';
2113
+ };
2114
+ };
2115
+ readonly required: readonly ['on', 'scope', 'mode', 'field'];
2116
+ }, {
2117
+ readonly type: 'object';
2118
+ readonly additionalProperties: false;
2119
+ readonly properties: {
2120
+ readonly on: {
2121
+ readonly const: 'items';
2122
+ };
2123
+ readonly source: {
2124
+ readonly type: 'string';
2125
+ };
2126
+ readonly address: {
2127
+ readonly type: 'string';
2128
+ };
2129
+ readonly match: {
2130
+ readonly $ref: '#/$defs/trigger_test';
2131
+ };
2132
+ };
2133
+ readonly required: readonly ['on'];
2134
+ }, {
2135
+ readonly type: 'object';
2136
+ readonly additionalProperties: false;
2137
+ readonly properties: {
2138
+ readonly on: {
2139
+ readonly const: 'notifications';
2140
+ };
2141
+ readonly match: {
2142
+ readonly $ref: '#/$defs/trigger_test';
2143
+ };
2144
+ };
2145
+ readonly required: readonly ['on'];
2146
+ }, {
2147
+ readonly type: 'object';
2148
+ readonly additionalProperties: false;
2149
+ readonly properties: {
2150
+ readonly on: {
2151
+ readonly const: 'clock';
2152
+ };
2153
+ readonly cron: {
2154
+ readonly type: 'string';
2155
+ };
2156
+ readonly time_zone: {
2157
+ readonly type: 'string';
2158
+ };
2159
+ };
2160
+ readonly required: readonly ['on', 'cron', 'time_zone'];
2161
+ }, {
2162
+ readonly type: 'object';
2163
+ readonly additionalProperties: false;
2164
+ readonly properties: {
2165
+ readonly on: {
2166
+ readonly const: 'clock';
2167
+ };
2168
+ readonly scope: {
2169
+ readonly type: 'object';
2170
+ readonly additionalProperties: false;
2171
+ readonly properties: {
2172
+ readonly type: {
2173
+ readonly type: 'string';
2174
+ };
2175
+ };
2176
+ readonly required: readonly ['type'];
2177
+ };
2178
+ readonly date: {
2179
+ readonly type: 'string';
2180
+ };
2181
+ readonly days: {
2182
+ readonly type: 'integer';
2183
+ };
2184
+ readonly at: {
2185
+ readonly type: 'string';
2186
+ };
2187
+ readonly time_zone: {
2188
+ readonly type: 'string';
2189
+ };
2190
+ readonly match: {
2191
+ readonly $ref: '#/$defs/trigger_test';
2192
+ };
2193
+ };
2194
+ readonly required: readonly ['on', 'scope', 'date', 'days', 'at', 'time_zone'];
2195
+ }];
2196
+ };
2197
+ readonly actions: {
2198
+ readonly type: 'array';
2199
+ readonly items: {
2200
+ readonly anyOf: readonly [{
2201
+ readonly type: 'object';
2202
+ readonly additionalProperties: false;
2203
+ readonly properties: {
2204
+ readonly kind: {
2205
+ readonly const: 'notify';
2206
+ };
2207
+ readonly enabled: {
2208
+ readonly type: 'boolean';
2209
+ };
2210
+ readonly title: {
2211
+ readonly type: 'string';
2212
+ };
2213
+ readonly text: {
2214
+ readonly type: 'string';
2215
+ };
2216
+ readonly to: {
2217
+ readonly type: 'object';
2218
+ readonly additionalProperties: false;
2219
+ readonly properties: {
2220
+ readonly users: {
2221
+ readonly type: 'array';
2222
+ readonly items: {
2223
+ readonly type: 'object';
2224
+ readonly additionalProperties: false;
2225
+ readonly properties: {
2226
+ readonly user: {
2227
+ readonly $ref: '#/$defs/id';
2228
+ };
2229
+ };
2230
+ readonly required: readonly ['user'];
2231
+ };
2232
+ };
2233
+ readonly fields: {
2234
+ readonly type: 'array';
2235
+ readonly items: {
2236
+ readonly type: 'string';
2237
+ };
2238
+ };
2239
+ readonly roles: {
2240
+ readonly type: 'array';
2241
+ readonly items: {
2242
+ readonly type: 'string';
2243
+ };
2244
+ };
2245
+ };
2246
+ readonly required: readonly ['users', 'fields', 'roles'];
2247
+ };
2248
+ };
2249
+ readonly required: readonly ['kind', 'enabled', 'title', 'text', 'to'];
2250
+ }, {
2251
+ readonly type: 'object';
2252
+ readonly additionalProperties: false;
2253
+ readonly properties: {
2254
+ readonly kind: {
2255
+ readonly const: 'routine';
2256
+ };
2257
+ readonly enabled: {
2258
+ readonly type: 'boolean';
2259
+ };
2260
+ readonly routine_access: {
2261
+ readonly $ref: '#/$defs/id';
2262
+ };
2263
+ readonly payload: {
2264
+ readonly type: 'string';
2265
+ };
2266
+ };
2267
+ readonly required: readonly ['kind', 'enabled', 'payload'];
2268
+ }, {
2269
+ readonly type: 'object';
2270
+ readonly additionalProperties: false;
2271
+ readonly properties: {
2272
+ readonly kind: {
2273
+ readonly const: 'function';
2274
+ };
2275
+ readonly enabled: {
2276
+ readonly type: 'boolean';
2277
+ };
2278
+ readonly app: {
2279
+ readonly $ref: '#/$defs/app';
2280
+ };
2281
+ readonly function: {
2282
+ readonly type: 'string';
2283
+ };
2284
+ };
2285
+ readonly required: readonly ['kind', 'enabled', 'function'];
2286
+ }];
2287
+ };
2288
+ };
2289
+ readonly enabled: {
2290
+ readonly type: 'boolean';
2291
+ };
2292
+ readonly paused_by: {
2293
+ readonly enum: readonly ['types'];
2294
+ };
2295
+ readonly creator: {
2296
+ readonly type: 'object';
2297
+ readonly additionalProperties: false;
2298
+ readonly properties: {
2299
+ readonly user: {
2300
+ readonly $ref: '#/$defs/id';
2301
+ };
2302
+ readonly name: {
2303
+ readonly type: 'string';
2304
+ };
2305
+ };
2306
+ readonly required: readonly ['user', 'name'];
2307
+ };
2308
+ readonly created: {
2309
+ readonly type: 'string';
2310
+ readonly format: 'date-time';
2311
+ };
2312
+ };
2313
+ readonly required: readonly ['reflected', 'trigger', 'description', 'condition', 'actions', 'enabled', 'creator', 'created'];
2314
+ };
2315
+ readonly 'house-web-wizard': {
2316
+ readonly description: "One Web Wizard an agent made for this User: the `environment` it runs on, with the `name` that Environment had when the Web Wizard was made, and its `state`, `waiting` until its owner presses Run or Keep, `running`, `finished` with the script's `exit_code`, `failed`, `cancelled` when its page closed before the script ended, `lapsed` when nobody ran it in its time, or `kept` when its owner kept the script, without running it, as their Environment function named `function`. Its body is the script, whole, in one fenced code block. The terminal's output is never kept.";
2317
+ readonly properties: {
2318
+ readonly reflected: {
2319
+ readonly type: 'string';
2320
+ readonly format: 'date-time';
2321
+ };
2322
+ readonly web_wizard: {
2323
+ readonly $ref: '#/$defs/id';
2324
+ };
2325
+ readonly environment: {
2326
+ readonly type: 'object';
2327
+ readonly additionalProperties: false;
2328
+ readonly properties: {
2329
+ readonly environment: {
2330
+ readonly $ref: '#/$defs/id';
2331
+ };
2332
+ readonly name: {
2333
+ readonly type: 'string';
2334
+ };
2335
+ };
2336
+ readonly required: readonly ['environment', 'name'];
2337
+ };
2338
+ readonly state: {
2339
+ readonly enum: readonly ['waiting', 'running', 'finished', 'failed', 'cancelled', 'lapsed', 'kept'];
2340
+ };
2341
+ readonly exit_code: {
2342
+ readonly type: 'integer';
2343
+ };
2344
+ readonly function: {
2345
+ readonly type: 'string';
2346
+ };
2347
+ };
2348
+ readonly required: readonly ['reflected', 'web_wizard', 'environment', 'state'];
2349
+ };
2350
+ };
2351
+ export declare const HOUSE_MODEL_TYPES: string;
2352
+ type Model = typeof HOUSE_MODEL_DECLARATION;
2353
+ type Definitions = Model['$defs'];
2354
+ export type HouseModelType = Exclude<keyof Model, '$defs'>;
2355
+ type Needed<S> = S extends {
2356
+ readonly required: readonly (infer Name)[];
2357
+ } ? Name : never;
2358
+ type Shape<T> = {
2359
+ [K in keyof T]: T[K];
2360
+ } & {};
2361
+ type Properties<S> = S extends {
2362
+ readonly properties: infer P;
2363
+ } ? Shape<{
2364
+ readonly [K in keyof P as K extends Needed<S> ? K : never]: Value<P[K]>;
2365
+ } & {
2366
+ readonly [K in keyof P as K extends Needed<S> ? never : K]?: Value<P[K]>;
2367
+ }> : S extends {
2368
+ readonly additionalProperties: false;
2369
+ } ? Readonly<Record<string, never>> : Readonly<Record<string, unknown>>;
2370
+ type Typed<T, S> = T extends 'string' ? string : T extends 'integer' | 'number' ? number : T extends 'boolean' ? boolean : T extends 'null' ? null : T extends 'array' ? readonly (S extends {
2371
+ readonly items: infer I;
2372
+ } ? Value<I> : unknown)[] : T extends 'object' ? Properties<S> : never;
2373
+ type Value<S> = S extends {
2374
+ readonly const: infer C;
2375
+ } ? C : S extends {
2376
+ readonly enum: readonly (infer E)[];
2377
+ } ? E : S extends {
2378
+ readonly anyOf: readonly (infer A)[];
2379
+ } ? Value<A> : S extends {
2380
+ readonly $ref: `#/$defs/${infer D}`;
2381
+ } ? D extends keyof Definitions ? Value<Definitions[D]> : never : S extends {
2382
+ readonly type: infer T;
2383
+ } ? Typed<T, S> : S extends {
2384
+ readonly properties: object;
2385
+ } ? Properties<S> : unknown;
2386
+ type Declared<Type extends HouseModelType> = Model[Type] extends {
2387
+ readonly properties: infer P;
2388
+ } ? P : {};
2389
+ export type HouseDocumentFields<Type extends HouseModelType> = Properties<{
2390
+ readonly properties: {
2391
+ readonly type: {
2392
+ readonly const: Type;
2393
+ };
2394
+ } & Declared<Type>;
2395
+ readonly required: readonly ('type' | Needed<Model[Type]>)[];
2396
+ }>;
2397
+ export {};
2
2398
  //# sourceMappingURL=house-model.d.ts.map