@agentshouse/mdruntime 0.1.0-cd50a4607cb7d → 0.1.0-cd9e28a590f84

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.
Files changed (226) hide show
  1. package/README.md +19 -16
  2. package/dist/adapter.d.ts +146 -70
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +5 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +38 -4
  7. package/dist/binary.d.ts +0 -5
  8. package/dist/binary.d.ts.map +1 -1
  9. package/dist/binary.js +1 -1
  10. package/dist/bootstrap.d.ts +26 -10
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +180 -99
  13. package/dist/chain.d.ts +11 -0
  14. package/dist/chain.d.ts.map +1 -0
  15. package/dist/chain.js +64 -0
  16. package/dist/change-set.d.ts +9 -16
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +11 -88
  19. package/dist/change.d.ts +31 -1
  20. package/dist/change.d.ts.map +1 -1
  21. package/dist/change.js +10 -1
  22. package/dist/client.d.ts +22 -10
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +97 -11
  25. package/dist/collection.d.ts +10 -21
  26. package/dist/collection.d.ts.map +1 -1
  27. package/dist/collection.js +39 -291
  28. package/dist/compile.d.ts +16 -0
  29. package/dist/compile.d.ts.map +1 -0
  30. package/dist/compile.js +789 -0
  31. package/dist/connection.d.ts +37 -12
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +3425 -1118
  34. package/dist/conversation.d.ts +31 -14
  35. package/dist/conversation.d.ts.map +1 -1
  36. package/dist/conversation.js +521 -202
  37. package/dist/digest.d.ts +7 -0
  38. package/dist/digest.d.ts.map +1 -0
  39. package/dist/digest.js +113 -0
  40. package/dist/durability.d.ts +4 -1
  41. package/dist/durability.d.ts.map +1 -1
  42. package/dist/durability.js +5 -0
  43. package/dist/entry.d.ts +4 -1
  44. package/dist/entry.d.ts.map +1 -1
  45. package/dist/entry.js +19 -23
  46. package/dist/file.d.ts +2 -19
  47. package/dist/file.d.ts.map +1 -1
  48. package/dist/file.js +7 -122
  49. package/dist/host.d.ts +10 -3
  50. package/dist/host.d.ts.map +1 -1
  51. package/dist/host.js +118 -19
  52. package/dist/identity.d.ts +0 -1
  53. package/dist/identity.d.ts.map +1 -1
  54. package/dist/identity.js +0 -3
  55. package/dist/index.d.ts +15 -10
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +6 -1
  58. package/dist/live.d.ts +22 -0
  59. package/dist/live.d.ts.map +1 -0
  60. package/dist/live.js +123 -0
  61. package/dist/media.d.ts +8 -0
  62. package/dist/media.d.ts.map +1 -0
  63. package/dist/media.js +218 -0
  64. package/dist/memory.d.ts +16 -6
  65. package/dist/memory.d.ts.map +1 -1
  66. package/dist/memory.js +207 -96
  67. package/dist/messages.d.ts +28 -0
  68. package/dist/messages.d.ts.map +1 -0
  69. package/dist/messages.js +89 -0
  70. package/dist/model.d.ts +9 -3
  71. package/dist/model.d.ts.map +1 -1
  72. package/dist/model.js +8 -11
  73. package/dist/name.d.ts +4 -0
  74. package/dist/name.d.ts.map +1 -0
  75. package/dist/name.js +122 -0
  76. package/dist/observation.d.ts +15 -0
  77. package/dist/observation.d.ts.map +1 -1
  78. package/dist/observation.js +93 -3
  79. package/dist/opened.d.ts +22 -0
  80. package/dist/opened.d.ts.map +1 -0
  81. package/dist/opened.js +107 -0
  82. package/dist/outcome.d.ts +45 -7
  83. package/dist/outcome.d.ts.map +1 -1
  84. package/dist/outcome.js +39 -0
  85. package/dist/overlay.d.ts +3 -5
  86. package/dist/overlay.d.ts.map +1 -1
  87. package/dist/overlay.js +95 -156
  88. package/dist/paths.d.ts +1 -0
  89. package/dist/paths.d.ts.map +1 -1
  90. package/dist/paths.js +4 -0
  91. package/dist/phrase.d.ts +3 -0
  92. package/dist/phrase.d.ts.map +1 -0
  93. package/dist/phrase.js +8 -0
  94. package/dist/query.d.ts +43 -2
  95. package/dist/query.d.ts.map +1 -1
  96. package/dist/query.js +67 -7
  97. package/dist/reach.d.ts +16 -4
  98. package/dist/reach.d.ts.map +1 -1
  99. package/dist/reach.js +218 -74
  100. package/dist/react.d.ts +6 -3
  101. package/dist/react.d.ts.map +1 -1
  102. package/dist/react.js +7 -17
  103. package/dist/readiness.d.ts +50 -0
  104. package/dist/readiness.d.ts.map +1 -0
  105. package/dist/readiness.js +27 -0
  106. package/dist/recovery.d.ts +3 -2
  107. package/dist/recovery.d.ts.map +1 -1
  108. package/dist/recovery.js +34 -7
  109. package/dist/refresh.d.ts +17 -14
  110. package/dist/refresh.d.ts.map +1 -1
  111. package/dist/refresh.js +155 -52
  112. package/dist/replica.d.ts +55 -33
  113. package/dist/replica.d.ts.map +1 -1
  114. package/dist/replica.js +300 -182
  115. package/dist/room-draft.d.ts +36 -5
  116. package/dist/room-draft.d.ts.map +1 -1
  117. package/dist/room-draft.js +161 -74
  118. package/dist/rows.d.ts +39 -29
  119. package/dist/rows.d.ts.map +1 -1
  120. package/dist/rows.js +178 -94
  121. package/dist/save.d.ts +53 -14
  122. package/dist/save.d.ts.map +1 -1
  123. package/dist/save.js +529 -185
  124. package/dist/search.d.ts +15 -77
  125. package/dist/search.d.ts.map +1 -1
  126. package/dist/search.js +10 -186
  127. package/dist/seed.d.ts +16 -0
  128. package/dist/seed.d.ts.map +1 -0
  129. package/dist/seed.js +75 -0
  130. package/dist/shared.d.ts +7 -3
  131. package/dist/shared.d.ts.map +1 -1
  132. package/dist/shared.js +119 -66
  133. package/dist/status.d.ts +4 -3
  134. package/dist/status.d.ts.map +1 -1
  135. package/dist/status.js +3 -1
  136. package/dist/store.d.ts +104 -94
  137. package/dist/store.d.ts.map +1 -1
  138. package/dist/store.js +337 -637
  139. package/dist/stored.d.ts +162 -0
  140. package/dist/stored.d.ts.map +1 -0
  141. package/dist/stored.js +549 -0
  142. package/dist/tables.d.ts +353 -0
  143. package/dist/tables.d.ts.map +1 -0
  144. package/dist/tables.js +585 -0
  145. package/dist/transfer.d.ts +0 -5
  146. package/dist/transfer.d.ts.map +1 -1
  147. package/dist/turn.d.ts +5 -3
  148. package/dist/turn.d.ts.map +1 -1
  149. package/dist/turn.js +51 -21
  150. package/dist/validation.d.ts +29 -0
  151. package/dist/validation.d.ts.map +1 -0
  152. package/dist/validation.js +101 -0
  153. package/dist/windows.d.ts +22 -0
  154. package/dist/windows.d.ts.map +1 -0
  155. package/dist/windows.js +89 -0
  156. package/dist/wire.d.ts +165 -32
  157. package/dist/wire.d.ts.map +1 -1
  158. package/dist/wire.js +56 -31
  159. package/package.json +18 -19
  160. package/AGENTS.md +0 -296
  161. package/dist/chat/acts.d.ts +0 -33
  162. package/dist/chat/acts.d.ts.map +0 -1
  163. package/dist/chat/acts.js +0 -36
  164. package/dist/chat/context.d.ts +0 -3
  165. package/dist/chat/context.d.ts.map +0 -1
  166. package/dist/chat/context.js +0 -10
  167. package/dist/chat/input.d.ts +0 -9
  168. package/dist/chat/input.d.ts.map +0 -1
  169. package/dist/chat/input.js +0 -99
  170. package/dist/chat/kit.d.ts +0 -60
  171. package/dist/chat/kit.d.ts.map +0 -1
  172. package/dist/chat/kit.js +0 -123
  173. package/dist/chat/lasting.d.ts +0 -6
  174. package/dist/chat/lasting.d.ts.map +0 -1
  175. package/dist/chat/lasting.js +0 -19
  176. package/dist/chat/list.d.ts +0 -26
  177. package/dist/chat/list.d.ts.map +0 -1
  178. package/dist/chat/list.js +0 -62
  179. package/dist/chat/markdown.d.ts +0 -20
  180. package/dist/chat/markdown.d.ts.map +0 -1
  181. package/dist/chat/markdown.js +0 -188
  182. package/dist/chat/message.d.ts +0 -6
  183. package/dist/chat/message.d.ts.map +0 -1
  184. package/dist/chat/message.js +0 -192
  185. package/dist/chat/messages.d.ts +0 -21
  186. package/dist/chat/messages.d.ts.map +0 -1
  187. package/dist/chat/messages.js +0 -151
  188. package/dist/chat/name.d.ts +0 -6
  189. package/dist/chat/name.d.ts.map +0 -1
  190. package/dist/chat/name.js +0 -37
  191. package/dist/chat/opened.d.ts +0 -11
  192. package/dist/chat/opened.d.ts.map +0 -1
  193. package/dist/chat/opened.js +0 -17
  194. package/dist/chat/overlay.d.ts +0 -31
  195. package/dist/chat/overlay.d.ts.map +0 -1
  196. package/dist/chat/overlay.js +0 -97
  197. package/dist/chat/parts.d.ts +0 -57
  198. package/dist/chat/parts.d.ts.map +0 -1
  199. package/dist/chat/parts.js +0 -119
  200. package/dist/chat/process.d.ts +0 -20
  201. package/dist/chat/process.d.ts.map +0 -1
  202. package/dist/chat/process.js +0 -32
  203. package/dist/chat/provider.d.ts +0 -63
  204. package/dist/chat/provider.d.ts.map +0 -1
  205. package/dist/chat/provider.js +0 -620
  206. package/dist/chat/question.d.ts +0 -9
  207. package/dist/chat/question.d.ts.map +0 -1
  208. package/dist/chat/question.js +0 -80
  209. package/dist/chat/questions.d.ts +0 -31
  210. package/dist/chat/questions.d.ts.map +0 -1
  211. package/dist/chat/questions.js +0 -111
  212. package/dist/chat/read.d.ts +0 -5
  213. package/dist/chat/read.d.ts.map +0 -1
  214. package/dist/chat/read.js +0 -13
  215. package/dist/chat/ready.d.ts +0 -33
  216. package/dist/chat/ready.d.ts.map +0 -1
  217. package/dist/chat/ready.js +0 -91
  218. package/dist/chat/style.d.ts +0 -4
  219. package/dist/chat/style.d.ts.map +0 -1
  220. package/dist/chat/style.js +0 -302
  221. package/dist/chat.d.ts +0 -14
  222. package/dist/chat.d.ts.map +0 -1
  223. package/dist/chat.js +0 -8
  224. package/dist/read-side.d.ts +0 -25
  225. package/dist/read-side.d.ts.map +0 -1
  226. package/dist/read-side.js +0 -639
package/dist/host.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { composeRuntime, } from './connection.js';
2
+ import { queryKey } from './query.js';
3
+ import { untilAnswered } from './recovery.js';
2
4
  import { described } from './failure.js';
3
- import { removeRuntimeStore } from './store.js';
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,20 +16,34 @@ 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.readReference':
23
- return md.binaryFile.readReference(input[0]);
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();
45
+ case 'retry':
46
+ return md.retry();
32
47
  case 'reauthorize':
33
48
  return md.reauthorize();
34
49
  case 'roomDraft.list':
@@ -36,13 +51,15 @@ function answered(md, app, writtenBy, member, input) {
36
51
  case 'roomDraft.read':
37
52
  return md.roomDraft.read(input[0], input[1]);
38
53
  case 'roomDraft.write':
39
- 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]);
40
55
  case 'roomDraft.discard':
41
56
  return md.roomDraft.discard(input[0], input[1], input[2]);
42
57
  case 'presentation.read':
43
58
  return md.presentation.read(app);
44
59
  case 'presentation.write':
45
60
  return md.presentation.write(app, input[0]);
61
+ case 'presentation.edit':
62
+ return md.presentation.edit(app, input[0]);
46
63
  case 'conversation.list':
47
64
  return md.conversation.list();
48
65
  case 'conversation.read':
@@ -57,16 +74,32 @@ function answered(md, app, writtenBy, member, input) {
57
74
  return md.conversation.interrupt(input[0]);
58
75
  case 'conversation.kill':
59
76
  return md.conversation.kill(input[0]);
60
- case 'conversation.cancel':
61
- return md.conversation.cancel(input[0], input[1]);
62
77
  case 'conversation.delete':
63
78
  return md.conversation.delete(input[0]);
64
79
  case 'chatDraft.write':
65
80
  return md.chatDraft.write(input[0], input[1], input[2]);
81
+ case 'chatDraft.prepend':
82
+ return md.chatDraft.prepend(input[0], input[1]);
66
83
  case 'chatDraft.discard':
67
84
  return md.chatDraft.discard(input[0]);
68
85
  }
69
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
+ }
70
103
  export function serveMdRuntime(options) {
71
104
  const deploymentFacts = structuredClone(options.deploymentFacts);
72
105
  const closing = new AbortController();
@@ -80,17 +113,31 @@ export function serveMdRuntime(options) {
80
113
  const { md } = runtime;
81
114
  const attachments = new Map();
82
115
  let authorized = true;
116
+ let opening = null;
117
+ const opened = () => (opening ??= untilAnswered(() => md.loaded(), closing.signal));
83
118
  const watchFacts = (deliver) => {
84
119
  deliver(structuredClone(deploymentFacts));
85
120
  return () => { };
86
121
  };
87
- function attach(port, app, release, reach) {
122
+ function attach(port, app, release, reach, code = 'stored') {
88
123
  if (!authorized)
89
124
  throw new Error(AUTHORIZATION_ENDED);
90
125
  const writtenBy = release === undefined ? undefined : { app, release };
91
- const view = runtime.within(reach ?? null);
126
+ let facts = { target: app, code, space: null };
127
+ const view = runtime.within(reach ?? null, facts);
92
128
  const observations = new Map();
129
+ const followed = new Set();
130
+ const answeredKeys = new Set();
131
+ let awaited = null;
93
132
  let serving = true;
133
+ const answeredQuery = (query) => {
134
+ answeredKeys.add(queryKey(query));
135
+ if (awaited === null || !awaited.keys.every((key) => answeredKeys.has(key)))
136
+ return;
137
+ const { done } = awaited;
138
+ awaited = null;
139
+ done();
140
+ };
94
141
  const send = (message) => {
95
142
  port.postMessage(message);
96
143
  };
@@ -101,6 +148,8 @@ export function serveMdRuntime(options) {
101
148
  for (const end of observations.values())
102
149
  end();
103
150
  observations.clear();
151
+ for (const end of [...followed])
152
+ end();
104
153
  attachments.delete(detach);
105
154
  };
106
155
  const observe = (id, topic, input) => {
@@ -110,10 +159,26 @@ export function serveMdRuntime(options) {
110
159
  return;
111
160
  send(resolved ? { kind: 'event', id, value } : { kind: 'result', id, value });
112
161
  resolved = true;
162
+ if (topic === 'query' && answeredMessage(value))
163
+ answeredQuery(input[0]);
113
164
  };
114
165
  observations.set(id, topic === 'deployment-facts'
115
166
  ? watchFacts(deliver)
116
- : (NARROWED.has(WIRE_REACH.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
167
+ : (NARROWED.has(WIRE.topics[topic]) ? view : runtime).watch(topic, topic === 'presentation' ? [app] : input, deliver));
168
+ };
169
+ const reply = async (id, query, pending) => {
170
+ try {
171
+ const value = await pending;
172
+ if (!serving)
173
+ return;
174
+ send({ kind: 'result', id, value });
175
+ if (query !== undefined && answeredResult(value))
176
+ answeredQuery(query);
177
+ }
178
+ catch (error) {
179
+ if (serving)
180
+ send({ kind: 'failure', id, ...described(error) });
181
+ }
117
182
  };
118
183
  const serve = async (message) => {
119
184
  if (message.kind === 'hello')
@@ -124,21 +189,24 @@ export function serveMdRuntime(options) {
124
189
  return;
125
190
  }
126
191
  try {
127
- if (message.kind !== 'observe' || message.topic !== 'room-drafts')
192
+ if (message.kind !== 'observe')
128
193
  await md.loaded();
194
+ else if (message.topic !== 'room-drafts')
195
+ await opened();
129
196
  if (message.kind === 'observe') {
130
197
  if (serving)
131
198
  observe(message.id, message.topic, message.input);
132
199
  return;
133
200
  }
134
- const value = await answered(NARROWED.has(WIRE_REACH.members[message.member]) ? view.md : md, app, writtenBy, message.member, message.input);
135
- if (serving)
136
- send({ kind: 'result', id: message.id, value });
137
201
  }
138
202
  catch (error) {
139
203
  if (serving)
140
204
  send({ kind: 'failure', id: message.id, ...described(error) });
205
+ return;
141
206
  }
207
+ const { id, member, input } = message;
208
+ const pending = attempted(() => answered(NARROWED.has(WIRE.members[member].reach) ? view.md : md, app, writtenBy, member, input));
209
+ return reply(id, member === 'query' ? input[0] : undefined, pending);
142
210
  };
143
211
  port.addEventListener('message', (event) => {
144
212
  if (!serving)
@@ -157,10 +225,43 @@ export function serveMdRuntime(options) {
157
225
  if (serving)
158
226
  view.narrow(next);
159
227
  },
228
+ code(next, space) {
229
+ if (!serving)
230
+ return;
231
+ facts = { ...facts, code: next, space };
232
+ view.facts(facts);
233
+ },
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 };
240
+ },
241
+ readiness(deliver) {
242
+ if (!serving)
243
+ return () => { };
244
+ const stop = view.watch('readiness', [], (value) => {
245
+ if (serving)
246
+ deliver(value);
247
+ });
248
+ const end = () => {
249
+ followed.delete(end);
250
+ stop();
251
+ };
252
+ followed.add(end);
253
+ return end;
254
+ },
160
255
  };
161
256
  }
162
257
  return {
163
258
  attach,
259
+ seed(entry) {
260
+ runtime.seed(entry);
261
+ },
262
+ persisted(answer) {
263
+ runtime.persisted(answer);
264
+ },
164
265
  async endAuthorization(holder) {
165
266
  authorized = false;
166
267
  for (const [detach, send] of [...attachments]) {
@@ -168,16 +269,14 @@ export function serveMdRuntime(options) {
168
269
  detach();
169
270
  }
170
271
  close();
171
- if (!(await removeRuntimeStore(holder)))
272
+ if (!(await options.database.ask({ kind: 'authored.end', holder: holder ?? null }))) {
172
273
  await options.shell.dropGeneration();
173
- },
174
- lose(locators) {
175
- return runtime.lose(locators);
274
+ }
176
275
  },
177
276
  stop() {
178
277
  return runtime.stop();
179
278
  },
180
279
  };
181
280
  }
281
+ export { entrySeedOf } from './seed.js';
182
282
  export { createRecovery, retryDelay, } from './recovery.js';
183
- export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, STORE_SCHEMA, } from './store.js';
@@ -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
@@ -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,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
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
@@ -27,9 +27,6 @@ export function chatDraftRevision() {
27
27
  export function transferIdentity() {
28
28
  return randomIdentity();
29
29
  }
30
- export function indexGeneration() {
31
- return randomIdentity();
32
- }
33
30
  export function binaryLocalId() {
34
31
  return randomIdentity();
35
32
  }
package/dist/index.d.ts CHANGED
@@ -1,21 +1,26 @@
1
- export type { AcceptedMessage, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BinaryFile, BinaryRequest, BinaryResult, ReferrerScope, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ChangeAuthor, ContractUnavailable, ConversationAction, ConversationAgents, ConversationEvent, ConversationHistories, ConversationHistoryPage, ConversationHistoryRequest, ConversationMessage, ConversationStream, DiscoverResult, DiscoveredRoom, Discovery, HistoryAuthor, HistoryRequest, HistoryResult, HistoryRetention, HistoryRevision, HeldContent, HeldRoom, KeptReceipt, ListedConversation, MdModelIdentity, Member, MutationRequest, MutationResult, PageToken, ProviderLimit, ProviderRefusal, RefreshPage, RefreshRequest, RefreshResult, Retention, RetryableRefusal, RevokedAuthorization, RoomModels, RoomNotReadable, RoomStream, RoomStreamEvent, RoomVersionAt, ServiceMode, ServiceModeSignal, StreamReceipts, TransportUncertainty, TurnContext, TurnOperation, TypedSelection, } from './adapter.js';
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 { ChatDraftFile, FileDeclaration } from './file.js';
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, 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, BinaryReference } from './binary.js';
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 { DocumentHit, DocumentPart, MessageHit, PendingConversation, SearchCoverage, SearchHits, SearchPending, SearchRequest, SearchResult, } from './search.js';
11
+ export type { SearchFound, SearchHit, SearchRequest, SearchResult } from './search.js';
13
12
  export { departure } from './change.js';
14
- export { SESSION_STARTED } from './conversation.js';
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';
15
16
  export { changeBatchIdentity } from './identity.js';
17
+ export { paced, ROW_WEIGHT, stepped } from './turn.js';
18
+ export { untilAnswered } from './recovery.js';
19
+ export { entriesIn, patching, sortedKeys } from './shared.js';
16
20
  export { attempts, identities, intentOf, type Answered, type Attempt, type Attempts, type Identities, } from './attempt.js';
17
21
  export { expectedList, expecting, type ExpectedOf, type Expecting } from './expectation.js';
18
22
  export type { RuntimeShell } from './durability.js';
23
+ export type { CodeAvailability, ConnectionAvailability, ConversationCoverage, Durability, HouseOutcome, Installation, InstallationAmount, InstallationStep, Persistence, Readiness, ReadinessStatus, RoomCoverage, RoomPreparation, Space, TargetCoverage, } from './readiness.js';
19
24
  export type { AttentionEntry, SyncStatus } from './status.js';
20
25
  export type { Awaits, Backlink, CoveredRoom, Direction, DocumentQuery, DocumentResult, Filter, GroupQuery, GroupResult, Key, LocalQuery, OrderOptions, PendingResult, PendingRoom, Predicate, QueryCoverage, QueryDocument, QueryGroup, QueryResult, QueryRows, Related, Select, Value, Where, } from './query.js';
21
26
  export type { MdType, ModelIdentity, ModelSnapshot, ModelState, ModelResult, TypesResult, ValidationReceipt, } from './model.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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,10 @@
1
1
  export { departure } from './change.js';
2
- export { SESSION_STARTED } from './conversation.js';
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';
3
5
  export { changeBatchIdentity } from './identity.js';
6
+ export { paced, ROW_WEIGHT, stepped } from './turn.js';
7
+ export { untilAnswered } from './recovery.js';
8
+ export { entriesIn, patching, sortedKeys } from './shared.js';
4
9
  export { attempts, identities, intentOf, } from './attempt.js';
5
10
  export { expectedList, expecting } from './expectation.js';
package/dist/live.d.ts ADDED
@@ -0,0 +1,22 @@
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 { QueryRoom } from './tables.js';
5
+ export type Cover = {
6
+ coverage: QueryCoverage;
7
+ rooms: readonly QueryRoom[];
8
+ } | PendingResult;
9
+ export type Ran = KeyedResult & {
10
+ readonly current: () => boolean;
11
+ };
12
+ export type Run = (plan: Plan, cover: () => Cover) => Promise<Ran>;
13
+ type Listener = (message: QueryMessage) => void;
14
+ export type LiveQueries = {
15
+ touched(set: ChangeSet): void;
16
+ recover(): void;
17
+ watch(plan: Plan, identity: string, cover: () => Cover, deliver: Listener): () => void;
18
+ close(): void;
19
+ };
20
+ export declare function createLiveQueries(run: Run): LiveQueries;
21
+ export {};
22
+ //# 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;AAErE,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,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM,IAAI,CAAC;IACvF,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAmCF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,CAuFvD"}
package/dist/live.js ADDED
@@ -0,0 +1,123 @@
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) {
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 {
68
+ entry.dirty = false;
69
+ }
70
+ finally {
71
+ entry.running = false;
72
+ }
73
+ })();
74
+ }
75
+ return {
76
+ touched(set) {
77
+ for (const entry of entries.values()) {
78
+ if (affected(entry.plan, set))
79
+ schedule(entry);
80
+ }
81
+ },
82
+ recover() {
83
+ for (const entry of entries.values()) {
84
+ if (entry.running)
85
+ continue;
86
+ if (entry.digest === undefined || shown(entry) !== entry.covered)
87
+ schedule(entry);
88
+ }
89
+ },
90
+ watch(plan, identity, cover, listener) {
91
+ let entry = entries.get(identity);
92
+ if (entry === undefined) {
93
+ entry = {
94
+ plan,
95
+ cover,
96
+ listeners: new Set(),
97
+ fresh: new Set(),
98
+ ready: new Set(),
99
+ digest: undefined,
100
+ covered: '',
101
+ dirty: false,
102
+ running: false,
103
+ };
104
+ entries.set(identity, entry);
105
+ }
106
+ const held = entry;
107
+ held.listeners.add(listener);
108
+ held.fresh.add(listener);
109
+ schedule(held);
110
+ return () => {
111
+ held.listeners.delete(listener);
112
+ held.fresh.delete(listener);
113
+ held.ready.delete(listener);
114
+ if (held.listeners.size === 0 && entries.get(identity) === held)
115
+ entries.delete(identity);
116
+ };
117
+ },
118
+ close() {
119
+ closed = true;
120
+ entries.clear();
121
+ },
122
+ };
123
+ }
@@ -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"}