@agentshouse/mdruntime-adapter 0.1.0-cd36fe2bc9d48 → 0.1.0-cd519a0f878dc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/actions.d.ts +2 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +3 -4
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +6 -4
- package/dist/app-reference.d.ts +2 -0
- package/dist/app-reference.d.ts.map +1 -0
- package/dist/app-reference.js +2 -0
- package/dist/crockford.d.ts +4 -0
- package/dist/crockford.d.ts.map +1 -0
- package/dist/crockford.js +3 -0
- package/dist/discovery.d.ts +3 -8
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +11 -24
- package/dist/house-model.d.ts +2 -0
- package/dist/house-model.d.ts.map +1 -0
- package/dist/house-model.js +441 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/model.d.ts +5 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +11 -13
- package/dist/part.d.ts +1 -1
- package/dist/part.d.ts.map +1 -1
- package/dist/part.js +5 -8
- package/dist/read.d.ts +8 -2
- package/dist/read.d.ts.map +1 -1
- package/dist/read.js +73 -40
- package/dist/room-types.d.ts +2 -1
- package/dist/room-types.d.ts.map +1 -1
- package/dist/room-types.js +60 -2
- package/dist/site.d.ts.map +1 -1
- package/dist/site.js +9 -6
- package/dist/stream.js +1 -1
- package/dist/transport.d.ts +1 -1
- package/dist/transport.d.ts.map +1 -1
- package/dist/upload.d.ts.map +1 -1
- package/dist/upload.js +25 -14
- package/package.json +8 -4
- package/AGENTS.md +0 -317
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
export const HOUSE_MODEL_TYPES = `$defs:
|
|
2
|
+
room:
|
|
3
|
+
description: A Room, by its Room reference, under the key \`room\`.
|
|
4
|
+
type: string
|
|
5
|
+
pattern: '^r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$'
|
|
6
|
+
app:
|
|
7
|
+
description: An App, by its App reference, under the key \`app\`.
|
|
8
|
+
type: string
|
|
9
|
+
pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$'
|
|
10
|
+
document:
|
|
11
|
+
description: A document of a Room, by its file reference, under the key \`document\`.
|
|
12
|
+
type: string
|
|
13
|
+
pattern: '^af_([123456789abcdefghjkmnpqrstvwxyz][0123456789abcdefghjkmnpqrstvwxyz]*)\\.([0123456789abcdefghjkmnpqrstvwxyz])$'
|
|
14
|
+
id:
|
|
15
|
+
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.
|
|
16
|
+
type: string
|
|
17
|
+
format: uuid
|
|
18
|
+
namespace:
|
|
19
|
+
description: The Namespace a grant entry covers, an App or a Room by its reference with the area of it.
|
|
20
|
+
type: string
|
|
21
|
+
maxLength: 512
|
|
22
|
+
pattern: '^(?:a_[A-Za-z0-9._-]+(?:\\/source)?|r_[A-Za-z0-9._-]+(?:\\/(?:settings|settings\\/schema|settings\\/model|settings\\/indexing|content))?)$'
|
|
23
|
+
request:
|
|
24
|
+
description: One Routine Request of a Room.
|
|
25
|
+
type: object
|
|
26
|
+
additionalProperties: false
|
|
27
|
+
properties:
|
|
28
|
+
routine_request: { $ref: '#/$defs/id' }
|
|
29
|
+
conversation: { $ref: '#/$defs/id' }
|
|
30
|
+
origin: { enum: [ user, trigger ] }
|
|
31
|
+
state: { enum: [ awaiting_approval, started, finished, not_started, withdrawn_by_author, withdrawn_admission, declined ] }
|
|
32
|
+
target: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] }
|
|
33
|
+
record: { $ref: '#/$defs/id' }
|
|
34
|
+
routine_access: { $ref: '#/$defs/id' }
|
|
35
|
+
agent: { $ref: '#/$defs/id' }
|
|
36
|
+
routine: { type: object, additionalProperties: false, properties: { name: { type: string }, version: { type: integer, exclusiveMinimum: 0 } }, minProperties: 1 }
|
|
37
|
+
approved: { type: string, format: date-time }
|
|
38
|
+
approved_by: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] }
|
|
39
|
+
settled_by: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' } }, required: [ user ] }
|
|
40
|
+
failure_category: { enum: [ routine_access_not_found, routine_retired, target_agent_unavailable, agent_unavailable, admission_lapsed ] }
|
|
41
|
+
created: { type: string, format: date-time }
|
|
42
|
+
activated: { type: string, format: date-time }
|
|
43
|
+
settled: { type: string, format: date-time }
|
|
44
|
+
environment_starting: { const: true }
|
|
45
|
+
result: { type: string }
|
|
46
|
+
url: { type: string, format: uri }
|
|
47
|
+
required: [ routine_request, origin, state, target, created ]
|
|
48
|
+
house-account:
|
|
49
|
+
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 a Telegram bot and no Telegram account is linked to it, \`linked\` while one is, \`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, and \`building: administrator\` while the User is one of the Building's administrators."
|
|
50
|
+
properties:
|
|
51
|
+
reflected: { type: string, format: date-time }
|
|
52
|
+
user: { $ref: '#/$defs/id' }
|
|
53
|
+
email_verified: { type: string, format: date-time }
|
|
54
|
+
language: { enum: [ en ] }
|
|
55
|
+
notifications: { type: array, items: { type: object, additionalProperties: false, properties: { group: { type: string }, channels: { type: array, items: { type: string } } }, required: [ group, channels ] } }
|
|
56
|
+
created: { type: string, format: date-time }
|
|
57
|
+
telegram: { enum: [ available, linked ] }
|
|
58
|
+
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 ] }
|
|
59
|
+
tiktok: { enum: [ available ] }
|
|
60
|
+
building: { enum: [ administrator ] }
|
|
61
|
+
required: [ reflected, user, email_verified, notifications, created ]
|
|
62
|
+
house-agent:
|
|
63
|
+
description: One registered Agent this User owns.
|
|
64
|
+
properties:
|
|
65
|
+
reflected: { type: string, format: date-time }
|
|
66
|
+
agent: { type: string, format: uuid }
|
|
67
|
+
name: { type: string }
|
|
68
|
+
profile: { type: string, format: uuid }
|
|
69
|
+
environment: { type: string, format: uuid }
|
|
70
|
+
launch_directory: { type: string }
|
|
71
|
+
declared: { type: string, format: date-time }
|
|
72
|
+
retired: { type: string, format: date-time }
|
|
73
|
+
required: [ reflected, agent, name, profile, environment, launch_directory, declared ]
|
|
74
|
+
house-agent-profile:
|
|
75
|
+
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.
|
|
76
|
+
properties:
|
|
77
|
+
reflected: { type: string, format: date-time }
|
|
78
|
+
profile: { type: string, format: uuid }
|
|
79
|
+
name: { type: string }
|
|
80
|
+
revision: { type: integer, minimum: 0 }
|
|
81
|
+
adapter_kind: { type: string }
|
|
82
|
+
model: { type: string }
|
|
83
|
+
effort: { type: string }
|
|
84
|
+
mode: { type: string }
|
|
85
|
+
arguments: { type: array, items: { type: string } }
|
|
86
|
+
required: [ reflected, profile, name, revision ]
|
|
87
|
+
house-app:
|
|
88
|
+
description: One App this User owns, holds or installed, \`ownership\` naming whether it is its own or one it holds, 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 with the external origins it declares as \`external_origins\`, whether its code reaches this User's conversations as \`conversations\` and the Room slots it declares in order as \`room_slots\`, each installation this User holds, and every User who holds the App as \`holders\`, this User and its owner included, by name. Each installation entry names the installation, the App's running release and when it was installed. Each features entry names a browser feature of an App this User does not own and whether this User allowed or denied it 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\`.
|
|
89
|
+
properties:
|
|
90
|
+
reflected: { type: string, format: date-time }
|
|
91
|
+
app: { type: string, format: uuid }
|
|
92
|
+
app_ref: { type: string, pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
93
|
+
address: { type: string, pattern: '^\\/app\\/a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
94
|
+
display_name: { type: string }
|
|
95
|
+
ownership: { enum: [ own, held ] }
|
|
96
|
+
owner_name: { type: string }
|
|
97
|
+
created: { type: string, format: date-time }
|
|
98
|
+
forked_from: { type: string, format: uuid }
|
|
99
|
+
tab_icon_light: { type: string, pattern: ^data:image\\/ }
|
|
100
|
+
tab_icon_dark: { type: string, pattern: ^data:image\\/ }
|
|
101
|
+
tab_icon_colours: { type: array, items: { type: string, pattern: '^#[0-9a-f]{6}$' } }
|
|
102
|
+
tab_icon_blend: { enum: [ linear, radial ] }
|
|
103
|
+
tab_icon_angle: { type: integer, minimum: 0, maximum: 359 }
|
|
104
|
+
latest_release: { type: string, pattern: '^(?<release>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\t(?<sequence>\\d+)$' }
|
|
105
|
+
external_origins: { type: array, items: { type: string, format: uri } }
|
|
106
|
+
conversations: { enum: [ yes, no ] }
|
|
107
|
+
room_slots: { type: string, contentMediaType: application/json, contentSchema: { type: array, items: { type: object, properties: { slot: { type: string }, access: { type: string, enum: [ read, write ] }, types: { type: array, items: { type: string } } }, required: [ slot, access, types ], additionalProperties: false } } }
|
|
108
|
+
installations: { type: array, items: { type: string, pattern: '^(?<installation>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\t(?<release>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\t(?<installed>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z)$' } }
|
|
109
|
+
holders: { type: string, contentMediaType: application/json, contentSchema: { type: array, items: { type: object, properties: { user: { type: string, format: uuid }, name: { type: string }, email: { type: string } }, required: [ user, name, email ], additionalProperties: false } } }
|
|
110
|
+
features: { type: array, items: { type: string, pattern: ^(?<feature>microphone|camera|geolocation|clipboard-read|notifications)\\t(?<consent>allowed|denied)$ } }
|
|
111
|
+
features_version: { type: integer, exclusiveMinimum: 0 }
|
|
112
|
+
required: [ reflected, app, app_ref, address, display_name, ownership, created ]
|
|
113
|
+
house-app-preferences:
|
|
114
|
+
description: An App's preferences. Its own vocabulary is in the body.
|
|
115
|
+
properties:
|
|
116
|
+
app: { type: string, pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
117
|
+
required: [ app ]
|
|
118
|
+
house-app-room-binding:
|
|
119
|
+
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, 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, \`unchecked\`, \`compatible\` or \`incompatible\`. 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."
|
|
120
|
+
properties:
|
|
121
|
+
reflected: { type: string, format: date-time }
|
|
122
|
+
app: { type: string, format: uuid }
|
|
123
|
+
app_ref: { type: string, pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
124
|
+
slot: { type: string, pattern: '^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }
|
|
125
|
+
types: { type: array, items: { type: string } }
|
|
126
|
+
slot_access: { enum: [ read, write ] }
|
|
127
|
+
shared_schema: { type: string, format: uuid }
|
|
128
|
+
shared_schema_compatibility: { enum: [ unchecked, compatible, incompatible ] }
|
|
129
|
+
shared_schema_findings: { type: array, items: { type: string } }
|
|
130
|
+
rooms: { enum: [ all, all_but_private ] }
|
|
131
|
+
left_out: { type: integer, minimum: 0 }
|
|
132
|
+
entries: { type: array, items: { type: string, pattern: '^(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz]))\\t(?<compatibility>unchecked|compatible|incompatible)$' } }
|
|
133
|
+
findings: { type: array, items: { type: string, pattern: '^(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz]))\\t(?<finding>[\\s\\S]+)$' } }
|
|
134
|
+
required: [ reflected, app, app_ref, slot ]
|
|
135
|
+
house-client:
|
|
136
|
+
description: One MCP client this User authorized, named as it was created. Its last use and whether its credentials expired are read on request.
|
|
137
|
+
properties:
|
|
138
|
+
reflected: { type: string, format: date-time }
|
|
139
|
+
client: { $ref: '#/$defs/id' }
|
|
140
|
+
name: { type: string }
|
|
141
|
+
kind: { enum: [ browser, headless ] }
|
|
142
|
+
created: { type: string, format: date-time }
|
|
143
|
+
ended: { type: string, format: date-time }
|
|
144
|
+
end: { enum: [ revoked ] }
|
|
145
|
+
required: [ reflected, client, name, kind, created ]
|
|
146
|
+
house-environment:
|
|
147
|
+
description: "One Environment this User holds, with its configuration, its \`label\`, the name its User entered, the Rooms it reaches, \`all\`, \`all_but_private\` or the \`selected\` ones \`rooms\` names by reference, \`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\`. \`hosting\` is the kind of Environment House runs, \`sandbox\`, a small Environment with limited capacity, especially disk, or \`vps\`, an always-on Environment 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 is JSON naming the adapter kind, its installed \`release\` 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\` is JSON naming 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, \`kit_wire\` the number of the Kit wire it speaks, and \`form\` the computer's form, \`laptop\`, \`desktop\` or \`server\`, as the Kit last reported them; \`house_wire\` is the number of the Kit wire House speaks now. 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 and \`ssh_host_key\` the SSH host-key fingerprint its Kit reported."
|
|
148
|
+
properties:
|
|
149
|
+
reflected: { type: string, format: date-time }
|
|
150
|
+
environment: { type: string, format: uuid }
|
|
151
|
+
label: { type: string }
|
|
152
|
+
issued: { type: string, format: date-time }
|
|
153
|
+
revoked: { type: string, format: date-time }
|
|
154
|
+
reach: { enum: [ all, all_but_private, selected ] }
|
|
155
|
+
rooms: { type: array, items: { type: string, pattern: ^(?<room>\\S+)$ } }
|
|
156
|
+
login_code: { enum: [ yes, no ] }
|
|
157
|
+
hosting: { enum: [ sandbox, vps, own ] }
|
|
158
|
+
lifecycle: { enum: [ provisioning, starting, available, stopped, failed ] }
|
|
159
|
+
offered: { type: array, items: { type: string, pattern: ^(?<kind>\\S+)$ } }
|
|
160
|
+
wanted: { type: array, items: { type: string, pattern: ^(?<kind>\\S+)$ } }
|
|
161
|
+
agents: { type: array, items: { type: string, contentMediaType: application/json, contentSchema: { type: object, properties: { kind: { type: string, minLength: 1, maxLength: 64 }, release: { anyOf: [ { type: string, minLength: 1, maxLength: 64 }, { type: 'null' } ] }, minimum: { description: "Present only for a CLI below its adapter's minimum release: 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 release and failure are then null.', type: boolean, const: true }, signed_in: { type: boolean }, models: { maxItems: 256, type: array, items: { type: object, properties: { model: { type: string, minLength: 1 }, efforts: { maxItems: 32, type: array, items: { type: string, minLength: 1 } } }, required: [ model, efforts ], additionalProperties: false } }, modes: { maxItems: 32, type: array, items: { type: object, properties: { mode: { type: string, minLength: 1 }, name: { type: string, minLength: 1, maxLength: 128 } }, required: [ mode, name ], additionalProperties: false } }, full_access: { anyOf: [ { type: string, minLength: 1 }, { type: 'null' } ] } }, required: [ kind, release, failure, signed_in, models, modes, full_access ], additionalProperties: false } } }
|
|
162
|
+
transcribe: { enum: [ on, off ] }
|
|
163
|
+
transcription: { type: string, contentMediaType: application/json, contentSchema: { type: object, properties: { installed: { type: boolean }, failure: { anyOf: [ { type: string, minLength: 1, maxLength: 4096 }, { type: 'null' } ] } }, required: [ installed, failure ], additionalProperties: false } }
|
|
164
|
+
os: { type: string }
|
|
165
|
+
kit_release: { type: string }
|
|
166
|
+
kit_wire: { type: integer, exclusiveMinimum: 0 }
|
|
167
|
+
house_wire: { type: integer, exclusiveMinimum: 0 }
|
|
168
|
+
form: { enum: [ laptop, desktop, server ] }
|
|
169
|
+
failed: { enum: [ provisioning_failed, bootstrap_timeout, provider_capacity, provider_unavailable, provider_removed, placement_conflict, placement_intervention, environment_authority_unavailable ] }
|
|
170
|
+
budget: { type: string, pattern: ^(?<budget>\\d+(?:\\.\\d+)?)$ }
|
|
171
|
+
budget_spent: { enum: [ yes, no ] }
|
|
172
|
+
ssh: { type: string, pattern: ^root@(?<address>\\S+)$ }
|
|
173
|
+
ssh_host_key: { type: string }
|
|
174
|
+
required: [ reflected, environment, label, issued, reach, hosting, offered, transcribe ]
|
|
175
|
+
house-exports:
|
|
176
|
+
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\`.
|
|
177
|
+
properties:
|
|
178
|
+
reflected: { type: string, format: date-time }
|
|
179
|
+
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 ] } }
|
|
180
|
+
required: [ reflected ]
|
|
181
|
+
house-external-account:
|
|
182
|
+
description: "One outside account this User owns, or may use through a Room it is added to, \`ownership\` naming which, never its key: the origin it is sent to, the \`form\` it is sent in, its \`kind\` with the header or query parameter \`name\` or the path \`prefix\`, the address of its origin's icon once House kept one, and as \`connections\` each App slot connected to it in a Room this User belongs to, with that Room. To its owner, \`rooms\` names each Room the account is added to, the Schema Roles that may use it there and whether its use there is \`suspended\` until its owner adds it again."
|
|
183
|
+
properties:
|
|
184
|
+
reflected: { type: string, format: date-time }
|
|
185
|
+
external_account: { $ref: '#/$defs/id' }
|
|
186
|
+
name: { type: string }
|
|
187
|
+
origin: { type: string, format: uri }
|
|
188
|
+
form: { type: object, additionalProperties: false, properties: { kind: { enum: [ bearer, header, query, basic, path ] }, name: { type: string }, prefix: { type: string } }, required: [ kind ] }
|
|
189
|
+
ownership: { enum: [ own, used ] }
|
|
190
|
+
icon: { type: string, pattern: '^\\/external-accounts\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\/icon$' }
|
|
191
|
+
rooms: { type: array, items: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, schema_roles: { type: array, items: { type: string } }, suspended: { type: boolean } }, required: [ room, schema_roles, suspended ] } }
|
|
192
|
+
connections: { 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: { $ref: '#/$defs/room' } }, required: [ app, slot, room ] } }
|
|
193
|
+
required: [ reflected, external_account, name, origin, form, ownership ]
|
|
194
|
+
house-member:
|
|
195
|
+
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.
|
|
196
|
+
properties:
|
|
197
|
+
reflected: { type: string, format: date-time }
|
|
198
|
+
user: { $ref: '#/$defs/id' }
|
|
199
|
+
name: { type: string }
|
|
200
|
+
about_me: { type: string }
|
|
201
|
+
required: [ reflected, user, name ]
|
|
202
|
+
house-notification:
|
|
203
|
+
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."
|
|
204
|
+
properties:
|
|
205
|
+
notification: { $ref: '#/$defs/id' }
|
|
206
|
+
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 ] }
|
|
207
|
+
created: { type: string, format: date-time }
|
|
208
|
+
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 }
|
|
209
|
+
subject: { type: string }
|
|
210
|
+
share: { $ref: '#/$defs/id' }
|
|
211
|
+
issuer: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }
|
|
212
|
+
rooms: { type: array, items: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] } }
|
|
213
|
+
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 ] } }
|
|
214
|
+
expires_at: { type: string, format: date-time }
|
|
215
|
+
join_request: { $ref: '#/$defs/id' }
|
|
216
|
+
user: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }
|
|
217
|
+
room: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, name: { type: string } }, minProperties: 1 }
|
|
218
|
+
app: { type: object, additionalProperties: false, properties: { app: { $ref: '#/$defs/app' }, name: { type: string } }, minProperties: 1 }
|
|
219
|
+
binding: { $ref: '#/$defs/id' }
|
|
220
|
+
slot: { type: string }
|
|
221
|
+
findings: { type: array, items: { type: string } }
|
|
222
|
+
owner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }
|
|
223
|
+
caller: { type: object, additionalProperties: false, properties: { user: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ user, name ] }
|
|
224
|
+
ownership_offer: { $ref: '#/$defs/id' }
|
|
225
|
+
offerer: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }
|
|
226
|
+
environment: { type: object, additionalProperties: false, properties: { environment: { $ref: '#/$defs/id' }, name: { type: string }, kind: { enum: [ vps, sandbox ] } }, required: [ environment, name ] }
|
|
227
|
+
reason: { type: string }
|
|
228
|
+
deadline: { type: string, format: date-time }
|
|
229
|
+
operation_kind: { type: string }
|
|
230
|
+
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 ] }
|
|
231
|
+
budget: { type: string, pattern: ^\\d+(?:\\.\\d+)?$ }
|
|
232
|
+
resets_at: { type: string, format: date-time }
|
|
233
|
+
grant: { $ref: '#/$defs/id' }
|
|
234
|
+
category: { type: string }
|
|
235
|
+
access_started_at: { type: string, format: date-time }
|
|
236
|
+
access_ended_at: { type: string, format: date-time }
|
|
237
|
+
systems: { type: array, items: { type: string } }
|
|
238
|
+
case_reference: { type: string }
|
|
239
|
+
routine_request: { $ref: '#/$defs/id' }
|
|
240
|
+
requester: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }
|
|
241
|
+
agent: { type: object, additionalProperties: false, properties: { agent: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ name ] }
|
|
242
|
+
conversation: { $ref: '#/$defs/id' }
|
|
243
|
+
routine: { type: object, additionalProperties: false, properties: { routine: { $ref: '#/$defs/id' }, name: { type: string }, version: { type: integer, minimum: 1 } }, required: [ name ] }
|
|
244
|
+
decliner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }
|
|
245
|
+
input: { type: string }
|
|
246
|
+
export: { $ref: '#/$defs/id' }
|
|
247
|
+
size_bytes: { type: integer, minimum: 0 }
|
|
248
|
+
site: { type: object, additionalProperties: false, properties: { site: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ site, name ] }
|
|
249
|
+
address: { type: string, maxLength: 300, format: uri }
|
|
250
|
+
to: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }
|
|
251
|
+
copies: { type: integer, minimum: 0 }
|
|
252
|
+
bound: { type: integer, minimum: 0 }
|
|
253
|
+
title: { type: string }
|
|
254
|
+
body: { type: string }
|
|
255
|
+
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 ] }
|
|
256
|
+
path: { type: string, maxLength: 4096, pattern: ^\\/.* }
|
|
257
|
+
trigger: { type: object, additionalProperties: false, properties: { trigger: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ trigger, name ] }
|
|
258
|
+
cause: { type: string }
|
|
259
|
+
required: [ notification, kind, created, way_in, subject ]
|
|
260
|
+
house-ownership-offer:
|
|
261
|
+
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.
|
|
262
|
+
properties:
|
|
263
|
+
reflected: { type: string, format: date-time }
|
|
264
|
+
ownership_offer: { $ref: '#/$defs/id' }
|
|
265
|
+
room: { type: object, additionalProperties: false, properties: { room: { $ref: '#/$defs/room' }, name: { type: string } }, required: [ room, name ] }
|
|
266
|
+
from: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }
|
|
267
|
+
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}$' }
|
|
268
|
+
created: { type: string, format: date-time }
|
|
269
|
+
expires: { type: string, format: date-time }
|
|
270
|
+
required: [ reflected, ownership_offer, room, from, page, created, expires ]
|
|
271
|
+
house-panel-preferences:
|
|
272
|
+
description: The panel's preferences at /rooms/private/settings/panel.md. Its own vocabulary is in the body.
|
|
273
|
+
properties: {}
|
|
274
|
+
house-profile:
|
|
275
|
+
description: The User's display name, the email they sign in with and accepted about-me Markdown.
|
|
276
|
+
properties:
|
|
277
|
+
reflected: { type: string, format: date-time }
|
|
278
|
+
name: { type: string }
|
|
279
|
+
email: { type: string }
|
|
280
|
+
about_me: { type: string }
|
|
281
|
+
required: [ reflected, name, email ]
|
|
282
|
+
house-public-room:
|
|
283
|
+
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.
|
|
284
|
+
properties:
|
|
285
|
+
reflected: { type: string, format: date-time }
|
|
286
|
+
room: { $ref: '#/$defs/room' }
|
|
287
|
+
handle: { type: string, minLength: 6, maxLength: 63, pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$' }
|
|
288
|
+
name: { type: string }
|
|
289
|
+
archived: { type: string, format: date-time }
|
|
290
|
+
required: [ reflected, room, handle, name ]
|
|
291
|
+
house-push-address:
|
|
292
|
+
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\`."
|
|
293
|
+
properties:
|
|
294
|
+
reflected: { type: string, format: date-time }
|
|
295
|
+
push_address: { $ref: '#/$defs/id' }
|
|
296
|
+
room: { $ref: '#/$defs/room' }
|
|
297
|
+
source: { type: string }
|
|
298
|
+
event_header: { type: string }
|
|
299
|
+
event_json: { type: string }
|
|
300
|
+
required: [ reflected, push_address, room, source ]
|
|
301
|
+
house-requests:
|
|
302
|
+
description: "The Routine Requests of one Room this User reads by Local Read: 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 fact it does not hold is absent. Only the Agent’s owner sees a request’s conversation. A Room with no request has no such document."
|
|
303
|
+
properties:
|
|
304
|
+
reflected: { type: string, format: date-time }
|
|
305
|
+
room: { $ref: '#/$defs/room' }
|
|
306
|
+
current: { type: array, items: { $ref: '#/$defs/request' } }
|
|
307
|
+
history: { type: array, items: { $ref: '#/$defs/request' } }
|
|
308
|
+
required: [ reflected, room, current, history ]
|
|
309
|
+
house-room:
|
|
310
|
+
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. \`read\` is how this User reads the Room, \`mcp\`, \`online\` or \`local\`, 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 read 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."
|
|
311
|
+
properties:
|
|
312
|
+
reflected: { type: string, format: date-time }
|
|
313
|
+
room: { $ref: '#/$defs/room' }
|
|
314
|
+
handle: { type: string, minLength: 6, maxLength: 63, pattern: '^[a-z0-9]+(?:-[a-z0-9]+)*$' }
|
|
315
|
+
name: { type: string }
|
|
316
|
+
my_room: { const: true }
|
|
317
|
+
membership: { enum: [ owner, member ] }
|
|
318
|
+
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 ] }
|
|
319
|
+
access: { enum: [ owner, manage, edit, read ] }
|
|
320
|
+
read: { enum: [ mcp, online, local ] }
|
|
321
|
+
operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } }
|
|
322
|
+
owner: { type: object, additionalProperties: false, properties: { name: { type: string } }, required: [ name ] }
|
|
323
|
+
members: { type: integer, minimum: 0 }
|
|
324
|
+
triggers: { type: integer, minimum: 0 }
|
|
325
|
+
published: { enum: [ yes, no ] }
|
|
326
|
+
intake: { enum: [ yes, no ] }
|
|
327
|
+
size: { type: number }
|
|
328
|
+
admission: { enum: [ admitted, pending ] }
|
|
329
|
+
created: { type: string, format: date-time }
|
|
330
|
+
archived: { type: string, format: date-time }
|
|
331
|
+
public: { type: string, format: date-time }
|
|
332
|
+
policy: { enum: [ On, Off ] }
|
|
333
|
+
indexing: { type: array, items: { type: object, additionalProperties: false, properties: { path: { type: string, minLength: 1 }, policy: { enum: [ On, Off ] } }, required: [ path, policy ] } }
|
|
334
|
+
shared_schema: { type: object, additionalProperties: false, properties: { shared_schema: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ shared_schema, name ] }
|
|
335
|
+
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, read ] }, document: { $ref: '#/$defs/document' }, schema_roles: { type: array, items: { type: string } }, held: { type: object, additionalProperties: false, properties: { read: { anyOf: [ { type: string, enum: [ mcp, online, local ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } } }, required: [ read, operations ] } }, required: [ user, name, owner, email ] } }
|
|
336
|
+
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' }, read: { anyOf: [ { type: string, enum: [ mcp, online, local ] }, { 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' }, read: { anyOf: [ { type: string, enum: [ mcp, online, local ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } } }, required: [ kind, namespace, read, operations ] } } }, required: [ namespace, read, operations, sources ] } }, direct: { type: array, items: { type: object, additionalProperties: false, properties: { namespace: { $ref: '#/$defs/namespace' }, read: { anyOf: [ { type: string, enum: [ mcp, online, local ] }, { type: 'null' } ] }, operations: { type: array, items: { type: string, enum: [ write, delete, export, manageAccess ] } } }, required: [ namespace, read, operations ] } }, admitted: { type: string, format: date-time }, schema_roles: { type: array, items: { type: string } } }, required: [ user, name, entries, direct, schema_roles ] } }
|
|
337
|
+
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 ] } }
|
|
338
|
+
required: [ reflected, room, name, membership, access, admission, created, policy ]
|
|
339
|
+
house-routine-access:
|
|
340
|
+
description: "One Routine Access this User granted, with the name of its Routine in \`routine_name\`. While a scope is \`selected_users\`, each invokers or starters entry names one User by identifier, 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 by its reference 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 and its reason."
|
|
341
|
+
properties:
|
|
342
|
+
reflected: { type: string, format: date-time }
|
|
343
|
+
access: { type: string, format: uuid }
|
|
344
|
+
routine: { type: string, format: uuid }
|
|
345
|
+
routine_name: { type: string }
|
|
346
|
+
agent: { type: string, format: uuid }
|
|
347
|
+
room: { type: string, pattern: '^r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
348
|
+
invoker_scope: { type: string, enum: [ all_members, selected_users ] }
|
|
349
|
+
start_scope: { type: string, enum: [ none, all_admitted, selected_users ] }
|
|
350
|
+
follow_up_scope: { type: string, enum: [ none, all_admitted, selected_users ] }
|
|
351
|
+
granted: { type: string, format: date-time }
|
|
352
|
+
revoked: { type: string, format: date-time }
|
|
353
|
+
invokers: { type: array, items: { type: string, pattern: '^(?:(?<user>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\\t(?<email>\\S+)\\t(?<name>[\\s\\S]+))?|(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])))$' } }
|
|
354
|
+
starters: { type: array, items: { type: string, pattern: '^(?:(?<user>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\\t(?<email>\\S+)\\t(?<name>[\\s\\S]+))?|(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])))$' } }
|
|
355
|
+
follow_ups: { type: array, items: { type: string, pattern: '^(?<user>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?:\\t(?<email>\\S+)\\t(?<name>[\\s\\S]+))?$' } }
|
|
356
|
+
allowance: { type: integer, minimum: 0 }
|
|
357
|
+
allowances: { type: array, items: { type: string, pattern: '^(?:(?<user>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})|(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])))(?:\\t(?<daily_requests>\\d+))?$' } }
|
|
358
|
+
mail_allowance: { type: integer, minimum: 0 }
|
|
359
|
+
mail_allowances: { type: array, items: { type: string, pattern: '^(?<user>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\t(?<daily_mail>\\d+)$' } }
|
|
360
|
+
last_failure: { type: string, pattern: '^(?<origin>user|trigger)\\t(?<at>\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z)\\t(?<reason>[\\s\\S]+)$' }
|
|
361
|
+
required: [ reflected, access, routine, routine_name, agent, room, invoker_scope, start_scope, follow_up_scope, granted ]
|
|
362
|
+
house-share:
|
|
363
|
+
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 \`read\` 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."
|
|
364
|
+
properties:
|
|
365
|
+
reflected: { type: string, format: date-time }
|
|
366
|
+
share: { $ref: '#/$defs/id' }
|
|
367
|
+
share_link: { enum: [ yes, no ] }
|
|
368
|
+
share_to: { type: string, format: email }
|
|
369
|
+
items: { type: array, items: { type: object, additionalProperties: false, properties: { kind: { enum: [ room, app ] }, name: { type: string }, state: { enum: [ offerable, held, accepted, declined, superseded ] }, read: { enum: [ mcp, online, local ] }, 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 ] } }
|
|
370
|
+
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 ] } }
|
|
371
|
+
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 ] } }
|
|
372
|
+
created: { type: string, format: date-time }
|
|
373
|
+
expires: { type: string, format: date-time }
|
|
374
|
+
required: [ reflected, share, share_link, created, expires ]
|
|
375
|
+
house-share-offer:
|
|
376
|
+
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 \`read\` level it grants and the \`operations\` it grants; it carries no reference. A Room item's read 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."
|
|
377
|
+
properties:
|
|
378
|
+
reflected: { type: string, format: date-time }
|
|
379
|
+
share: { $ref: '#/$defs/id' }
|
|
380
|
+
from: { type: object, additionalProperties: false, properties: { name: { type: string }, email: { type: string, format: email } }, required: [ name, email ] }
|
|
381
|
+
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}$' }
|
|
382
|
+
items: { type: array, items: { type: object, additionalProperties: false, properties: { kind: { enum: [ room, app ] }, name: { type: string }, state: { enum: [ offerable, held, accepted, declined, superseded ] }, read: { enum: [ mcp, online, local ] }, 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 ] } }
|
|
383
|
+
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 ] } }
|
|
384
|
+
created: { type: string, format: date-time }
|
|
385
|
+
expires: { type: string, format: date-time }
|
|
386
|
+
required: [ reflected, share, from, page, created, expires ]
|
|
387
|
+
house-site:
|
|
388
|
+
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, its title and Intake Room, whether an operator disabled it, its mode, and every Room slot of that release in its order. Each slot entry names the slot, one Room its list holds, that entry's address segment and the last compatibility outcome of that entry, in list order, or the slot and \`empty\` for a slot that lists no Room; 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. \`google_analytics_id\` 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: why (\`over_bound\`, \`query_refused\` or \`unavailable\`), the route and when; 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, its state \`pending\`, \`active\` or \`failed\`, the DNS alias target its hostname must point at, which is this environment's and the same for every domain, and the edge's reason when it gives one."
|
|
389
|
+
properties:
|
|
390
|
+
reflected: { type: string, format: date-time }
|
|
391
|
+
site: { type: string, format: uuid }
|
|
392
|
+
name: { type: string }
|
|
393
|
+
address: { type: string, format: uri }
|
|
394
|
+
addresses: { type: array, items: { type: string, format: uri } }
|
|
395
|
+
primary_address: { type: string, format: uri }
|
|
396
|
+
domains: { type: array, items: { type: string, pattern: '^(?<host>\\S+)\\t(?<state>pending|active|failed)\\t(?<dns_target>\\S+)(?:\\t(?<reason>[\\s\\S]+))?$' } }
|
|
397
|
+
app: { type: string, format: uuid }
|
|
398
|
+
app_ref: { type: string, pattern: '^a_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
399
|
+
tab_icon_light: { type: string, pattern: ^data:image\\/ }
|
|
400
|
+
tab_icon_dark: { type: string, pattern: ^data:image\\/ }
|
|
401
|
+
tab_icon_colours: { type: array, items: { type: string, pattern: '^#[0-9a-f]{6}$' } }
|
|
402
|
+
tab_icon_blend: { enum: [ linear, radial ] }
|
|
403
|
+
tab_icon_angle: { type: integer, minimum: 0, maximum: 359 }
|
|
404
|
+
release: { type: string, pattern: '^(?<release>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\\t(?<sequence>\\d+)$' }
|
|
405
|
+
title: { type: string }
|
|
406
|
+
description: { type: string }
|
|
407
|
+
screenshot: { type: string, format: uri }
|
|
408
|
+
google_analytics_id: { type: string, pattern: '^G-[A-Z0-9]{1,32}$' }
|
|
409
|
+
intake_room: { type: string, pattern: '^r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz])$' }
|
|
410
|
+
external_origins: { type: array, items: { type: string, format: uri } }
|
|
411
|
+
disabled: { enum: [ yes, no ] }
|
|
412
|
+
disabled_reason: { type: string }
|
|
413
|
+
mode: { enum: [ snapshot, live ] }
|
|
414
|
+
unpublished: { enum: [ yes, no ] }
|
|
415
|
+
suspended: { enum: [ yes, no ] }
|
|
416
|
+
suspended_reason: { type: string, enum: [ full_house_required, public_delivery_limit ] }
|
|
417
|
+
public_overage: { enum: [ on, off ] }
|
|
418
|
+
publication: { type: string, format: uuid }
|
|
419
|
+
acts: { type: array, items: { type: string, enum: [ unpublish, republish ] } }
|
|
420
|
+
indexing: { enum: [ yes, no ] }
|
|
421
|
+
entry_fallback: { type: string, pattern: ^(?<cause>over_bound|query_refused|unavailable)\\t(?<route>\\S+)\\t(?<recorded>\\S+)$ }
|
|
422
|
+
created: { type: string, format: date-time }
|
|
423
|
+
new_browsers: { type: integer, minimum: 0 }
|
|
424
|
+
submissions: { type: integer, minimum: 0 }
|
|
425
|
+
notify_me: { enum: [ on, off ] }
|
|
426
|
+
image_copies: { type: integer, minimum: 0 }
|
|
427
|
+
image_copy_bound: { type: integer, minimum: 0 }
|
|
428
|
+
image_copy_limit_reached: { enum: [ yes, no ] }
|
|
429
|
+
slots: { type: array, items: { type: string, pattern: '^(?<slot>[a-z0-9]([a-z0-9-]*[a-z0-9])?)\\t(?:(?<empty>empty)|(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz]))\\t(?<segment>\\S+)\\t(?<compatibility>unchecked|compatible|incompatible))$' } }
|
|
430
|
+
findings: { type: array, items: { type: string, pattern: '^(?<slot>[a-z0-9]([a-z0-9-]*[a-z0-9])?)\\t(?<room>r_([0123456789abcdefghjkmnpqrstvwxyz]+)\\.([0123456789abcdefghjkmnpqrstvwxyz]))\\t(?<finding>[\\s\\S]+)$' } }
|
|
431
|
+
required: [ reflected, site, name, address, primary_address, app, app_ref, disabled, mode, unpublished, suspended, public_overage, indexing, created, new_browsers, submissions, notify_me, image_copies, image_copy_bound, image_copy_limit_reached ]
|
|
432
|
+
house-web-wizard:
|
|
433
|
+
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."
|
|
434
|
+
properties:
|
|
435
|
+
reflected: { type: string, format: date-time }
|
|
436
|
+
web_wizard: { $ref: '#/$defs/id' }
|
|
437
|
+
environment: { type: object, additionalProperties: false, properties: { environment: { $ref: '#/$defs/id' }, name: { type: string } }, required: [ environment, name ] }
|
|
438
|
+
state: { enum: [ waiting, running, finished, failed, cancelled, lapsed ] }
|
|
439
|
+
exit_code: { type: integer }
|
|
440
|
+
required: [ reflected, web_wizard, environment, state ]
|
|
441
|
+
`;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export { createAgentsHouseAdapter, type AgentsHouseAdapterOptions } from './adapter.js';
|
|
2
2
|
export { finishedUpload, houseUpload, type HouseUpload } from './upload.js';
|
|
3
|
-
export { HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS } from './actions.js';
|
|
4
|
-
export {
|
|
3
|
+
export { HISTORY_PAGE, HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS, TRIGGER_ROOMS, } from './actions.js';
|
|
4
|
+
export { APP_REFERENCE_PATTERN } from './app-reference.js';
|
|
5
|
+
export { HOUSE_MODEL_TYPES } from './house-model.js';
|
|
6
|
+
export { CROCKFORD_ALPHABET, CROCKFORD_CHARACTER, CROCKFORD_LEADING_CHARACTER, } from './crockford.js';
|
|
7
|
+
export { HOUSE_NAMEABLE_ROOM_TYPES, HOUSE_ROOM_TYPES, INBOX_CHANNEL_KINDS, INBOX_CHAT_TYPE, INBOX_MESSAGE_TYPE, type InboxChannelKind, } from './room-types.js';
|
|
5
8
|
export type { HouseByteAct, HouseByteTransfer, HouseBytesAnswer, HouseClosing, HouseDoorAnswer, HouseHeldRoom, HouseOpening, HouseStream, HouseStreamEntry, HouseStreamFrame, HouseSiteTransport, HouseTransport, } from './transport.js';
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { createAgentsHouseAdapter } from './adapter.js';
|
|
2
2
|
export { finishedUpload, houseUpload } from './upload.js';
|
|
3
|
-
export { HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS } from './actions.js';
|
|
4
|
-
export {
|
|
3
|
+
export { HISTORY_PAGE, HOUSE_APP_ACTS, HOUSE_APP_BATCHES, HOUSE_SITE_ACTS, TRIGGER_ROOMS, } from './actions.js';
|
|
4
|
+
export { APP_REFERENCE_PATTERN } from './app-reference.js';
|
|
5
|
+
export { HOUSE_MODEL_TYPES } from './house-model.js';
|
|
6
|
+
export { CROCKFORD_ALPHABET, CROCKFORD_CHARACTER, CROCKFORD_LEADING_CHARACTER, } from './crockford.js';
|
|
7
|
+
export { HOUSE_NAMEABLE_ROOM_TYPES, HOUSE_ROOM_TYPES, INBOX_CHANNEL_KINDS, INBOX_CHAT_TYPE, INBOX_MESSAGE_TYPE, } from './room-types.js';
|
package/dist/model.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { RoomModels } from '@agentshouse/mdruntime';
|
|
2
2
|
import type { TrackedAuthority } from './discovery.js';
|
|
3
|
-
import { type HouseScope, type HouseView } from './read.js';
|
|
3
|
+
import { type HouseRoomParts, type HouseScope, type HouseView } from './read.js';
|
|
4
4
|
import type { HouseMode, HouseStreamEntry } from './transport.js';
|
|
5
5
|
export declare function partModels(scope: HouseScope, tracked: TrackedAuthority, seen: ReadonlySet<string>, final: boolean): Promise<RoomModels | undefined>;
|
|
6
|
+
export declare function manifestedModels(room: HouseRoomParts, tracked: TrackedAuthority): Promise<{
|
|
7
|
+
readonly models: RoomModels | undefined;
|
|
8
|
+
readonly seen: string[];
|
|
9
|
+
}>;
|
|
6
10
|
export declare function viewModels(view: HouseView, tracked: TrackedAuthority): Promise<RoomModels | undefined>;
|
|
7
11
|
export declare function streamedModels(schemas: ReadonlyMap<string, HouseStreamEntry>, tracked: TrackedAuthority, mode: HouseMode): Promise<RoomModels | undefined>;
|
|
8
12
|
//# sourceMappingURL=model.d.ts.map
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAIL,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0BlE,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EACzB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAKjC;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAM/E;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAcjC;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC9C,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAWjC"}
|
package/dist/model.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sha256Hex } from './digest.js';
|
|
2
|
-
import { schemaOf, schemaPath } from './read.js';
|
|
2
|
+
import { modelScope, schemaOf, schemaPath, } from './read.js';
|
|
3
3
|
const MODEL_ABSENT = { kind: 'model-unavailable', reason: 'not-readable' };
|
|
4
4
|
const ABSENT_SCHEMA = { schema: null, version: null, revision: null };
|
|
5
5
|
async function heldModel(read, identity) {
|
|
@@ -12,19 +12,10 @@ async function heldModel(read, identity) {
|
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
async function modelsOf(tracked, read) {
|
|
15
|
-
const models = {};
|
|
16
15
|
const collection = read(tracked.schema);
|
|
17
|
-
if (collection
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
if (tracked.houseModel !== null) {
|
|
21
|
-
const root = tracked.houseModel.root;
|
|
22
|
-
const selection = read(root);
|
|
23
|
-
if (selection !== undefined) {
|
|
24
|
-
models.selection = await heldModel(selection, schemaPath(tracked.handle, root));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return models.collection === undefined && models.selection === undefined ? undefined : models;
|
|
16
|
+
if (collection === undefined)
|
|
17
|
+
return undefined;
|
|
18
|
+
return { collection: await heldModel(collection, schemaPath(tracked.handle, tracked.schema)) };
|
|
28
19
|
}
|
|
29
20
|
export function partModels(scope, tracked, seen, final) {
|
|
30
21
|
return modelsOf(tracked, (schema) => {
|
|
@@ -33,6 +24,13 @@ export function partModels(scope, tracked, seen, final) {
|
|
|
33
24
|
return final && !seen.has(schema) ? ABSENT_SCHEMA : undefined;
|
|
34
25
|
});
|
|
35
26
|
}
|
|
27
|
+
export async function manifestedModels(room, tracked) {
|
|
28
|
+
const scope = modelScope(room);
|
|
29
|
+
return {
|
|
30
|
+
models: await partModels(scope, tracked, new Set(), true),
|
|
31
|
+
seen: scope.files.some((file) => file.path === tracked.schema) ? [tracked.schema] : [],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
36
34
|
export function viewModels(view, tracked) {
|
|
37
35
|
return modelsOf(tracked, (schema) => {
|
|
38
36
|
const change = view.changes.find((candidate) => candidate.path === schema);
|
package/dist/part.d.ts
CHANGED
|
@@ -10,6 +10,6 @@ export declare function parsePart(value: unknown): HousePart | null;
|
|
|
10
10
|
export declare function partArrival(listed: HousePart, arriving: ((bytes: number) => void) | undefined): ((answered: number) => void) | undefined;
|
|
11
11
|
export declare function partFrame(body: unknown): Uint8Array<ArrayBuffer> | null;
|
|
12
12
|
export declare function checkedPayload(frame: Uint8Array<ArrayBuffer>, listed: HousePart): Promise<Uint8Array<ArrayBuffer> | null>;
|
|
13
|
-
export declare function gunzipped(payload: Uint8Array<ArrayBuffer>):
|
|
13
|
+
export declare function gunzipped(payload: Uint8Array<ArrayBuffer>): ReadableStream<string>;
|
|
14
14
|
export declare function unverifiedPart(locator: string): ScopedRefusal;
|
|
15
15
|
//# sourceMappingURL=part.d.ts.map
|
package/dist/part.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../src/part.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAU5D,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAO1D;AAoBD,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC9C,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAG1C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAIvE;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAC9B,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAazC;AAED,
|
|
1
|
+
{"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../src/part.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAU5D,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAO1D;AAoBD,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,GAC9C,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAG1C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAIvE;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAC9B,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAazC;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAKlF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAS7D"}
|
package/dist/part.js
CHANGED
|
@@ -64,14 +64,11 @@ export async function checkedPayload(frame, listed) {
|
|
|
64
64
|
}
|
|
65
65
|
return payload;
|
|
66
66
|
}
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
catch {
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
67
|
+
export function gunzipped(payload) {
|
|
68
|
+
return new Blob([payload])
|
|
69
|
+
.stream()
|
|
70
|
+
.pipeThrough(new DecompressionStream('gzip'))
|
|
71
|
+
.pipeThrough(new TextDecoderStream());
|
|
75
72
|
}
|
|
76
73
|
export function unverifiedPart(locator) {
|
|
77
74
|
return {
|