@agentshouse/mdruntime 0.1.0-ca4dc698bd0c4 → 0.1.0-ca69b8fe1fa9f
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 +19 -16
- package/dist/adapter.d.ts +149 -75
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +5 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +38 -4
- package/dist/binary.d.ts +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +27 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +181 -99
- package/dist/chain.d.ts +12 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +9 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +11 -88
- package/dist/change.d.ts +31 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +10 -1
- package/dist/client.d.ts +21 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +96 -11
- package/dist/collection.d.ts +11 -21
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +39 -291
- package/dist/compile.d.ts +11 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +589 -0
- package/dist/connection.d.ts +30 -16
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +3295 -1360
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{chat/context.js → context.js} +1 -4
- package/dist/conversation.d.ts +31 -14
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +523 -203
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/durability.d.ts +2 -5
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +31 -27
- package/dist/file.d.ts +2 -19
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +7 -122
- package/dist/host.d.ts +6 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +94 -24
- package/dist/identity.d.ts +0 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -3
- package/dist/index.d.ts +20 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/job.d.ts +14 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +28 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +127 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +17 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +209 -102
- package/dist/messages.d.ts +28 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +89 -0
- package/dist/model.d.ts +10 -5
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +8 -14
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +17 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +100 -5
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/outcome.d.ts +45 -7
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +39 -0
- package/dist/overlay.d.ts +3 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +95 -156
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +4 -0
- package/dist/query.d.ts +18 -185
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -464
- package/dist/reach.d.ts +16 -8
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +219 -90
- package/dist/react.d.ts +6 -4
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -17
- package/dist/readiness.d.ts +14 -17
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +2 -8
- package/dist/recovery.d.ts +3 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +34 -7
- package/dist/refresh.d.ts +17 -14
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +155 -52
- package/dist/replica.d.ts +56 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +301 -182
- package/dist/room-draft.d.ts +36 -5
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +161 -74
- package/dist/rows.d.ts +22 -29
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +63 -112
- package/dist/save.d.ts +53 -14
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +529 -185
- package/dist/search.d.ts +15 -77
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -184
- package/dist/seed.d.ts +16 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +75 -0
- package/dist/shared.d.ts +7 -3
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +119 -66
- package/dist/status.d.ts +4 -3
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -1
- package/dist/store.d.ts +101 -98
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +338 -661
- package/dist/stored.d.ts +162 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +543 -0
- package/dist/tables.d.ts +353 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +588 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +51 -21
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +11 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +16 -0
- package/dist/wire.d.ts +164 -33
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +55 -32
- package/package.json +18 -19
- package/AGENTS.md +0 -300
- package/dist/acquisition.d.ts +0 -14
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -24
- package/dist/chat/acts.d.ts +0 -33
- package/dist/chat/acts.d.ts.map +0 -1
- package/dist/chat/acts.js +0 -36
- package/dist/chat/context.d.ts +0 -3
- package/dist/chat/context.d.ts.map +0 -1
- package/dist/chat/input.d.ts +0 -9
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -99
- package/dist/chat/kit.d.ts +0 -60
- package/dist/chat/kit.d.ts.map +0 -1
- package/dist/chat/kit.js +0 -123
- package/dist/chat/lasting.d.ts +0 -6
- package/dist/chat/lasting.d.ts.map +0 -1
- package/dist/chat/lasting.js +0 -19
- package/dist/chat/list.d.ts +0 -26
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -62
- package/dist/chat/markdown.d.ts +0 -20
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -188
- package/dist/chat/message.d.ts +0 -6
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -192
- package/dist/chat/messages.d.ts +0 -21
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -151
- package/dist/chat/name.d.ts +0 -6
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -11
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -17
- package/dist/chat/overlay.d.ts +0 -31
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -97
- package/dist/chat/parts.d.ts +0 -57
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -119
- package/dist/chat/process.d.ts +0 -20
- package/dist/chat/process.d.ts.map +0 -1
- package/dist/chat/process.js +0 -32
- package/dist/chat/provider.d.ts +0 -63
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -620
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -80
- package/dist/chat/questions.d.ts +0 -31
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/questions.js +0 -111
- package/dist/chat/read.d.ts +0 -5
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/read.js +0 -13
- package/dist/chat/ready.d.ts +0 -33
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -91
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -302
- package/dist/chat.d.ts +0 -14
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
- package/dist/read-side.d.ts +0 -25
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -639
package/dist/host.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { queryKey } from '@agentshouse/mdmodel';
|
|
1
2
|
import { composeRuntime, } from './connection.js';
|
|
3
|
+
import { untilAnswered } from './recovery.js';
|
|
2
4
|
import { described } from './failure.js';
|
|
3
|
-
import {
|
|
4
|
-
import { AUTHORIZATION_ENDED, request, WIRE_REACH, } from './wire.js';
|
|
5
|
+
import { AUTHORIZATION_ENDED, request, WIRE, } from './wire.js';
|
|
5
6
|
const NARROWED = new Set(['within', 'whole']);
|
|
6
7
|
function answered(md, app, writtenBy, member, input) {
|
|
7
8
|
switch (member) {
|
|
@@ -15,18 +16,30 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
15
16
|
return md.types(input[0]);
|
|
16
17
|
case 'save':
|
|
17
18
|
return md.save(input[0], input[1], writtenBy);
|
|
19
|
+
case 'saveParts':
|
|
20
|
+
return md.saveParts(input[0], input[1], writtenBy);
|
|
18
21
|
case 'history':
|
|
19
22
|
return md.history(input[0], input[1], input[2]);
|
|
23
|
+
case 'resolve':
|
|
24
|
+
return md.resolve(input[0], input[1], input[2]);
|
|
20
25
|
case 'binaryFile.read':
|
|
21
26
|
return md.binaryFile.read(input[0], input[1], input[2]);
|
|
22
|
-
case 'binaryFile.
|
|
23
|
-
return md.binaryFile.
|
|
27
|
+
case 'binaryFile.link':
|
|
28
|
+
return md.binaryFile.link(input[0], input[1], input[2]);
|
|
29
|
+
case 'binaryFile.show':
|
|
30
|
+
return md.binaryFile.show(input[0], input[1], input[2]);
|
|
31
|
+
case 'binaryFile.attach':
|
|
32
|
+
return md.binaryFile.attach(input[0], input[1]);
|
|
33
|
+
case 'binaryFile.part':
|
|
34
|
+
return md.binaryFile.part(input[0], input[1]);
|
|
24
35
|
case 'call':
|
|
25
36
|
return md.call(input[0], input[1]);
|
|
26
37
|
case 'reached':
|
|
27
38
|
return md.reached(input[0], input[1], input[2]);
|
|
28
39
|
case 'log':
|
|
29
40
|
return md.log();
|
|
41
|
+
case 'cleanUp':
|
|
42
|
+
return md.cleanUp();
|
|
30
43
|
case 'persistence':
|
|
31
44
|
return md.persistence();
|
|
32
45
|
case 'retry':
|
|
@@ -38,13 +51,15 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
38
51
|
case 'roomDraft.read':
|
|
39
52
|
return md.roomDraft.read(input[0], input[1]);
|
|
40
53
|
case 'roomDraft.write':
|
|
41
|
-
return md.roomDraft.write(input[0], input[1], input[2], input[3]);
|
|
54
|
+
return md.roomDraft.write(input[0], input[1], input[2], input[3], input[4]);
|
|
42
55
|
case 'roomDraft.discard':
|
|
43
56
|
return md.roomDraft.discard(input[0], input[1], input[2]);
|
|
44
57
|
case 'presentation.read':
|
|
45
58
|
return md.presentation.read(app);
|
|
46
59
|
case 'presentation.write':
|
|
47
60
|
return md.presentation.write(app, input[0]);
|
|
61
|
+
case 'presentation.edit':
|
|
62
|
+
return md.presentation.edit(app, input[0]);
|
|
48
63
|
case 'conversation.list':
|
|
49
64
|
return md.conversation.list();
|
|
50
65
|
case 'conversation.read':
|
|
@@ -59,16 +74,32 @@ function answered(md, app, writtenBy, member, input) {
|
|
|
59
74
|
return md.conversation.interrupt(input[0]);
|
|
60
75
|
case 'conversation.kill':
|
|
61
76
|
return md.conversation.kill(input[0]);
|
|
62
|
-
case 'conversation.cancel':
|
|
63
|
-
return md.conversation.cancel(input[0], input[1]);
|
|
64
77
|
case 'conversation.delete':
|
|
65
78
|
return md.conversation.delete(input[0]);
|
|
66
79
|
case 'chatDraft.write':
|
|
67
80
|
return md.chatDraft.write(input[0], input[1], input[2]);
|
|
81
|
+
case 'chatDraft.prepend':
|
|
82
|
+
return md.chatDraft.prepend(input[0], input[1]);
|
|
68
83
|
case 'chatDraft.discard':
|
|
69
84
|
return md.chatDraft.discard(input[0]);
|
|
70
85
|
}
|
|
71
86
|
}
|
|
87
|
+
function attempted(work) {
|
|
88
|
+
try {
|
|
89
|
+
return Promise.resolve(work());
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return Promise.reject(error);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function answeredResult(value) {
|
|
96
|
+
return typeof value === 'object' && value !== null && !('pending' in value);
|
|
97
|
+
}
|
|
98
|
+
function answeredMessage(value) {
|
|
99
|
+
if (typeof value !== 'object' || value === null)
|
|
100
|
+
return false;
|
|
101
|
+
return !('result' in value) || answeredResult(value.result);
|
|
102
|
+
}
|
|
72
103
|
export function serveMdRuntime(options) {
|
|
73
104
|
const deploymentFacts = structuredClone(options.deploymentFacts);
|
|
74
105
|
const closing = new AbortController();
|
|
@@ -82,6 +113,8 @@ export function serveMdRuntime(options) {
|
|
|
82
113
|
const { md } = runtime;
|
|
83
114
|
const attachments = new Map();
|
|
84
115
|
let authorized = true;
|
|
116
|
+
let opening = null;
|
|
117
|
+
const opened = () => (opening ??= untilAnswered(() => md.loaded(), closing.signal));
|
|
85
118
|
const watchFacts = (deliver) => {
|
|
86
119
|
deliver(structuredClone(deploymentFacts));
|
|
87
120
|
return () => { };
|
|
@@ -90,10 +123,20 @@ export function serveMdRuntime(options) {
|
|
|
90
123
|
if (!authorized)
|
|
91
124
|
throw new Error(AUTHORIZATION_ENDED);
|
|
92
125
|
const writtenBy = release === undefined ? undefined : { app, release };
|
|
93
|
-
const view = runtime.within(reach ?? null, { target: app, code
|
|
126
|
+
const view = runtime.within(reach ?? null, { target: app, code });
|
|
94
127
|
const observations = new Map();
|
|
95
128
|
const followed = new Set();
|
|
129
|
+
const answeredKeys = new Set();
|
|
130
|
+
let awaited = null;
|
|
96
131
|
let serving = true;
|
|
132
|
+
const answeredQuery = (query) => {
|
|
133
|
+
answeredKeys.add(queryKey(query));
|
|
134
|
+
if (awaited === null || !awaited.keys.every((key) => answeredKeys.has(key)))
|
|
135
|
+
return;
|
|
136
|
+
const { done } = awaited;
|
|
137
|
+
awaited = null;
|
|
138
|
+
done();
|
|
139
|
+
};
|
|
97
140
|
const send = (message) => {
|
|
98
141
|
port.postMessage(message);
|
|
99
142
|
};
|
|
@@ -115,10 +158,33 @@ export function serveMdRuntime(options) {
|
|
|
115
158
|
return;
|
|
116
159
|
send(resolved ? { kind: 'event', id, value } : { kind: 'result', id, value });
|
|
117
160
|
resolved = true;
|
|
161
|
+
if (topic === 'query' && answeredMessage(value))
|
|
162
|
+
answeredQuery(input[0]);
|
|
163
|
+
};
|
|
164
|
+
const fail = (error) => {
|
|
165
|
+
if (!serving || resolved)
|
|
166
|
+
return;
|
|
167
|
+
observations.get(id)?.();
|
|
168
|
+
observations.delete(id);
|
|
169
|
+
send({ kind: 'failure', id, ...described(error) });
|
|
118
170
|
};
|
|
119
171
|
observations.set(id, topic === 'deployment-facts'
|
|
120
172
|
? watchFacts(deliver)
|
|
121
|
-
: (NARROWED.has(
|
|
173
|
+
: (NARROWED.has(WIRE.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver, fail));
|
|
174
|
+
};
|
|
175
|
+
const reply = async (id, query, pending) => {
|
|
176
|
+
try {
|
|
177
|
+
const value = await pending;
|
|
178
|
+
if (!serving)
|
|
179
|
+
return;
|
|
180
|
+
send({ kind: 'result', id, value });
|
|
181
|
+
if (query !== undefined && answeredResult(value))
|
|
182
|
+
answeredQuery(query);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (serving)
|
|
186
|
+
send({ kind: 'failure', id, ...described(error) });
|
|
187
|
+
}
|
|
122
188
|
};
|
|
123
189
|
const serve = async (message) => {
|
|
124
190
|
if (message.kind === 'hello')
|
|
@@ -129,21 +195,24 @@ export function serveMdRuntime(options) {
|
|
|
129
195
|
return;
|
|
130
196
|
}
|
|
131
197
|
try {
|
|
132
|
-
if (message.kind !== 'observe'
|
|
198
|
+
if (message.kind !== 'observe')
|
|
133
199
|
await md.loaded();
|
|
200
|
+
else if (message.topic !== 'room-drafts')
|
|
201
|
+
await opened();
|
|
134
202
|
if (message.kind === 'observe') {
|
|
135
203
|
if (serving)
|
|
136
204
|
observe(message.id, message.topic, message.input);
|
|
137
205
|
return;
|
|
138
206
|
}
|
|
139
|
-
const value = await answered(NARROWED.has(WIRE_REACH.members[message.member]) ? view.md : md, app, writtenBy, message.member, message.input);
|
|
140
|
-
if (serving)
|
|
141
|
-
send({ kind: 'result', id: message.id, value });
|
|
142
207
|
}
|
|
143
208
|
catch (error) {
|
|
144
209
|
if (serving)
|
|
145
210
|
send({ kind: 'failure', id: message.id, ...described(error) });
|
|
211
|
+
return;
|
|
146
212
|
}
|
|
213
|
+
const { id, member, input } = message;
|
|
214
|
+
const pending = attempted(() => answered(NARROWED.has(WIRE.members[member].reach) ? view.md : md, app, writtenBy, member, input));
|
|
215
|
+
return reply(id, member === 'query' ? input[0] : undefined, pending);
|
|
147
216
|
};
|
|
148
217
|
port.addEventListener('message', (event) => {
|
|
149
218
|
if (!serving)
|
|
@@ -162,9 +231,12 @@ export function serveMdRuntime(options) {
|
|
|
162
231
|
if (serving)
|
|
163
232
|
view.narrow(next);
|
|
164
233
|
},
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
234
|
+
answered(queries, done) {
|
|
235
|
+
const keys = queries.map(queryKey);
|
|
236
|
+
if (keys.every((key) => answeredKeys.has(key)))
|
|
237
|
+
done();
|
|
238
|
+
else
|
|
239
|
+
awaited = { keys, done };
|
|
168
240
|
},
|
|
169
241
|
readiness(deliver) {
|
|
170
242
|
if (!serving)
|
|
@@ -172,7 +244,7 @@ export function serveMdRuntime(options) {
|
|
|
172
244
|
const stop = view.watch('readiness', [], (value) => {
|
|
173
245
|
if (serving)
|
|
174
246
|
deliver(value);
|
|
175
|
-
});
|
|
247
|
+
}, () => { });
|
|
176
248
|
const end = () => {
|
|
177
249
|
followed.delete(end);
|
|
178
250
|
stop();
|
|
@@ -184,8 +256,8 @@ export function serveMdRuntime(options) {
|
|
|
184
256
|
}
|
|
185
257
|
return {
|
|
186
258
|
attach,
|
|
187
|
-
|
|
188
|
-
runtime.
|
|
259
|
+
seed(entry) {
|
|
260
|
+
runtime.seed(entry);
|
|
189
261
|
},
|
|
190
262
|
persisted(answer) {
|
|
191
263
|
runtime.persisted(answer);
|
|
@@ -197,16 +269,14 @@ export function serveMdRuntime(options) {
|
|
|
197
269
|
detach();
|
|
198
270
|
}
|
|
199
271
|
close();
|
|
200
|
-
if (!(await
|
|
272
|
+
if (!(await options.database.ask({ kind: 'authored.end', holder: holder ?? null }))) {
|
|
201
273
|
await options.shell.dropGeneration();
|
|
202
|
-
|
|
203
|
-
lose(locators) {
|
|
204
|
-
return runtime.lose(locators);
|
|
274
|
+
}
|
|
205
275
|
},
|
|
206
276
|
stop() {
|
|
207
277
|
return runtime.stop();
|
|
208
278
|
},
|
|
209
279
|
};
|
|
210
280
|
}
|
|
281
|
+
export { entrySeedOf } from './seed.js';
|
|
211
282
|
export { createRecovery, retryDelay, } from './recovery.js';
|
|
212
|
-
export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, openDatabase, STORE_SCHEMA, } from './store.js';
|
package/dist/identity.d.ts
CHANGED
|
@@ -3,6 +3,5 @@ export declare function identityTime(identity: string): number;
|
|
|
3
3
|
export declare function roomDraftRevision(): string;
|
|
4
4
|
export declare function chatDraftRevision(): string;
|
|
5
5
|
export declare function transferIdentity(): string;
|
|
6
|
-
export declare function indexGeneration(): string;
|
|
7
6
|
export declare function binaryLocalId(): string;
|
|
8
7
|
//# sourceMappingURL=identity.d.ts.map
|
package/dist/identity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAQD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/identity.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
export type { Change, ChangeBatch, Precondition, WrittenBy } from './change.js';
|
|
3
|
-
export type { ChatDraft, ChatDraftSurface, ConversationAgent, ConversationEntry, ConversationOptions, ConversationState, ConversationSurface, ConversationView, RunningTurn, } from './conversation.js';
|
|
4
|
-
export type {
|
|
5
|
-
export type { AppRoom, AppTypedSelection, BinaryFileSurface, ConnectionRefusal, ConnectionRefusalCode, HistoryQuery, MdRuntime, MdRuntimeOptions, PresentationSurface, RoomDraftSurface, RoomSchemas, SavedRoomDraft, SaveResult, } from './connection.js';
|
|
1
|
+
export type { AcceptedMessage, AcceptedRoom, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, AttachRequest, AttachResult, AuthorityChange, Authorization, BinaryFile, BinaryLinkResult, BinaryRequest, BinaryResult, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ChangeAuthor, ContractUnavailable, ConversationAction, ConversationEvent, ConversationHistories, ConversationHistoryPage, ConversationHistoryRequest, ConversationMessage, ConversationStream, DiscoverResult, DiscoveredRoom, Discovery, HistoryAuthor, HistoryRequest, HistoryResult, HistoryRetention, HistoryRevision, HeldContent, HeldFile, HeldRoom, ListedAgent, ListedConversation, MdModelIdentity, Member, MutationRequest, MutationResult, Outline, PageToken, ProviderLimit, ProviderRefusal, RefreshPage, RefreshRequest, RefreshResult, Retention, RetryableRefusal, RevokedAuthorization, RoomChange, RoomModels, RoomNotReadable, RoomStream, RoomStreamEvent, RoomVersionAt, SearchAnswer, SearchAsk, ServiceMode, ServiceModeSignal, TransportUncertainty, TurnContext, TurnOperation, TypedPath, TypedSelection, } from './adapter.js';
|
|
2
|
+
export type { Change, ChangeBatch, Precondition, RoomMove, WrittenBy } from './change.js';
|
|
3
|
+
export type { ChatDraft, ChatDraftSurface, ConversationAgent, ConversationAnswer, ConversationEntry, ConversationOptions, ConversationRead, ConversationState, ConversationSurface, ConversationView, RunningTurn, } from './conversation.js';
|
|
4
|
+
export type { AppRoom, AppTypedSelection, BinaryFileSurface, ConnectionRefusal, ConnectionRefusalCode, HistoryQuery, MdRuntime, MdRuntimeOptions, PresentationSurface, RoomDraftSurface, RoomSchemas, SavedParts, SavedRoomDraft, SaveResult, } from './connection.js';
|
|
6
5
|
export type { Observation } from './observation.js';
|
|
7
|
-
export type { BinaryAnswer, CallResult, Failure, HistoryAnswer, Offline, QueueEntry, Submission, } from './outcome.js';
|
|
8
|
-
export type { BinaryFileRecord
|
|
6
|
+
export type { AttachAnswer, BinaryAnswer, BinaryLinkAnswer, CallResult, DownloadAnswer, Failure, HistoryAnswer, Offline, QueueEntry, Resolution, Submission, } from './outcome.js';
|
|
7
|
+
export type { BinaryFileRecord } from './binary.js';
|
|
9
8
|
export type { RuntimeError } from './failure.js';
|
|
10
|
-
export type { ChangedPart, FieldValue, ReturnReason, RoomDraft, RoomDraftCreation, RoomDraftParts, RoomDraftWrite, } from './room-draft.js';
|
|
9
|
+
export type { ChangedPart, FieldValue, ReturnReason, RoomDraft, RoomDraftCreation, RoomDraftParts, RoomDraftWrite, TextParts, } from './room-draft.js';
|
|
11
10
|
export type { SaveRefusal } from './save.js';
|
|
12
|
-
export type {
|
|
11
|
+
export type { SearchFound, SearchHit, SearchRequest, SearchResult } from './search.js';
|
|
13
12
|
export { departure } from './change.js';
|
|
14
|
-
export {
|
|
13
|
+
export { lineEnded, partsAfter, partsChanges } from './room-draft.js';
|
|
14
|
+
export { cutName, nameFrom, transliterated } from './name.js';
|
|
15
|
+
export { HISTORY_CONVERSATIONS, SESSION_STARTED } from './conversation.js';
|
|
16
|
+
export { contextFigure } from './context.js';
|
|
17
|
+
export { jobOf, jobsRunning, sessionEnded, type Job, type RunningJob } from './job.js';
|
|
15
18
|
export { changeBatchIdentity } from './identity.js';
|
|
19
|
+
export { paced, ROW_WEIGHT, stepped } from './turn.js';
|
|
20
|
+
export { untilAnswered } from './recovery.js';
|
|
21
|
+
export { entriesIn, patching, sortedKeys } from './shared.js';
|
|
16
22
|
export { attempts, identities, intentOf, type Answered, type Attempt, type Attempts, type Identities, } from './attempt.js';
|
|
17
23
|
export { expectedList, expecting, type ExpectedOf, type Expecting } from './expectation.js';
|
|
18
|
-
export type { RuntimeShell
|
|
19
|
-
export type {
|
|
24
|
+
export type { RuntimeShell } from './durability.js';
|
|
25
|
+
export type { CodeAvailability, ConnectionAvailability, ConversationCoverage, Durability, HouseOutcome, Installation, InstallationAmount, InstallationStep, Persistence, Readiness, ReadinessStatus, RoomCoverage, RoomPreparation, Space, TargetCoverage, } from './readiness.js';
|
|
20
26
|
export type { AttentionEntry, SyncStatus } from './status.js';
|
|
21
|
-
export type {
|
|
27
|
+
export type { Direction, DocumentQuery, Filter, GroupQuery, Key, LocalQuery, OrderOptions, Predicate, Related, Select, Value, Where, } from '@agentshouse/mdmodel';
|
|
28
|
+
export type { Awaits, Backlink, CoveredRoom, DocumentResult, GroupResult, PendingResult, PendingRoom, QueryCoverage, QueryDocument, QueryGroup, QueryResult, QueryRows, } from './query.js';
|
|
22
29
|
export type { MdType, ModelIdentity, ModelSnapshot, ModelState, ModelResult, TypesResult, ValidationReceipt, } from './model.js';
|
|
23
30
|
export type { OperationScopes, ReplicaAdmission, ScopedRefusal } from './adapter.js';
|
|
24
31
|
//# 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,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
export { departure } from './change.js';
|
|
2
|
-
export {
|
|
2
|
+
export { lineEnded, partsAfter, partsChanges } from './room-draft.js';
|
|
3
|
+
export { cutName, nameFrom, transliterated } from './name.js';
|
|
4
|
+
export { HISTORY_CONVERSATIONS, SESSION_STARTED } from './conversation.js';
|
|
5
|
+
export { contextFigure } from './context.js';
|
|
6
|
+
export { jobOf, jobsRunning, sessionEnded } from './job.js';
|
|
3
7
|
export { changeBatchIdentity } from './identity.js';
|
|
8
|
+
export { paced, ROW_WEIGHT, stepped } from './turn.js';
|
|
9
|
+
export { untilAnswered } from './recovery.js';
|
|
10
|
+
export { entriesIn, patching, sortedKeys } from './shared.js';
|
|
4
11
|
export { attempts, identities, intentOf, } from './attempt.js';
|
|
5
12
|
export { expectedList, expecting } from './expectation.js';
|
package/dist/job.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type Job = {
|
|
2
|
+
readonly label: string;
|
|
3
|
+
readonly kind: 'started' | 'scheduled' | 'ended';
|
|
4
|
+
readonly state: string;
|
|
5
|
+
readonly next: string | null;
|
|
6
|
+
};
|
|
7
|
+
export type RunningJob = {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly running_since: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function jobOf(said: string): Job;
|
|
12
|
+
export declare function jobsRunning(jobs: readonly RunningJob[], now: number): string[];
|
|
13
|
+
export declare function sessionEnded(jobs: readonly RunningJob[], now: number): string;
|
|
14
|
+
//# sourceMappingURL=job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAQF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CASvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAM9E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7E"}
|
package/dist/job.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const NEXT_RUN = 'next run ';
|
|
2
|
+
const MINUTE = 60_000;
|
|
3
|
+
const ENDED = 'Session ended.';
|
|
4
|
+
export function jobOf(said) {
|
|
5
|
+
const at = said.lastIndexOf(': ');
|
|
6
|
+
const label = at === -1 ? said : said.slice(0, at);
|
|
7
|
+
const state = at === -1 ? '' : said.slice(at + 2);
|
|
8
|
+
if (state === 'running')
|
|
9
|
+
return { label, kind: 'started', state, next: null };
|
|
10
|
+
if (state === 'scheduled')
|
|
11
|
+
return { label, kind: 'scheduled', state, next: null };
|
|
12
|
+
return state.startsWith(NEXT_RUN)
|
|
13
|
+
? { label, kind: 'scheduled', state, next: state.slice(NEXT_RUN.length) }
|
|
14
|
+
: { label, kind: 'ended', state, next: null };
|
|
15
|
+
}
|
|
16
|
+
export function jobsRunning(jobs, now) {
|
|
17
|
+
return jobs.map((job) => {
|
|
18
|
+
const since = Date.parse(job.running_since);
|
|
19
|
+
const ran = Number.isNaN(since) ? 0 : Math.floor((now - since) / MINUTE);
|
|
20
|
+
return ran >= 1 ? `${job.name} (${ran} min)` : job.name;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function sessionEnded(jobs, now) {
|
|
24
|
+
if (jobs.length === 0)
|
|
25
|
+
return ENDED;
|
|
26
|
+
const counted = jobs.length === 1 ? '1 background job' : `${jobs.length} background jobs`;
|
|
27
|
+
return `${ENDED} ${counted} stopped: ${jobsRunning(jobs, now).join(', ')}`;
|
|
28
|
+
}
|
package/dist/live.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ChangeSet } from './change-set.js';
|
|
2
|
+
import { type KeyedResult, type QueryMessage } from './observation.js';
|
|
3
|
+
import type { PendingResult, Plan, QueryCoverage } from './query.js';
|
|
4
|
+
import type { Fail } from './reach.js';
|
|
5
|
+
import type { QueryRoom } from './tables.js';
|
|
6
|
+
export type Cover = {
|
|
7
|
+
coverage: QueryCoverage;
|
|
8
|
+
rooms: readonly QueryRoom[];
|
|
9
|
+
} | PendingResult;
|
|
10
|
+
export type Ran = KeyedResult & {
|
|
11
|
+
readonly current: () => boolean;
|
|
12
|
+
};
|
|
13
|
+
export type Run = (plan: Plan, cover: () => Cover) => Promise<Ran>;
|
|
14
|
+
type Listener = (message: QueryMessage) => void;
|
|
15
|
+
export type LiveQueries = {
|
|
16
|
+
touched(set: ChangeSet): void;
|
|
17
|
+
recover(): void;
|
|
18
|
+
watch(plan: Plan, identity: string, cover: () => Cover, deliver: Listener, failed: Fail): () => void;
|
|
19
|
+
close(): void;
|
|
20
|
+
};
|
|
21
|
+
export declare function createLiveQueries(run: Run): LiveQueries;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=live.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GAAG,aAAa,CAAC;AAE7F,MAAM,MAAM,GAAG,GAAG,WAAW,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEnE,KAAK,QAAQ,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAchD,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,CACH,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,KAAK,EAClB,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,IAAI,GACX,MAAM,IAAI,CAAC;IACd,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAmCF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,CA0FvD"}
|
package/dist/live.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { changeOf, digestOf, } from './observation.js';
|
|
2
|
+
import { roomOfKey } from './rows.js';
|
|
3
|
+
function narrowed(plan) {
|
|
4
|
+
return (plan.paths !== null &&
|
|
5
|
+
plan.hop === null &&
|
|
6
|
+
plan.backlinks === null &&
|
|
7
|
+
!(plan.shape.kind === 'documents' && plan.shape.backlinks));
|
|
8
|
+
}
|
|
9
|
+
function reads(plan, locator) {
|
|
10
|
+
if (plan.locked.includes(locator))
|
|
11
|
+
return false;
|
|
12
|
+
if (plan.rooms !== null && !plan.rooms.includes(locator))
|
|
13
|
+
return false;
|
|
14
|
+
if (plan.reach === null)
|
|
15
|
+
return true;
|
|
16
|
+
return (plan.reach.rooms.includes(locator) ||
|
|
17
|
+
plan.reach.documents.some((document) => roomOfKey(document) === locator));
|
|
18
|
+
}
|
|
19
|
+
function affected(plan, set) {
|
|
20
|
+
if (set.rooms.some((locator) => reads(plan, locator)))
|
|
21
|
+
return true;
|
|
22
|
+
const paths = narrowed(plan) ? new Set(plan.paths) : null;
|
|
23
|
+
return set.documents.some(({ locator, path }) => reads(plan, locator) && (paths === null || path === null || paths.has(path)));
|
|
24
|
+
}
|
|
25
|
+
function shown(entry) {
|
|
26
|
+
const cover = entry.cover();
|
|
27
|
+
return JSON.stringify('pending' in cover ? cover : cover.coverage);
|
|
28
|
+
}
|
|
29
|
+
export function createLiveQueries(run) {
|
|
30
|
+
const entries = new Map();
|
|
31
|
+
let closed = false;
|
|
32
|
+
function deliver(entry, next) {
|
|
33
|
+
const previous = entry.digest;
|
|
34
|
+
entry.digest = digestOf(next);
|
|
35
|
+
entry.covered = JSON.stringify('pending' in next.result ? next.result : next.result.coverage);
|
|
36
|
+
const change = previous === undefined ? null : changeOf(previous, next);
|
|
37
|
+
if (change !== null) {
|
|
38
|
+
for (const listener of entry.ready)
|
|
39
|
+
listener(change);
|
|
40
|
+
}
|
|
41
|
+
for (const listener of entry.fresh.keys()) {
|
|
42
|
+
entry.ready.add(listener);
|
|
43
|
+
listener(next);
|
|
44
|
+
}
|
|
45
|
+
entry.fresh.clear();
|
|
46
|
+
}
|
|
47
|
+
function schedule(entry) {
|
|
48
|
+
if (closed || entry.listeners.size === 0)
|
|
49
|
+
return;
|
|
50
|
+
if (entry.running) {
|
|
51
|
+
entry.dirty = true;
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
entry.running = true;
|
|
55
|
+
void (async () => {
|
|
56
|
+
try {
|
|
57
|
+
for (;;) {
|
|
58
|
+
entry.dirty = false;
|
|
59
|
+
const { current, ...next } = await run(entry.plan, entry.cover);
|
|
60
|
+
if (closed || entry.listeners.size === 0)
|
|
61
|
+
return;
|
|
62
|
+
deliver(entry, next);
|
|
63
|
+
if (!(entry.dirty && !current()) && shown(entry) === entry.covered)
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
entry.dirty = false;
|
|
69
|
+
const unanswered = [...entry.fresh.values()];
|
|
70
|
+
entry.fresh.clear();
|
|
71
|
+
for (const failed of unanswered)
|
|
72
|
+
failed(error);
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
entry.running = false;
|
|
76
|
+
}
|
|
77
|
+
})();
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
touched(set) {
|
|
81
|
+
for (const entry of entries.values()) {
|
|
82
|
+
if (affected(entry.plan, set))
|
|
83
|
+
schedule(entry);
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
recover() {
|
|
87
|
+
for (const entry of entries.values()) {
|
|
88
|
+
if (entry.running)
|
|
89
|
+
continue;
|
|
90
|
+
if (entry.digest === undefined || shown(entry) !== entry.covered)
|
|
91
|
+
schedule(entry);
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
watch(plan, identity, cover, listener, failed) {
|
|
95
|
+
let entry = entries.get(identity);
|
|
96
|
+
if (entry === undefined) {
|
|
97
|
+
entry = {
|
|
98
|
+
plan,
|
|
99
|
+
cover,
|
|
100
|
+
listeners: new Set(),
|
|
101
|
+
fresh: new Map(),
|
|
102
|
+
ready: new Set(),
|
|
103
|
+
digest: undefined,
|
|
104
|
+
covered: '',
|
|
105
|
+
dirty: false,
|
|
106
|
+
running: false,
|
|
107
|
+
};
|
|
108
|
+
entries.set(identity, entry);
|
|
109
|
+
}
|
|
110
|
+
const held = entry;
|
|
111
|
+
held.listeners.add(listener);
|
|
112
|
+
held.fresh.set(listener, failed);
|
|
113
|
+
schedule(held);
|
|
114
|
+
return () => {
|
|
115
|
+
held.listeners.delete(listener);
|
|
116
|
+
held.fresh.delete(listener);
|
|
117
|
+
held.ready.delete(listener);
|
|
118
|
+
if (held.listeners.size === 0 && entries.get(identity) === held)
|
|
119
|
+
entries.delete(identity);
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
close() {
|
|
123
|
+
closed = true;
|
|
124
|
+
entries.clear();
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
package/dist/media.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MdRuntimeClient } from './client.js';
|
|
2
|
+
import { type ShownAnswer } from './outcome.js';
|
|
3
|
+
export declare const ROOM_MEDIA = "room-media";
|
|
4
|
+
type Show = (room: string, path: string, revision?: string) => Promise<ShownAnswer>;
|
|
5
|
+
export declare function shownBy(show: Show, client: MdRuntimeClient): MdRuntimeClient;
|
|
6
|
+
export declare function defineRoomMedia(client: Promise<MdRuntimeClient> | MdRuntimeClient, registry?: CustomElementRegistry): void;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,eAAO,MAAM,UAAU,eAAe,CAAC;AAwBvC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAIpF,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAG5E;AAsBD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,EAClD,QAAQ,GAAE,qBAAsC,GAC/C,IAAI,CA0LN"}
|