@agentshouse/mdruntime 0.1.0-c0b4d0492dec3 → 0.1.0-c0c0511ef12ee

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 (212) hide show
  1. package/dist/acceptance.d.ts +6 -0
  2. package/dist/acceptance.d.ts.map +1 -0
  3. package/dist/acceptance.js +385 -0
  4. package/dist/actions.d.ts +20 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +251 -0
  7. package/dist/adapter.d.ts +5 -0
  8. package/dist/adapter.d.ts.map +1 -1
  9. package/dist/bootstrap.js +1 -0
  10. package/dist/cell.d.ts +6 -0
  11. package/dist/cell.d.ts.map +1 -0
  12. package/dist/cell.js +9 -0
  13. package/dist/change.d.ts.map +1 -1
  14. package/dist/change.js +4 -2
  15. package/dist/chat-types.d.ts +2 -0
  16. package/dist/chat-types.d.ts.map +1 -1
  17. package/dist/chat-types.js +11 -0
  18. package/dist/client.d.ts +7 -1
  19. package/dist/client.d.ts.map +1 -1
  20. package/dist/client.js +1 -1
  21. package/dist/compile.d.ts.map +1 -1
  22. package/dist/compile.js +15 -21
  23. package/dist/connection.d.ts +4 -148
  24. package/dist/connection.d.ts.map +1 -1
  25. package/dist/connection.js +100 -5361
  26. package/dist/conversation-live.d.ts +136 -0
  27. package/dist/conversation-live.d.ts.map +1 -0
  28. package/dist/conversation-live.js +248 -0
  29. package/dist/conversation-row.d.ts.map +1 -1
  30. package/dist/conversation-row.js +7 -1
  31. package/dist/conversation.d.ts +22 -35
  32. package/dist/conversation.d.ts.map +1 -1
  33. package/dist/conversation.js +827 -972
  34. package/dist/discovery.d.ts +10 -0
  35. package/dist/discovery.d.ts.map +1 -0
  36. package/dist/discovery.js +175 -0
  37. package/dist/durability.d.ts +9 -0
  38. package/dist/durability.d.ts.map +1 -1
  39. package/dist/figures.d.ts +1 -0
  40. package/dist/figures.d.ts.map +1 -1
  41. package/dist/figures.js +2 -2
  42. package/dist/holdings.d.ts +29 -0
  43. package/dist/holdings.d.ts.map +1 -0
  44. package/dist/holdings.js +95 -0
  45. package/dist/host.d.ts +1 -0
  46. package/dist/host.d.ts.map +1 -1
  47. package/dist/host.js +4 -1
  48. package/dist/index.d.ts +12 -3
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +3 -1
  51. package/dist/install.d.ts +56 -0
  52. package/dist/install.d.ts.map +1 -0
  53. package/dist/install.js +554 -0
  54. package/dist/lifecycle.d.ts +7 -0
  55. package/dist/lifecycle.d.ts.map +1 -0
  56. package/dist/lifecycle.js +268 -0
  57. package/dist/listing.d.ts +53 -0
  58. package/dist/listing.d.ts.map +1 -0
  59. package/dist/listing.js +176 -0
  60. package/dist/live.d.ts.map +1 -1
  61. package/dist/live.js +0 -2
  62. package/dist/locks.d.ts +9 -0
  63. package/dist/locks.d.ts.map +1 -0
  64. package/dist/locks.js +61 -0
  65. package/dist/log.d.ts +1 -0
  66. package/dist/log.d.ts.map +1 -1
  67. package/dist/lost.d.ts +5 -0
  68. package/dist/lost.d.ts.map +1 -0
  69. package/dist/lost.js +61 -0
  70. package/dist/media.d.ts +1 -1
  71. package/dist/media.d.ts.map +1 -1
  72. package/dist/media.js +3 -3
  73. package/dist/memory.d.ts.map +1 -1
  74. package/dist/memory.js +1 -0
  75. package/dist/messages.d.ts +1 -1
  76. package/dist/messages.d.ts.map +1 -1
  77. package/dist/messages.js +10 -16
  78. package/dist/models.d.ts +14 -0
  79. package/dist/models.d.ts.map +1 -0
  80. package/dist/models.js +195 -0
  81. package/dist/observation.d.ts.map +1 -1
  82. package/dist/observation.js +12 -17
  83. package/dist/opened.js +3 -3
  84. package/dist/opening.d.ts +4 -0
  85. package/dist/opening.d.ts.map +1 -0
  86. package/dist/opening.js +57 -0
  87. package/dist/outcome.d.ts +3 -1
  88. package/dist/outcome.d.ts.map +1 -1
  89. package/dist/parts.d.ts +1 -0
  90. package/dist/parts.d.ts.map +1 -1
  91. package/dist/parts.js +8 -0
  92. package/dist/paths.d.ts +1 -0
  93. package/dist/paths.d.ts.map +1 -1
  94. package/dist/paths.js +22 -0
  95. package/dist/preparation.d.ts +20 -0
  96. package/dist/preparation.d.ts.map +1 -0
  97. package/dist/preparation.js +226 -0
  98. package/dist/queries.d.ts +16 -0
  99. package/dist/queries.d.ts.map +1 -0
  100. package/dist/queries.js +272 -0
  101. package/dist/query.d.ts +0 -1
  102. package/dist/query.d.ts.map +1 -1
  103. package/dist/questions.d.ts +2 -0
  104. package/dist/questions.d.ts.map +1 -1
  105. package/dist/questions.js +5 -1
  106. package/dist/reach.d.ts +3 -1
  107. package/dist/reach.d.ts.map +1 -1
  108. package/dist/reach.js +1 -1
  109. package/dist/react.d.ts +7 -1
  110. package/dist/react.d.ts.map +1 -1
  111. package/dist/readiness.d.ts +0 -1
  112. package/dist/readiness.d.ts.map +1 -1
  113. package/dist/reads.d.ts +2 -0
  114. package/dist/reads.d.ts.map +1 -1
  115. package/dist/reads.js +51 -8
  116. package/dist/refusal.d.ts +5 -0
  117. package/dist/refusal.d.ts.map +1 -0
  118. package/dist/refusal.js +55 -0
  119. package/dist/replica.d.ts +1 -3
  120. package/dist/replica.d.ts.map +1 -1
  121. package/dist/replica.js +3 -2
  122. package/dist/room-draft.d.ts +1 -3
  123. package/dist/room-draft.d.ts.map +1 -1
  124. package/dist/room-draft.js +3 -3
  125. package/dist/room-drafts.d.ts +24 -0
  126. package/dist/room-drafts.d.ts.map +1 -0
  127. package/dist/room-drafts.js +217 -0
  128. package/dist/runtime.d.ts +43 -0
  129. package/dist/runtime.d.ts.map +1 -0
  130. package/dist/runtime.js +1 -0
  131. package/dist/save.d.ts +5 -1
  132. package/dist/save.d.ts.map +1 -1
  133. package/dist/save.js +12 -14
  134. package/dist/saves.d.ts +70 -0
  135. package/dist/saves.d.ts.map +1 -0
  136. package/dist/saves.js +1005 -0
  137. package/dist/seed.d.ts +11 -2
  138. package/dist/seed.d.ts.map +1 -1
  139. package/dist/seed.js +71 -1
  140. package/dist/shared.d.ts +1 -6
  141. package/dist/shared.d.ts.map +1 -1
  142. package/dist/shared.js +13 -95
  143. package/dist/shown.d.ts +31 -0
  144. package/dist/shown.d.ts.map +1 -0
  145. package/dist/shown.js +292 -0
  146. package/dist/socket/admission.d.ts +7 -0
  147. package/dist/socket/admission.d.ts.map +1 -0
  148. package/dist/socket/admission.js +39 -0
  149. package/dist/socket/answers.d.ts +6 -0
  150. package/dist/socket/answers.d.ts.map +1 -0
  151. package/dist/socket/answers.js +20 -0
  152. package/dist/socket/lanes.d.ts +20 -0
  153. package/dist/socket/lanes.d.ts.map +1 -0
  154. package/dist/socket/lanes.js +77 -0
  155. package/dist/socket/reads.d.ts +10 -0
  156. package/dist/socket/reads.d.ts.map +1 -0
  157. package/dist/socket/reads.js +31 -0
  158. package/dist/socket/rooms.d.ts +44 -0
  159. package/dist/socket/rooms.d.ts.map +1 -0
  160. package/dist/socket/rooms.js +90 -0
  161. package/dist/socket/session.d.ts +38 -0
  162. package/dist/socket/session.d.ts.map +1 -0
  163. package/dist/socket/session.js +23 -0
  164. package/dist/socket.d.ts +70 -0
  165. package/dist/socket.d.ts.map +1 -0
  166. package/dist/socket.js +175 -0
  167. package/dist/source.d.ts.map +1 -1
  168. package/dist/source.js +5 -4
  169. package/dist/store/fences.d.ts +16 -0
  170. package/dist/store/fences.d.ts.map +1 -0
  171. package/dist/store/fences.js +26 -0
  172. package/dist/store/installs.d.ts +30 -0
  173. package/dist/store/installs.d.ts.map +1 -0
  174. package/dist/store/installs.js +34 -0
  175. package/dist/store/readiness.d.ts +10 -0
  176. package/dist/store/readiness.d.ts.map +1 -0
  177. package/dist/store/readiness.js +52 -0
  178. package/dist/store/records.d.ts +212 -0
  179. package/dist/store/records.d.ts.map +1 -0
  180. package/dist/store/records.js +431 -0
  181. package/dist/store/room-held.d.ts +8 -0
  182. package/dist/store/room-held.d.ts.map +1 -0
  183. package/dist/store/room-held.js +17 -0
  184. package/dist/store/space.d.ts +11 -0
  185. package/dist/store/space.d.ts.map +1 -0
  186. package/dist/store/space.js +41 -0
  187. package/dist/store/watchers.d.ts +17 -0
  188. package/dist/store/watchers.d.ts.map +1 -0
  189. package/dist/store/watchers.js +56 -0
  190. package/dist/store/writes.d.ts +24 -0
  191. package/dist/store/writes.d.ts.map +1 -0
  192. package/dist/store/writes.js +125 -0
  193. package/dist/store.d.ts +111 -206
  194. package/dist/store.d.ts.map +1 -1
  195. package/dist/store.js +142 -398
  196. package/dist/stored.d.ts +1 -1
  197. package/dist/stored.d.ts.map +1 -1
  198. package/dist/stored.js +19 -7
  199. package/dist/surface.d.ts +88 -0
  200. package/dist/surface.d.ts.map +1 -0
  201. package/dist/surface.js +223 -0
  202. package/dist/sync.d.ts +19 -0
  203. package/dist/sync.d.ts.map +1 -0
  204. package/dist/sync.js +532 -0
  205. package/dist/tables.d.ts +13 -4
  206. package/dist/tables.d.ts.map +1 -1
  207. package/dist/tables.js +24 -8
  208. package/dist/tallies.js +5 -5
  209. package/dist/wire.d.ts +2 -1
  210. package/dist/wire.d.ts.map +1 -1
  211. package/dist/wire.js +1 -0
  212. package/package.json +2 -2
package/dist/stored.js CHANGED
@@ -4,6 +4,7 @@ import { described, derived, heldOf } from './rows.js';
4
4
  export const REPLICA_TABLES = [
5
5
  'CREATE TABLE replica_keys (key INTEGER PRIMARY KEY AUTOINCREMENT, locator TEXT NOT NULL, transfer TEXT NOT NULL, fingerprint TEXT NOT NULL, rederiving INTEGER)',
6
6
  'CREATE TABLE replica_rooms (locator TEXT PRIMARY KEY, key INTEGER NOT NULL, record TEXT NOT NULL, documents INTEGER NOT NULL DEFAULT 0) WITHOUT ROWID',
7
+ "CREATE INDEX replica_rooms_model ON replica_rooms (json_extract(record, '$.model.snapshot.identity'), json_extract(record, '$.model.snapshot.version'))",
7
8
  'CREATE TABLE replica_models (identity TEXT NOT NULL, version TEXT NOT NULL, schema TEXT NOT NULL, PRIMARY KEY (identity, version)) WITHOUT ROWID',
8
9
  "CREATE TABLE replica_entries (id INTEGER PRIMARY KEY, key INTEGER NOT NULL, layer INTEGER NOT NULL, path TEXT NOT NULL, visible INTEGER NOT NULL, present INTEGER NOT NULL, queried INTEGER NOT NULL, binary TEXT, revision TEXT, file_id TEXT, change TEXT, written TEXT, type TEXT, declared TEXT, folder TEXT NOT NULL, fields TEXT, links TEXT, part TEXT, created TEXT, created_instant TEXT, changed_instant TEXT, bytes INTEGER GENERATED ALWAYS AS (CASE WHEN binary IS NULL THEN length(CAST(content AS BLOB)) ELSE binary ->> '$.byteLength' END) STORED, content TEXT)",
9
10
  'CREATE UNIQUE INDEX replica_entries_path ON replica_entries (key, layer, path)',
@@ -211,7 +212,7 @@ export function resume(connection, request) {
211
212
  }
212
213
  const key = held?.key ?? newKey(connection, request.locator, request.transfer, request.fingerprint, false);
213
214
  recomposed(connection, key, request.fingerprint);
214
- if (copied.length > 0 && request.published !== null) {
215
+ if (copied.length > 0) {
215
216
  owing(connection, key);
216
217
  const named = JSON.stringify(copied);
217
218
  connection.run(`INSERT INTO replica_entries (key, layer, path, visible, present, queried, content, binary, revision, file_id, created, created_instant, change, changed_instant, written, type, declared, folder, fields, links, part) SELECT ?, ${CONFIRMED}, path, 1, 1, queried, content, binary, revision, file_id, created, created_instant, change, changed_instant, written, type, declared, folder, fields, links, part FROM replica_entries WHERE key = ? AND layer = ${CONFIRMED} AND present = 1 AND part IN (SELECT value FROM json_each(?)) ORDER BY path`, [key, request.published, named]);
@@ -340,8 +341,10 @@ function commitRoom(connection, room) {
340
341
  const changed = [...touched];
341
342
  revealed(connection, room.key, changed);
342
343
  if (room.record !== undefined) {
344
+ const replaced = heldModel(connection, room.locator);
343
345
  connection.run(KEEP_MODEL, [room.record, room.record, room.record, room.record]);
344
346
  connection.run(`INSERT OR REPLACE INTO replica_rooms (locator, key, record) VALUES (?, ?, ${MODEL_LEFT})`, [room.locator, room.key, room.record, room.record, room.record]);
347
+ letGo(connection, replaced);
345
348
  }
346
349
  return room.published === undefined ? changed : null;
347
350
  }
@@ -351,11 +354,21 @@ const KEEP_MODEL = `INSERT OR IGNORE INTO replica_models (identity, version, sch
351
354
  json_extract(?, '${SCHEMA}')
352
355
  WHERE json_type(?, '${SCHEMA}') = 'text'`;
353
356
  const MODEL_LEFT = `CASE WHEN json_type(?, '${SCHEMA}') = 'text' THEN json_set(?, '${SCHEMA}', json('null')) ELSE ? END`;
354
- const UNHELD_MODELS = `DELETE FROM replica_models WHERE NOT EXISTS (
357
+ const HELD_MODEL = `SELECT json_extract(record, '$.model.snapshot.identity') AS identity,
358
+ json_extract(record, '$.model.snapshot.version') AS version
359
+ FROM replica_rooms WHERE locator = ?`;
360
+ const UNHELD_MODEL = `DELETE FROM replica_models WHERE identity = ? AND version = ? AND NOT EXISTS (
355
361
  SELECT 1 FROM replica_rooms r
356
362
  WHERE json_extract(r.record, '$.model.snapshot.identity') = replica_models.identity
357
363
  AND json_extract(r.record, '$.model.snapshot.version') = replica_models.version
358
364
  )`;
365
+ function heldModel(connection, locator) {
366
+ return connection.rows(HELD_MODEL, [locator])[0];
367
+ }
368
+ function letGo(connection, model) {
369
+ if (model !== undefined)
370
+ connection.run(UNHELD_MODEL, [model.identity, model.version]);
371
+ }
359
372
  const HELD_RECORDS = `SELECT r.locator, r.key, CASE WHEN m.schema IS NULL THEN r.record
360
373
  ELSE json_set(r.record, '${SCHEMA}', m.schema) END AS record
361
374
  FROM replica_rooms r
@@ -375,8 +388,6 @@ export function commit(connection, rooms) {
375
388
  const [held] = connection.rows('SELECT rederiving FROM replica_keys WHERE key = ?', [room.key]);
376
389
  indexed[room.locator] = held !== undefined && held.rederiving === null;
377
390
  }
378
- if (rooms.some((room) => room.record !== undefined))
379
- connection.run(UNHELD_MODELS);
380
391
  return { changed, indexed };
381
392
  }
382
393
  function rootsOf(connection, locator) {
@@ -389,9 +400,10 @@ export function fenceRooms(connection, locators) {
389
400
  for (const row of connection.rows('SELECT key FROM replica_keys WHERE locator = ? UNION SELECT key FROM replica_rooms WHERE locator = ?', [locator, locator])) {
390
401
  erasing(connection, number(row.key), locator);
391
402
  }
403
+ const replaced = heldModel(connection, locator);
392
404
  connection.run('DELETE FROM replica_rooms WHERE locator = ?', [locator]);
405
+ letGo(connection, replaced);
393
406
  }
394
- connection.run(UNHELD_MODELS);
395
407
  return null;
396
408
  }
397
409
  export function abandon(connection, locator) {
@@ -529,8 +541,8 @@ export function referrers(connection, key, view, targets) {
529
541
  .rows(`SELECT DISTINCT e.path, l.target FROM replica_links l JOIN replica_entries e ON e.id = l.doc WHERE l.key = ? AND l.target IN (SELECT value FROM json_each(?)) AND ${viewed(view, 'e')}`, [key, paths(targets)])
530
542
  .map((row) => ({ path: text(row.path), target: text(row.target) }));
531
543
  }
532
- export function folders(connection, key, view, list) {
533
- return list.filter((path) => connection.rows(`SELECT 1 FROM replica_folders f WHERE f.key = ? AND f.layer = ${CONFIRMED} AND f.present = 1 AND f.path = ? UNION ALL SELECT 1 FROM replica_entries e WHERE e.key = ? AND ${viewed(view, 'e')} AND e.path >= ? AND e.path < ? LIMIT 1`, [key, path, key, `${path}/`, `${path}0`]).length > 0);
544
+ export function folders(connection, key, list) {
545
+ return list.filter((path) => connection.rows(`SELECT 1 FROM replica_folders f WHERE f.key = ? AND f.layer = ${CONFIRMED} AND f.present = 1 AND f.path = ? UNION ALL SELECT 1 FROM replica_entries e WHERE e.key = ? AND ${viewed('visible', 'e')} AND e.path >= ? AND e.path < ? LIMIT 1`, [key, path, key, `${path}/`, `${path}0`]).length > 0);
534
546
  }
535
547
  export function typedWithin(connection, key, view, roots, within) {
536
548
  return (connection.rows(`SELECT 1 FROM replica_entries e WHERE e.key = ? AND ${viewed(view, 'e')} AND e.declared IS NOT NULL AND e.declared <> 'any' AND ${within ? '' : 'NOT '}${beneathRoots('e.path')} LIMIT 1`, [key, JSON.stringify(roots)]).length > 0);
@@ -0,0 +1,88 @@
1
+ import type { DocumentQuery, GroupQuery } from '@agentshouse/mdmodel';
2
+ import { type HistoryQuery } from './actions.js';
3
+ import type { Member, ServiceMode } from './adapter.js';
4
+ import type { WrittenBy } from './change.js';
5
+ import { type ChatDraftSurface, type ConversationEntry, type ConversationAgent, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
6
+ import type { UnsentWork } from './durability.js';
7
+ import type { FiguresResult } from './figures.js';
8
+ import { type Holdings } from './holdings.js';
9
+ import { type AppRoom } from './listing.js';
10
+ import { type TypesResult } from './model.js';
11
+ import { type Observation } from './observation.js';
12
+ import type { HistoryAnswer, QueueEntry, Resolution, CallResult } from './outcome.js';
13
+ import { type ReadinessPort } from './preparation.js';
14
+ import type { DocumentResult, GroupResult, PendingResult } from './query.js';
15
+ import { type NarrowedView, type PortReach, type RuntimeView } from './reach.js';
16
+ import type { Persistence, Readiness } from './readiness.js';
17
+ import type { ObservedRead } from './reads.js';
18
+ import type { RoomDraft } from './room-draft.js';
19
+ import { type PresentationSurface, type RoomDraftSurface } from './room-drafts.js';
20
+ import type { Runtime } from './runtime.js';
21
+ import { type BinaryFileSurface, type SavedParts, type SavedRoomDraft, type SaveResult } from './saves.js';
22
+ import type { SearchRequest, SearchResult } from './search.js';
23
+ import { type EntrySeed } from './seed.js';
24
+ import type { ConnectionRefusal } from './socket.js';
25
+ import type { SyncStatus } from './status.js';
26
+ export type RoomSchemas = {
27
+ collection: TypesResult;
28
+ typedSelection: TypesResult | null;
29
+ };
30
+ export type MdRuntime = {
31
+ loaded(): Promise<void>;
32
+ rooms(): Promise<readonly AppRoom[]>;
33
+ query: {
34
+ (query: DocumentQuery): Promise<DocumentResult | PendingResult>;
35
+ (query: GroupQuery): Promise<GroupResult | PendingResult>;
36
+ };
37
+ search(request: SearchRequest): Promise<SearchResult>;
38
+ types(locator: string): Promise<RoomSchemas>;
39
+ roomDraft: RoomDraftSurface;
40
+ conversation: ConversationSurface;
41
+ chatDraft: ChatDraftSurface;
42
+ presentation: PresentationSurface;
43
+ save(room: string, roomDrafts: readonly SavedRoomDraft[], writtenBy?: WrittenBy): Promise<SaveResult>;
44
+ saveParts(room: string, parts: readonly SavedParts[], writtenBy?: WrittenBy): Promise<SaveResult>;
45
+ history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryAnswer>;
46
+ resolve(room: string, path: string, destination: string): Promise<Resolution>;
47
+ binaryFile: BinaryFileSurface;
48
+ call(name: string, input: unknown): Promise<CallResult>;
49
+ reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
50
+ log(): string;
51
+ persistence(): boolean;
52
+ retry(): Promise<void>;
53
+ cleanUp(): Promise<number>;
54
+ unsent(): Promise<readonly UnsentWork[]>;
55
+ reset(): Promise<void>;
56
+ readAgain(): Promise<void>;
57
+ observe: {
58
+ (topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
59
+ (topic: 'readiness'): Promise<Observation<Readiness>>;
60
+ (topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
61
+ (topic: 'storage-loss'): Promise<Observation<string | null>>;
62
+ (topic: 'sync-status'): Promise<Observation<SyncStatus>>;
63
+ (topic: 'service-mode'): Promise<Observation<ServiceMode>>;
64
+ (topic: 'member'): Promise<Observation<Member | null>>;
65
+ (topic: 'authority-changes'): Promise<Observation<number>>;
66
+ (topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult | PendingResult>>;
67
+ (topic: 'query', query: GroupQuery): Promise<Observation<GroupResult | PendingResult>>;
68
+ (topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
69
+ (topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
70
+ (topic: 'presentation', app: string): Promise<Observation<unknown>>;
71
+ (topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
72
+ (topic: 'conversations'): Promise<Observation<readonly ConversationEntry[]>>;
73
+ (topic: 'agents'): Promise<Observation<readonly ConversationAgent[]>>;
74
+ (topic: 'figures'): Promise<Observation<FiguresResult>>;
75
+ (topic: 'holdings'): Promise<Observation<Holdings>>;
76
+ (topic: 'read', name: string, input: unknown): Promise<Observation<ObservedRead>>;
77
+ };
78
+ reauthorize(): Promise<void>;
79
+ };
80
+ export type RuntimeTopic = 'rooms' | 'readiness' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'service-mode' | 'member' | 'authority-changes' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation' | 'conversations' | 'agents' | 'figures' | 'holdings' | 'read';
81
+ export type ComposedRuntime = RuntimeView & {
82
+ seed(entry: EntrySeed): void;
83
+ stop(): Promise<void>;
84
+ persisted(answer: Persistence): void;
85
+ within(reach: PortReach | null, port: ReadinessPort): NarrowedView;
86
+ };
87
+ export declare function composedRuntime(runtime: Runtime): ComposedRuntime;
88
+ //# sourceMappingURL=surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { called, located, readHistory, resolveReference } from './actions.js';
2
+ import { chatDraftSurface, conversationSurface, watchConversation, watchConversationAgents, watchConversationList, } from './conversation.js';
3
+ import { CLEANED_TOPIC, watchHoldings } from './holdings.js';
4
+ import { reachedBy, writtenAfter } from './install.js';
5
+ import { declarationOf, listingNow, modelIn, shownRooms } from './listing.js';
6
+ import { stop } from './lifecycle.js';
7
+ import { locked, lockedRooms, watchLocks } from './locks.js';
8
+ import { modelTypes, NO_MODEL } from './model.js';
9
+ import { observing } from './observation.js';
10
+ import { watchReadiness } from './preparation.js';
11
+ import { planned, rowsQuery, searched, watchPlan, watchPlanned } from './queries.js';
12
+ import { narrowed, } from './reach.js';
13
+ import { presentationSurface, roomDraftSurface, watchPresentation, watchRoomDrafts, } from './room-drafts.js';
14
+ import { binaryFileSurface, saveParts, saveRoomDrafts, } from './saves.js';
15
+ import { keepEntrySeed } from './seed.js';
16
+ import { AUTHORITY_TOPIC, emitKnownRooms, entriesOf, MEMBER_TOPIC, queueTopic, REFUSAL_TOPIC, ROOMS_TOPIC, SERVICE_MODE_TOPIC, STATUS_TOPIC, STORAGE_LOSS_TOPIC, } from './shown.js';
17
+ import { OPENING_LANE, sync } from './sync.js';
18
+ function told(store, topic, deliver, current) {
19
+ const watcher = store.watch(topic, deliver);
20
+ deliver(current);
21
+ return watcher.stop;
22
+ }
23
+ function watchRooms(runtime, deliver) {
24
+ const { store } = runtime;
25
+ const watcher = store.watch(ROOMS_TOPIC, deliver);
26
+ emitKnownRooms(runtime);
27
+ return () => {
28
+ watcher.stop();
29
+ if (store.watching(ROOMS_TOPIC, 'ready').length === 0)
30
+ store.device.set({ roomsShown: null });
31
+ };
32
+ }
33
+ function watchMember({ store }, deliver) {
34
+ const watcher = store.watch(MEMBER_TOPIC, deliver);
35
+ void store
36
+ .open()
37
+ .then((local) => local.facts())
38
+ .then(({ member }) => {
39
+ if (watcher.held())
40
+ deliver(member);
41
+ }, () => { });
42
+ return watcher.stop;
43
+ }
44
+ function watchQueue(runtime, locator, deliver) {
45
+ const { store } = runtime;
46
+ const watcher = store.watch(queueTopic(locator), deliver);
47
+ void store.publication(async () => {
48
+ if (!watcher.held())
49
+ return;
50
+ const entries = await entriesOf(runtime, locator);
51
+ if (watcher.held())
52
+ watcher.answer(entries);
53
+ });
54
+ return watcher.stop;
55
+ }
56
+ function watching(runtime) {
57
+ const { store, socket, conversations, figures, lastAnswers } = runtime;
58
+ return (topic, input, deliver, fail) => {
59
+ const session = socket.session.now();
60
+ if (topic === 'room-drafts')
61
+ return watchRoomDrafts(runtime, deliver);
62
+ if (topic === 'conversation') {
63
+ return watchConversation(conversations, input[0], input[1], deliver);
64
+ }
65
+ if (topic === 'conversations')
66
+ return watchConversationList(conversations, deliver);
67
+ if (topic === 'agents')
68
+ return watchConversationAgents(conversations, deliver);
69
+ if (topic === 'figures')
70
+ return figures.watch(deliver, fail);
71
+ if (topic === 'holdings')
72
+ return watchHoldings(runtime, deliver, fail);
73
+ if (topic === 'read')
74
+ return lastAnswers.watch(input[0], input[1], deliver);
75
+ if (topic === 'presentation')
76
+ return watchPresentation(runtime, input[0], deliver);
77
+ if (topic === 'readiness') {
78
+ return watchReadiness(runtime, { target: '', code: 'stored' }, null, deliver);
79
+ }
80
+ if (topic === 'rooms')
81
+ return watchRooms(runtime, deliver);
82
+ if (topic === 'connection-refusal') {
83
+ return told(store, REFUSAL_TOPIC, deliver, session.refusal);
84
+ }
85
+ if (topic === 'storage-loss') {
86
+ return told(store, STORAGE_LOSS_TOPIC, deliver, store.device.now().storageLoss);
87
+ }
88
+ if (topic === 'sync-status') {
89
+ return told(store, STATUS_TOPIC, deliver, store.device.now().status);
90
+ }
91
+ if (topic === 'service-mode') {
92
+ return told(store, SERVICE_MODE_TOPIC, deliver, session.serviceMode);
93
+ }
94
+ if (topic === 'member')
95
+ return watchMember(runtime, deliver);
96
+ if (topic === 'authority-changes') {
97
+ return told(store, AUTHORITY_TOPIC, deliver, session.authorityChanges);
98
+ }
99
+ if (topic === 'queue')
100
+ return watchQueue(runtime, input[0], deliver);
101
+ return watchPlanned(runtime, planned(runtime, input[0], null), deliver, fail);
102
+ };
103
+ }
104
+ function roomsOnce(runtime) {
105
+ const { store, socket } = runtime;
106
+ if (socket.closed())
107
+ return Promise.resolve([]);
108
+ return new Promise((settle) => {
109
+ const watcher = store.watch(ROOMS_TOPIC, (value) => {
110
+ watcher.stop();
111
+ settle(value);
112
+ });
113
+ emitKnownRooms(runtime);
114
+ });
115
+ }
116
+ async function typesOf(runtime, locator) {
117
+ const { store, builtIn } = runtime;
118
+ const held = (await store.rooms([locator])).get(locator);
119
+ const fenced = store.fences.has(locator);
120
+ const room = fenced ? undefined : declarationOf(runtime, locator, held)?.room;
121
+ return {
122
+ collection: modelTypes(fenced ? NO_MODEL : modelIn(runtime, locator, held)),
123
+ typedSelection: (room?.typedSelection ?? null) === null ? null : modelTypes(builtIn),
124
+ };
125
+ }
126
+ async function reauthorized(runtime) {
127
+ const { store, socket, journal } = runtime;
128
+ const { refusal } = socket.session.now();
129
+ if (refusal === null || !refusal.reauthorizationOffered)
130
+ return;
131
+ journal.record('connection reauthorize');
132
+ await socket.lanes.current();
133
+ await store.written();
134
+ socket.session.set({ authorization: undefined, paused: false });
135
+ if (!socket.streamed)
136
+ await sync(runtime, 'unstreamed', null);
137
+ else
138
+ await socket.lanes.task(OPENING_LANE, () => socket.authorize());
139
+ }
140
+ function mdRuntime(runtime, watch) {
141
+ const { store, socket, journal, shell, conversations, lastAnswers } = runtime;
142
+ return {
143
+ loaded: () => store.open().then(() => undefined),
144
+ rooms: () => roomsOnce(runtime),
145
+ query: ((input) => planned(runtime, input, null).then((plan) => rowsQuery(runtime, plan))),
146
+ search: (input) => searched(runtime, input, null),
147
+ types: (locator) => typesOf(runtime, locator),
148
+ roomDraft: roomDraftSurface(runtime),
149
+ conversation: conversationSurface(conversations),
150
+ chatDraft: chatDraftSurface(conversations),
151
+ presentation: presentationSurface(runtime),
152
+ save: (room, named, writtenBy) => store.exclusive(() => saveRoomDrafts(runtime, room, named, writtenBy)),
153
+ saveParts: (room, parts, writtenBy) => store.exclusive(() => saveParts(runtime, room, parts, writtenBy)),
154
+ history: (locator, path, query) => readHistory(runtime, locator, path, query),
155
+ resolve: (room, path, destination) => resolveReference(runtime, room, path, destination),
156
+ binaryFile: binaryFileSurface(runtime),
157
+ call: (name, input) => called(runtime, name, input),
158
+ async reached(locator, roomVersion, path) {
159
+ return path === undefined
160
+ ? reachedBy(runtime, locator, roomVersion)
161
+ : writtenAfter(runtime, locator, roomVersion, path);
162
+ },
163
+ log: () => journal.export(),
164
+ async cleanUp() {
165
+ const freed = await store.ask({ kind: 'opened.clean' });
166
+ const tidied = (await shell.cleanUp?.()) ?? 0;
167
+ store.tell(CLEANED_TOPIC, undefined);
168
+ return freed + tidied;
169
+ },
170
+ unsent: () => store.ask({ kind: 'authored.unsent' }),
171
+ reset: () => shell.reset(),
172
+ async readAgain() {
173
+ lastAnswers.again();
174
+ },
175
+ persistence: () => store.device.now().persistence === 'granted',
176
+ async retry() {
177
+ journal.record('retry');
178
+ socket.rooms.standAll({ unpreparable: false });
179
+ store.readiness.queue();
180
+ if (store.space.full())
181
+ await store.space.probe();
182
+ },
183
+ observe: observing(watch),
184
+ reauthorize: () => reauthorized(runtime),
185
+ };
186
+ }
187
+ export function composedRuntime(runtime) {
188
+ const { store, journal } = runtime;
189
+ const watch = watching(runtime);
190
+ const md = mdRuntime(runtime, watch);
191
+ const reachable = {
192
+ md,
193
+ watch,
194
+ plan: (input, reach) => planned(runtime, input, reach),
195
+ query: (plan) => rowsQuery(runtime, plan),
196
+ watchPlan: (plan, deliver, fail) => watchPlan(runtime, plan, deliver, fail),
197
+ search: (input, reach) => searched(runtime, input, reach),
198
+ watchReadiness: (port, reach, deliver) => watchReadiness(runtime, port, reach, deliver),
199
+ locked: (locator) => locked(runtime, locator),
200
+ lockedRooms: () => lockedRooms(runtime),
201
+ watchLocks: (notify) => watchLocks(runtime, notify),
202
+ located: (room, path, destination) => located(runtime, room, path, destination),
203
+ room: async (locator) => shownRooms(runtime, await listingNow(runtime)).find((one) => one.locator === locator),
204
+ };
205
+ return {
206
+ md,
207
+ seed: (entry) => keepEntrySeed(store, entry),
208
+ stop: () => stop(runtime),
209
+ watch,
210
+ persisted(answer) {
211
+ if (answer === store.device.now().persistence)
212
+ return;
213
+ store.device.set({ persistence: answer });
214
+ journal.record(`persistence ${answer}`);
215
+ store.readiness.queue();
216
+ },
217
+ within(reach, port) {
218
+ if (store.space.full())
219
+ void store.space.probe();
220
+ return narrowed(reachable, reach, port);
221
+ },
222
+ };
223
+ }
package/dist/sync.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { Authorization, AuthorityChange, DiscoveredRoom, Discovery, RoomChange } from './adapter.js';
2
+ import { type Unheld, type Withheld } from './install.js';
3
+ import type { Runtime } from './runtime.js';
4
+ import type { Live } from './socket.js';
5
+ import type { CycleProgress } from './status.js';
6
+ import type { RuntimeStore } from './store.js';
7
+ export type Attempt = 'opened' | 'unstreamed' | 'authorized';
8
+ export declare const OPENING_LANE = "opening";
9
+ export declare function advanced(runtime: Runtime, room: DiscoveredRoom, local: RuntimeStore, authorized: Authorization): Promise<Withheld | null>;
10
+ export declare function withhold(runtime: Runtime, withheld: Withheld, room: DiscoveredRoom, local: RuntimeStore, progress: CycleProgress): Promise<void>;
11
+ export declare function loadRoom(runtime: Runtime, room: DiscoveredRoom, local: RuntimeStore, progress: CycleProgress, live: Live, unheld?: Unheld): Promise<void>;
12
+ export declare function reload(runtime: Runtime, room: DiscoveredRoom, local: RuntimeStore, progress: CycleProgress, live: Live): Promise<void>;
13
+ export declare function finishOpening(runtime: Runtime, progress: CycleProgress, live: Live): Promise<void>;
14
+ export declare function sync(runtime: Runtime, attempt: Attempt, found: Discovery | null): Promise<void>;
15
+ export declare function resynchronize(runtime: Runtime): Promise<void>;
16
+ export declare function countAuthorityChange({ store, socket, lastAnswers }: Runtime): void;
17
+ export declare function changeAuthority(runtime: Runtime, change: AuthorityChange): Promise<void>;
18
+ export declare function applyRoom(runtime: Runtime, change: RoomChange): Promise<void>;
19
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,cAAc,CAAC;AAUtB,OAAO,EASL,KAAK,MAAM,EACX,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5D,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;AAE7D,eAAO,MAAM,YAAY,YAAY,CAAC;AA4FtC,wBAAgB,QAAQ,CACtB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAI1B;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAkHD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,iBAmBhB;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,iBA0BX;AAuDD,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,iBAgCxF;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7D;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,QAK3E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BxF;AAyDD,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD7E"}