@agentshouse/mdruntime 0.1.0-c5f333dfa0583 → 0.1.0-c5fe3b2cddda7

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 (214) hide show
  1. package/README.md +10 -8
  2. package/dist/adapter.d.ts +39 -40
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +2 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +28 -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 +16 -8
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +142 -94
  13. package/dist/change-set.d.ts +1 -7
  14. package/dist/change-set.d.ts.map +1 -1
  15. package/dist/change-set.js +1 -4
  16. package/dist/client.d.ts +6 -7
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +54 -7
  19. package/dist/collection.d.ts +5 -3
  20. package/dist/collection.d.ts.map +1 -1
  21. package/dist/collection.js +24 -19
  22. package/dist/compile.d.ts +6 -1
  23. package/dist/compile.d.ts.map +1 -1
  24. package/dist/compile.js +94 -33
  25. package/dist/connection.d.ts +8 -7
  26. package/dist/connection.d.ts.map +1 -1
  27. package/dist/connection.js +1160 -1151
  28. package/dist/conversation.d.ts +7 -5
  29. package/dist/conversation.d.ts.map +1 -1
  30. package/dist/conversation.js +171 -55
  31. package/dist/durability.d.ts +1 -5
  32. package/dist/durability.d.ts.map +1 -1
  33. package/dist/durability.js +5 -0
  34. package/dist/entry.d.ts +1 -0
  35. package/dist/entry.d.ts.map +1 -1
  36. package/dist/entry.js +1 -1
  37. package/dist/file.d.ts +2 -11
  38. package/dist/file.d.ts.map +1 -1
  39. package/dist/file.js +6 -4
  40. package/dist/fulltext.d.ts +27 -0
  41. package/dist/fulltext.d.ts.map +1 -0
  42. package/dist/fulltext.js +370 -0
  43. package/dist/host.d.ts +3 -4
  44. package/dist/host.d.ts.map +1 -1
  45. package/dist/host.js +42 -18
  46. package/dist/identity.d.ts +0 -1
  47. package/dist/identity.d.ts.map +1 -1
  48. package/dist/identity.js +0 -3
  49. package/dist/index.d.ts +10 -10
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +4 -3
  52. package/dist/live.d.ts.map +1 -1
  53. package/dist/live.js +2 -1
  54. package/dist/media.d.ts +8 -0
  55. package/dist/media.d.ts.map +1 -0
  56. package/dist/media.js +218 -0
  57. package/dist/memory.d.ts +3 -2
  58. package/dist/memory.d.ts.map +1 -1
  59. package/dist/memory.js +93 -38
  60. package/dist/messages.d.ts +28 -0
  61. package/dist/messages.d.ts.map +1 -0
  62. package/dist/messages.js +90 -0
  63. package/dist/model.d.ts +6 -1
  64. package/dist/model.d.ts.map +1 -1
  65. package/dist/model.js +7 -10
  66. package/dist/observation.d.ts +1 -0
  67. package/dist/observation.d.ts.map +1 -1
  68. package/dist/observation.js +1 -1
  69. package/dist/outcome.d.ts +13 -6
  70. package/dist/outcome.d.ts.map +1 -1
  71. package/dist/outcome.js +16 -5
  72. package/dist/overlay.js +1 -1
  73. package/dist/paths.d.ts +1 -0
  74. package/dist/paths.d.ts.map +1 -1
  75. package/dist/paths.js +4 -0
  76. package/dist/query.d.ts +10 -1
  77. package/dist/query.d.ts.map +1 -1
  78. package/dist/query.js +12 -1
  79. package/dist/reach.d.ts +8 -3
  80. package/dist/reach.d.ts.map +1 -1
  81. package/dist/reach.js +69 -46
  82. package/dist/readiness.d.ts +14 -15
  83. package/dist/readiness.d.ts.map +1 -1
  84. package/dist/readiness.js +2 -8
  85. package/dist/recovery.d.ts +1 -0
  86. package/dist/recovery.d.ts.map +1 -1
  87. package/dist/recovery.js +26 -0
  88. package/dist/refresh.d.ts +9 -4
  89. package/dist/refresh.d.ts.map +1 -1
  90. package/dist/refresh.js +64 -30
  91. package/dist/replica.d.ts +5 -5
  92. package/dist/replica.d.ts.map +1 -1
  93. package/dist/replica.js +4 -7
  94. package/dist/room-draft.d.ts +18 -2
  95. package/dist/room-draft.d.ts.map +1 -1
  96. package/dist/room-draft.js +73 -6
  97. package/dist/rows.d.ts +15 -6
  98. package/dist/rows.d.ts.map +1 -1
  99. package/dist/rows.js +102 -74
  100. package/dist/save.d.ts +2 -0
  101. package/dist/save.d.ts.map +1 -1
  102. package/dist/save.js +13 -7
  103. package/dist/search.d.ts +11 -43
  104. package/dist/search.d.ts.map +1 -1
  105. package/dist/search.js +0 -296
  106. package/dist/shared.d.ts +0 -1
  107. package/dist/shared.d.ts.map +1 -1
  108. package/dist/shared.js +0 -10
  109. package/dist/status.d.ts +4 -3
  110. package/dist/status.d.ts.map +1 -1
  111. package/dist/status.js +3 -1
  112. package/dist/store.d.ts +23 -58
  113. package/dist/store.d.ts.map +1 -1
  114. package/dist/store.js +37 -272
  115. package/dist/stored.d.ts +10 -23
  116. package/dist/stored.d.ts.map +1 -1
  117. package/dist/stored.js +217 -218
  118. package/dist/tables.d.ts +51 -46
  119. package/dist/tables.d.ts.map +1 -1
  120. package/dist/tables.js +94 -53
  121. package/dist/transfer.d.ts +0 -5
  122. package/dist/transfer.d.ts.map +1 -1
  123. package/dist/validation.d.ts +3 -4
  124. package/dist/validation.d.ts.map +1 -1
  125. package/dist/validation.js +35 -96
  126. package/dist/wire.d.ts +5 -5
  127. package/dist/wire.d.ts.map +1 -1
  128. package/dist/wire.js +2 -2
  129. package/dist/words.d.ts +19 -0
  130. package/dist/words.d.ts.map +1 -0
  131. package/dist/words.js +156 -0
  132. package/package.json +11 -19
  133. package/AGENTS.md +0 -312
  134. package/dist/chat/acts.d.ts +0 -33
  135. package/dist/chat/acts.d.ts.map +0 -1
  136. package/dist/chat/acts.js +0 -36
  137. package/dist/chat/context.d.ts +0 -3
  138. package/dist/chat/context.d.ts.map +0 -1
  139. package/dist/chat/context.js +0 -10
  140. package/dist/chat/earlier.d.ts +0 -10
  141. package/dist/chat/earlier.d.ts.map +0 -1
  142. package/dist/chat/earlier.js +0 -54
  143. package/dist/chat/house.d.ts +0 -25
  144. package/dist/chat/house.d.ts.map +0 -1
  145. package/dist/chat/house.js +0 -38
  146. package/dist/chat/input.d.ts +0 -11
  147. package/dist/chat/input.d.ts.map +0 -1
  148. package/dist/chat/input.js +0 -92
  149. package/dist/chat/kit.d.ts +0 -61
  150. package/dist/chat/kit.d.ts.map +0 -1
  151. package/dist/chat/kit.js +0 -123
  152. package/dist/chat/lasting.d.ts +0 -6
  153. package/dist/chat/lasting.d.ts.map +0 -1
  154. package/dist/chat/lasting.js +0 -19
  155. package/dist/chat/list.d.ts +0 -28
  156. package/dist/chat/list.d.ts.map +0 -1
  157. package/dist/chat/list.js +0 -103
  158. package/dist/chat/markdown.d.ts +0 -21
  159. package/dist/chat/markdown.d.ts.map +0 -1
  160. package/dist/chat/markdown.js +0 -246
  161. package/dist/chat/message.d.ts +0 -7
  162. package/dist/chat/message.d.ts.map +0 -1
  163. package/dist/chat/message.js +0 -254
  164. package/dist/chat/messages.d.ts +0 -35
  165. package/dist/chat/messages.d.ts.map +0 -1
  166. package/dist/chat/messages.js +0 -210
  167. package/dist/chat/name.d.ts +0 -7
  168. package/dist/chat/name.d.ts.map +0 -1
  169. package/dist/chat/name.js +0 -37
  170. package/dist/chat/opened.d.ts +0 -12
  171. package/dist/chat/opened.d.ts.map +0 -1
  172. package/dist/chat/opened.js +0 -19
  173. package/dist/chat/overlay.d.ts +0 -32
  174. package/dist/chat/overlay.d.ts.map +0 -1
  175. package/dist/chat/overlay.js +0 -103
  176. package/dist/chat/parts.d.ts +0 -58
  177. package/dist/chat/parts.d.ts.map +0 -1
  178. package/dist/chat/parts.js +0 -120
  179. package/dist/chat/pieces.d.ts +0 -62
  180. package/dist/chat/pieces.d.ts.map +0 -1
  181. package/dist/chat/pieces.js +0 -1110
  182. package/dist/chat/process.d.ts +0 -20
  183. package/dist/chat/process.d.ts.map +0 -1
  184. package/dist/chat/process.js +0 -32
  185. package/dist/chat/provider.d.ts +0 -70
  186. package/dist/chat/provider.d.ts.map +0 -1
  187. package/dist/chat/provider.js +0 -635
  188. package/dist/chat/question.d.ts +0 -9
  189. package/dist/chat/question.d.ts.map +0 -1
  190. package/dist/chat/question.js +0 -69
  191. package/dist/chat/questions.d.ts +0 -31
  192. package/dist/chat/questions.d.ts.map +0 -1
  193. package/dist/chat/questions.js +0 -111
  194. package/dist/chat/read.d.ts +0 -5
  195. package/dist/chat/read.d.ts.map +0 -1
  196. package/dist/chat/read.js +0 -13
  197. package/dist/chat/ready.d.ts +0 -37
  198. package/dist/chat/ready.d.ts.map +0 -1
  199. package/dist/chat/ready.js +0 -93
  200. package/dist/chat/room-file.d.ts +0 -8
  201. package/dist/chat/room-file.d.ts.map +0 -1
  202. package/dist/chat/room-file.js +0 -72
  203. package/dist/chat/steady.d.ts +0 -3
  204. package/dist/chat/steady.d.ts.map +0 -1
  205. package/dist/chat/steady.js +0 -26
  206. package/dist/chat/style.d.ts +0 -4
  207. package/dist/chat/style.d.ts.map +0 -1
  208. package/dist/chat/style.js +0 -307
  209. package/dist/chat.d.ts +0 -15
  210. package/dist/chat.d.ts.map +0 -1
  211. package/dist/chat.js +0 -8
  212. package/dist/reads.d.ts +0 -11
  213. package/dist/reads.d.ts.map +0 -1
  214. package/dist/reads.js +0 -98
package/dist/store.d.ts CHANGED
@@ -1,35 +1,34 @@
1
- import type { Capability, Member, ProviderLimit } from './adapter.js';
2
- import type { AcceptedMessage, KeptReceipt } from './adapter.js';
1
+ import type { BootstrapInventory, Capability, ListedConversation, Member, ProviderLimit } from './adapter.js';
3
2
  import type { ChangeBatch } from './change.js';
4
- import type { Composition } from './collection.js';
3
+ import { type Composition } from './collection.js';
5
4
  import type { Plan } from './query.js';
6
5
  import type { ReplicaRecord } from './replica.js';
7
- import type { Later } from './turn.js';
8
6
  import type { Submission } from './outcome.js';
9
7
  import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
10
- import type { ModelState } from './model.js';
11
- import type { SearchedDocument } from './search.js';
12
- import type { CommittedWrite, CountedRoom, HeldEntry, QueryAnswer, QueryRoom, Referrer, RoomCommit, RuntimeDatabase, StoredEntry, StoredFile, TypedEntry, View, Walked } from './tables.js';
13
- export declare const STORE_SCHEMA = 26;
8
+ import type { ModelState, StoredModel } from './model.js';
9
+ import type { SearchWindow } from './search.js';
10
+ import type { CommittedWrite, ConversationWrite, CountedRoom, HeldConversation, HeldEntry, MessageWindow, QueryAnswer, QueryRoom, Referrer, RoomCommit, RuntimeDatabase, SearchAsk, StoredEntry, StoredFile, TypedEntry, View } from './tables.js';
11
+ export type { ConversationWrite, HeldConversation, MessageWindow } from './tables.js';
14
12
  export type TransferRecord = {
15
13
  readonly locator: string;
16
14
  readonly transfer: string;
17
15
  readonly selection: string;
18
16
  readonly from: string;
19
17
  readonly last: string;
20
- readonly pageToken: string | null;
18
+ readonly done: BootstrapInventory;
21
19
  readonly models: {
22
20
  readonly collection: ModelState;
23
- readonly selection: ModelState;
24
21
  };
25
22
  readonly key: number | null;
26
23
  };
24
+ export type StoredReplica = Omit<ReplicaRecord, 'model'> & {
25
+ readonly model: StoredModel;
26
+ };
27
27
  export type PendingState = {
28
28
  readonly drafts: readonly SavedDraft[];
29
29
  readonly submission: Submission;
30
30
  readonly lost: boolean;
31
31
  readonly upload?: unknown;
32
- readonly accepted?: string;
33
32
  };
34
33
  export type TargetRecord = {
35
34
  established: boolean;
@@ -45,23 +44,6 @@ export type PresentationRecord = {
45
44
  app: string;
46
45
  value: unknown;
47
46
  };
48
- export type HeldConversation = {
49
- conversation: string;
50
- read: string | null | undefined;
51
- partial: boolean;
52
- };
53
- export type MessageWindow = {
54
- messages: AcceptedMessage[];
55
- more: boolean;
56
- };
57
- export type ConversationWrite = {
58
- conversation: string;
59
- messages: readonly AcceptedMessage[];
60
- read?: {
61
- at: string | null;
62
- partial: boolean;
63
- };
64
- };
65
47
  export type ChatSubmission = {
66
48
  readonly operation: string;
67
49
  readonly text: string;
@@ -86,10 +68,6 @@ export type AuthoredWrite = {
86
68
  saved?: ReadonlyMap<string, readonly SavedDraft[]>;
87
69
  roomDrafts?: readonly RoomDraftRecord[];
88
70
  consumedRoomDrafts?: readonly string[];
89
- accepted?: readonly {
90
- readonly id: string;
91
- readonly roomVersion: string;
92
- }[];
93
71
  };
94
72
  export type StagedPage = {
95
73
  readonly entries: readonly StoredEntry[];
@@ -100,9 +78,8 @@ export type RefreshedPage = StagedPage & {
100
78
  readonly folderRemovals: readonly string[];
101
79
  };
102
80
  export type Opened = {
103
- readonly rooms: ReadonlyMap<string, ReplicaRecord>;
104
- readonly transfers: ReadonlyMap<string, TransferRecord>;
105
- readonly unprepared: ReadonlySet<number>;
81
+ readonly rooms: ReadonlyMap<string, StoredReplica>;
82
+ readonly unindexed: ReadonlySet<number>;
106
83
  readonly overlaid: ReadonlyMap<number, ReadonlySet<string>>;
107
84
  readonly erasing: boolean;
108
85
  readonly orphans: readonly number[];
@@ -112,6 +89,7 @@ export type Opened = {
112
89
  readonly member: Member | null;
113
90
  readonly targets: Readonly<Record<string, TargetRecord>>;
114
91
  readonly presentation: readonly PresentationRecord[];
92
+ readonly conversationList: readonly ListedConversation[] | null;
115
93
  };
116
94
  export type Commit = {
117
95
  readonly rooms: readonly RoomCommit[];
@@ -128,25 +106,25 @@ export type RuntimeStore = {
128
106
  entries(key: number, view: View, paths: readonly string[]): Promise<readonly HeldEntry[]>;
129
107
  typed(key: number, view: View, paths: readonly string[]): Promise<readonly TypedEntry[]>;
130
108
  referrers(key: number, view: View, targets: readonly string[], kinds: readonly string[]): Promise<readonly Referrer[]>;
131
- walk(key: number, view: View, after: string | null, bytes: number): Promise<Walked>;
132
109
  files(key: number, view: View, after: string | null, limit: number): Promise<readonly {
133
110
  readonly path: string;
134
111
  readonly revision: string;
135
112
  }[]>;
113
+ folders(key: number, view: View, paths: readonly string[]): Promise<readonly string[]>;
136
114
  typedWithin(key: number, view: View, roots: readonly string[], within: boolean): Promise<boolean>;
137
- searched(key: number, locator: string, after: string | null, limit: number, paths: readonly string[] | null): Promise<{
138
- readonly documents: readonly SearchedDocument[];
139
- readonly next: string | null;
140
- }>;
141
- stage(record: TransferRecord, composition: Composition, page: StagedPage, key: number | null, last: boolean): Promise<number | null>;
142
- refresh(key: number, page: RefreshedPage): Promise<void>;
115
+ search(ask: SearchAsk): Promise<SearchWindow>;
116
+ stage(record: TransferRecord, composition: Composition, page: StagedPage): Promise<number | null>;
117
+ refresh(key: number, composition: Composition, page: RefreshedPage): Promise<void>;
143
118
  unrefresh(key: number): Promise<void>;
144
119
  commit(commit: Commit): Promise<CommittedWrite>;
145
120
  fence(locators: readonly string[]): Promise<void>;
146
121
  erase(locator: string | null, limit: number): Promise<boolean>;
147
- abandon(locator: string, kept?: boolean): Promise<number | null>;
122
+ abandon(locator: string): Promise<void>;
148
123
  release(key: number): Promise<void>;
149
- rederive(key: number, limit: number): Promise<boolean>;
124
+ rederive(key: number, composition: Composition, bytes: number, ms: number, floor: number): Promise<{
125
+ readonly done: boolean;
126
+ readonly text: number;
127
+ }>;
150
128
  fact(name: string, value: unknown): Promise<void>;
151
129
  queues(): Promise<readonly QueueRecord[]>;
152
130
  submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
@@ -157,8 +135,6 @@ export type RuntimeStore = {
157
135
  keepMessages(write: ConversationWrite): Promise<void>;
158
136
  messageWindow(conversation: string, limit: number, before: readonly [string, string] | null): Promise<MessageWindow>;
159
137
  messageCount(conversation: string): Promise<number>;
160
- messagesAfter(conversation: string, identity: string | null): Promise<AcceptedMessage[]>;
161
- messageIdentities(conversation: string): Promise<readonly string[]>;
162
138
  turnArrived(conversation: string, turn: string): Promise<boolean>;
163
139
  dropConversations(conversations: readonly string[]): Promise<void>;
164
140
  chatDrafts(): Promise<readonly ChatDraftRecord[]>;
@@ -170,20 +146,9 @@ export type RuntimeStore = {
170
146
  keepRoomDraft(record: RoomDraftRecord, files: readonly StoredFile[]): Promise<void>;
171
147
  discardRoomDraft(locator: string, path: string): Promise<void>;
172
148
  fences(): Promise<readonly string[]>;
173
- receivedHeads(): Promise<readonly KeptReceipt[]>;
174
- receivedParts(key: string, count: number): Promise<readonly unknown[]>;
175
- keepReceived(key: string, head: unknown, part?: {
176
- index: number;
177
- value: unknown;
178
- }): Promise<void>;
179
- dropReceived(keys: readonly string[]): Promise<void>;
180
149
  generation(): Promise<string | null>;
181
150
  rememberGeneration(value: string): Promise<void>;
182
151
  file(key: string, type: string): Promise<Blob>;
183
- close(): void;
184
152
  };
185
- export declare function transacted<T>(database: IDBDatabase, stores: string | readonly string[], mode: IDBTransactionMode, work: (transaction: IDBTransaction) => Later<T>): Promise<T>;
186
- export declare function endRuntimeStore(database: RuntimeDatabase, holder: string | undefined): Promise<boolean>;
187
- export declare function openDatabase(name: string, version: number, upgrade: (opening: IDBOpenDBRequest, oldVersion: number) => void): Promise<IDBDatabase>;
188
- export declare function openRuntimeStore(fenced: (locator: string) => boolean, authored: RuntimeDatabase): Promise<RuntimeStore>;
153
+ export declare function openRuntimeStore(fenced: (locator: string) => boolean, authored: RuntimeDatabase): RuntimeStore;
189
154
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAGV,cAAc,EACd,WAAW,EACX,SAAS,EAET,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,UAAU,EACV,IAAI,EACJ,MAAM,EACP,MAAM,aAAa,CAAC;AAMrB,eAAO,MAAM,YAAY,KAAK,CAAC;AAY/B,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;KAAE,CAAC;IACrF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,SAAS;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAUF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACxC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IAC1F,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACzF,SAAS,CACP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpF,KAAK,CACH,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClG,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC9B,OAAO,CAAC;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC9F,KAAK,CACH,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,KAAK,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,UAAU,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,aAAa,IAAI,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;IACtD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,aAAa,CACX,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GACvC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACzF,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACpE,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,iBAAiB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,UAAU,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IACrC,aAAa,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACvE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAeF,wBAAgB,UAAU,CAAC,CAAC,EAC1B,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAClC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,CAwCZ;AAcD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GAC/D,OAAO,CAAC,WAAW,CAAC,CAetB;AAsHD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,EACpC,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,CAAC,CA+ZvB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -1,123 +1,6 @@
1
- import { precedes } from './windows.js';
1
+ import { composedOf } from './collection.js';
2
2
  import { binaryLocalId } from './identity.js';
3
- const DATABASE = 'mdruntime';
4
- const CONVERSATIONS = 'conversations';
5
- const MESSAGES = 'messages';
6
3
  const FILE = '\u0000file';
7
- export const STORE_SCHEMA = 26;
8
- const STORES = [
9
- [CONVERSATIONS, { keyPath: 'conversation' }],
10
- [MESSAGES, { keyPath: ['conversation', 'identity'] }],
11
- ];
12
- const READ_BATCH = 256;
13
- const MESSAGE_INDEXES = [
14
- ['conversation', 'conversation'],
15
- ['position', ['conversation', 'position']],
16
- ['turn', ['conversation', 'turn']],
17
- ];
18
- function settled(request) {
19
- return new Promise((resolve, reject) => {
20
- request.onsuccess = () => resolve(request.result);
21
- request.onerror = () => reject(request.error);
22
- });
23
- }
24
- const turns = new Map();
25
- function idle(database) {
26
- return turns.get(database.name) ?? Promise.resolve();
27
- }
28
- export function transacted(database, stores, mode, work) {
29
- let release = () => { };
30
- const turn = new Promise((resolve) => {
31
- release = resolve;
32
- });
33
- const before = idle(database);
34
- const queued = before.then(() => turn);
35
- turns.set(database.name, queued);
36
- void queued.then(() => {
37
- if (turns.get(database.name) === queued)
38
- turns.delete(database.name);
39
- });
40
- return before.then(() => {
41
- let transaction;
42
- try {
43
- transaction = database.transaction(stores, mode);
44
- }
45
- catch (error) {
46
- release();
47
- throw error;
48
- }
49
- const committed = new Promise((resolve, reject) => {
50
- transaction.oncomplete = () => {
51
- release();
52
- resolve();
53
- };
54
- transaction.onabort = () => {
55
- release();
56
- reject(transaction.error);
57
- };
58
- transaction.onerror = () => reject(transaction.error);
59
- });
60
- let value;
61
- try {
62
- value = work(transaction);
63
- }
64
- catch (error) {
65
- void committed.catch(() => { });
66
- transaction.abort();
67
- throw error;
68
- }
69
- return Promise.all([value, committed]).then(([held]) => held);
70
- });
71
- }
72
- function accepted({ conversation: _held, ...message }) {
73
- return message;
74
- }
75
- function removeDatabase(name) {
76
- return new Promise((resolve, reject) => {
77
- const removal = indexedDB.deleteDatabase(name);
78
- removal.onsuccess = () => resolve();
79
- removal.onerror = () => reject(removal.error);
80
- });
81
- }
82
- export async function endRuntimeStore(database, holder) {
83
- await removeDatabase(DATABASE);
84
- return database.ask({ kind: 'authored.end', holder: holder ?? null });
85
- }
86
- export function openDatabase(name, version, upgrade) {
87
- return new Promise((resolve, reject) => {
88
- const opening = indexedDB.open(name, version);
89
- opening.onupgradeneeded = (event) => upgrade(opening, event.oldVersion);
90
- opening.onsuccess = () => resolve(opening.result);
91
- opening.onerror = () => {
92
- if (opening.error?.name !== 'VersionError') {
93
- reject(opening.error);
94
- return;
95
- }
96
- removeDatabase(name)
97
- .then(() => openDatabase(name, version, upgrade))
98
- .then(resolve, reject);
99
- };
100
- });
101
- }
102
- function openConversations() {
103
- return openDatabase(DATABASE, STORE_SCHEMA, (opening, oldVersion) => {
104
- const database = opening.result;
105
- if (oldVersion < STORE_SCHEMA) {
106
- for (const name of [...database.objectStoreNames])
107
- database.deleteObjectStore(name);
108
- }
109
- for (const [name, parameters] of STORES) {
110
- if (database.objectStoreNames.contains(name))
111
- continue;
112
- database.createObjectStore(name, parameters);
113
- }
114
- const messages = opening.transaction.objectStore(MESSAGES);
115
- for (const [name, keyPath] of MESSAGE_INDEXES) {
116
- if (!messages.indexNames.contains(name))
117
- messages.createIndex(name, keyPath);
118
- }
119
- });
120
- }
121
4
  function batchFiles(batch) {
122
5
  return batch.changes.flatMap((change) => (change.kind === 'binary' ? [change.localId] : []));
123
6
  }
@@ -127,7 +10,7 @@ function draftFiles(drafts) {
127
10
  function roomDraftRow(record) {
128
11
  return { path: record.path, record: JSON.stringify(record), files: draftFiles([record]) };
129
12
  }
130
- function authoredRows({ locator, queue, founded, saved, roomDrafts, consumedRoomDrafts, accepted }, held) {
13
+ function authoredRows({ locator, queue, founded, saved, roomDrafts, consumedRoomDrafts }, held) {
131
14
  return {
132
15
  locator,
133
16
  ...(queue === undefined
@@ -161,14 +44,6 @@ function authoredRows({ locator, queue, founded, saved, roomDrafts, consumedRoom
161
44
  }),
162
45
  ...(roomDrafts === undefined ? {} : { roomDrafts: roomDrafts.map(roomDraftRow) }),
163
46
  ...(consumedRoomDrafts === undefined ? {} : { consumedRoomDrafts }),
164
- ...(accepted === undefined
165
- ? {}
166
- : {
167
- amendments: accepted.map(({ id, roomVersion }) => ({
168
- id,
169
- amendment: JSON.stringify({ accepted: roomVersion }),
170
- })),
171
- }),
172
47
  };
173
48
  }
174
49
  function marked(value) {
@@ -206,8 +81,7 @@ async function filed(value, read) {
206
81
  function json(value, fallback) {
207
82
  return value === undefined ? fallback : JSON.parse(value);
208
83
  }
209
- export async function openRuntimeStore(fenced, authored) {
210
- const database = await openConversations();
84
+ export function openRuntimeStore(fenced, authored) {
211
85
  const keys = new WeakMap();
212
86
  const read = async (key, type) => {
213
87
  const blob = await authored.ask({ kind: 'authored.file', key, type });
@@ -239,7 +113,7 @@ export async function openRuntimeStore(fenced, authored) {
239
113
  return {
240
114
  async opened() {
241
115
  const held = await authored.ask({ kind: 'replica.open' });
242
- const unprepared = new Set(held.keys.flatMap(({ key, rederiving }) => (rederiving === null ? [] : [key])));
116
+ const unindexed = new Set(held.keys.flatMap(({ key, rederiving, searching }) => rederiving === null && searching === null ? [] : [key]));
243
117
  const overlaid = new Map();
244
118
  for (const { key, path } of held.overlaid) {
245
119
  const paths = overlaid.get(key) ?? new Set();
@@ -253,13 +127,7 @@ export async function openRuntimeStore(fenced, authored) {
253
127
  locator,
254
128
  { ...JSON.parse(record), key },
255
129
  ])),
256
- transfers: new Map(held.transfers
257
- .filter(({ locator }) => !fenced(locator))
258
- .map(({ locator, key, record }) => [
259
- locator,
260
- { ...JSON.parse(record), key },
261
- ])),
262
- unprepared,
130
+ unindexed,
263
131
  overlaid,
264
132
  erasing: held.erasing.length > 0,
265
133
  orphans: held.orphans,
@@ -272,6 +140,7 @@ export async function openRuntimeStore(fenced, authored) {
272
140
  app,
273
141
  value: JSON.parse(value),
274
142
  })),
143
+ conversationList: json(held.facts.conversationList, null),
275
144
  };
276
145
  },
277
146
  counts(rooms) {
@@ -292,37 +161,36 @@ export async function openRuntimeStore(fenced, authored) {
292
161
  referrers(key, view, targets, kinds) {
293
162
  return authored.ask({ kind: 'replica.referrers', key, view, targets, kinds });
294
163
  },
295
- walk(key, view, after, bytes) {
296
- return authored.ask({ kind: 'replica.walk', key, view, after, bytes });
297
- },
298
164
  files(key, view, after, limit) {
299
165
  return authored.ask({ kind: 'replica.files', key, view, after, limit });
300
166
  },
167
+ folders(key, view, paths) {
168
+ return authored.ask({ kind: 'replica.folders', key, view, paths });
169
+ },
301
170
  typedWithin(key, view, roots, within) {
302
171
  return authored.ask({ kind: 'replica.typedWithin', key, view, roots, within });
303
172
  },
304
- searched(key, locator, after, limit, paths) {
305
- return authored.ask({ kind: 'replica.searched', key, locator, after, limit, paths });
173
+ search(ask) {
174
+ return authored.ask({ kind: 'replica.search', ...ask });
306
175
  },
307
- async stage(record, composition, page, key, last) {
176
+ async stage(record, composition, page) {
308
177
  if (fenced(record.locator))
309
178
  return null;
310
- const { key: _key, ...kept } = record;
311
179
  return authored.ask({
312
180
  kind: 'replica.stage',
313
181
  locator: record.locator,
314
182
  transfer: record.transfer,
315
- record: last ? JSON.stringify(kept) : null,
316
- key,
317
- composition,
183
+ key: record.key,
184
+ fingerprint: composedOf(composition).fingerprint,
318
185
  entries: page.entries,
319
186
  folders: page.folders,
320
187
  });
321
188
  },
322
- async refresh(key, page) {
189
+ async refresh(key, composition, page) {
323
190
  await authored.ask({
324
191
  kind: 'replica.refresh',
325
192
  key,
193
+ composed: composedOf(composition),
326
194
  entries: page.entries,
327
195
  removals: page.removals,
328
196
  folders: page.folders,
@@ -336,7 +204,7 @@ export async function openRuntimeStore(fenced, authored) {
336
204
  const kept = whole ? writes : writes.filter(({ locator }) => !fenced(locator));
337
205
  const refused = whole ? kept.find(({ locator }) => fenced(locator)) : undefined;
338
206
  if (refused !== undefined) {
339
- return { fenced: refused.locator, counts: {}, changed: {}, prepared: {} };
207
+ return { fenced: refused.locator, counts: {}, changed: {}, indexed: {} };
340
208
  }
341
209
  for (const room of rooms)
342
210
  change(room.key);
@@ -361,17 +229,24 @@ export async function openRuntimeStore(fenced, authored) {
361
229
  async erase(locator, limit) {
362
230
  return (await authored.ask({ kind: 'replica.erase', locator, limit })).remaining;
363
231
  },
364
- async abandon(locator, kept = false) {
232
+ async abandon(locator) {
365
233
  if (fenced(locator))
366
- return null;
367
- return authored.ask({ kind: 'replica.abandon', locator, kept });
234
+ return;
235
+ await authored.ask({ kind: 'replica.abandon', locator });
368
236
  },
369
237
  async release(key) {
370
238
  await authored.ask({ kind: 'replica.release', key });
371
239
  },
372
- async rederive(key, limit) {
240
+ async rederive(key, composition, bytes, ms, floor) {
373
241
  change(key);
374
- return (await authored.ask({ kind: 'replica.rederive', key, limit })).done;
242
+ return authored.ask({
243
+ kind: 'replica.rederive',
244
+ key,
245
+ composed: composedOf(composition),
246
+ bytes,
247
+ ms,
248
+ floor,
249
+ });
375
250
  },
376
251
  async fact(name, value) {
377
252
  await authored.ask({ kind: 'replica.fact', name, value: JSON.stringify(value) });
@@ -417,110 +292,22 @@ export async function openRuntimeStore(fenced, authored) {
417
292
  });
418
293
  },
419
294
  conversations() {
420
- return transacted(database, [CONVERSATIONS, MESSAGES], 'readonly', async (transaction) => {
421
- const records = await settled(transaction.objectStore(CONVERSATIONS).getAll());
422
- const held = new Map(records.map(({ conversation, read, partial }) => [
423
- conversation,
424
- { conversation, read, partial: partial === true },
425
- ]));
426
- const keys = transaction.objectStore(MESSAGES).index('conversation');
427
- await new Promise((resolve, reject) => {
428
- const cursor = keys.openKeyCursor(null, 'nextunique');
429
- cursor.onerror = () => reject(cursor.error);
430
- cursor.onsuccess = () => {
431
- const at = cursor.result;
432
- if (at === null) {
433
- resolve();
434
- return;
435
- }
436
- const conversation = at.key;
437
- if (!held.has(conversation)) {
438
- held.set(conversation, { conversation, read: undefined, partial: true });
439
- }
440
- at.continue();
441
- };
442
- });
443
- return [...held.values()];
444
- });
295
+ return authored.ask({ kind: 'conversation.held' });
445
296
  },
446
- async keepMessages({ conversation, messages, read }) {
447
- await transacted(database, [CONVERSATIONS, MESSAGES], 'readwrite', (transaction) => {
448
- const stored = transaction.objectStore(MESSAGES);
449
- for (const message of messages) {
450
- stored.put({ ...message, conversation });
451
- }
452
- if (read !== undefined) {
453
- transaction.objectStore(CONVERSATIONS).put({
454
- conversation,
455
- read: read.at,
456
- ...(read.partial ? { partial: true } : {}),
457
- });
458
- }
459
- });
297
+ async keepMessages(write) {
298
+ await authored.ask({ kind: 'conversation.keep', ...write });
460
299
  },
461
300
  messageWindow(conversation, limit, before) {
462
- return transacted(database, MESSAGES, 'readonly', async (transaction) => {
463
- const index = transaction.objectStore(MESSAGES).index('position');
464
- const range = IDBKeyRange.bound([conversation], [conversation, before?.[0] ?? []]);
465
- const latest = [];
466
- let more = false;
467
- await new Promise((resolve, reject) => {
468
- const cursor = index.openCursor(range, 'prev');
469
- cursor.onerror = () => reject(cursor.error);
470
- cursor.onsuccess = () => {
471
- const at = cursor.result;
472
- if (at === null) {
473
- resolve();
474
- return;
475
- }
476
- const record = at.value;
477
- if (!precedes(record, before)) {
478
- at.continue();
479
- return;
480
- }
481
- if (latest.length === limit) {
482
- more = true;
483
- resolve();
484
- return;
485
- }
486
- latest.push(accepted(record));
487
- at.continue();
488
- };
489
- });
490
- return { messages: latest.reverse(), more };
491
- });
301
+ return authored.ask({ kind: 'conversation.window', conversation, limit, before });
492
302
  },
493
303
  messageCount(conversation) {
494
- return transacted(database, MESSAGES, 'readonly', (transaction) => settled(transaction.objectStore(MESSAGES).index('conversation').count(conversation)));
495
- },
496
- async messagesAfter(conversation, identity) {
497
- const range = identity === null
498
- ? IDBKeyRange.bound([conversation], [conversation, []])
499
- : IDBKeyRange.bound([conversation, identity], [conversation, []], true);
500
- const held = await transacted(database, MESSAGES, 'readonly', (transaction) => settled(transaction.objectStore(MESSAGES).getAll(range, READ_BATCH)));
501
- return held.map(accepted);
502
- },
503
- async messageIdentities(conversation) {
504
- const found = await transacted(database, MESSAGES, 'readonly', (transaction) => settled(transaction.objectStore(MESSAGES).index('conversation').getAllKeys(conversation)));
505
- return found.map((key) => key[1]);
304
+ return authored.ask({ kind: 'conversation.count', conversation });
506
305
  },
507
- async turnArrived(conversation, turn) {
508
- const held = await transacted(database, MESSAGES, 'readonly', (transaction) => settled(transaction.objectStore(MESSAGES).index('turn').count([conversation, turn])));
509
- return held > 0;
306
+ turnArrived(conversation, turn) {
307
+ return authored.ask({ kind: 'conversation.turn', conversation, turn });
510
308
  },
511
309
  async dropConversations(conversations) {
512
- await authored.ask({ kind: 'authored.chatDraft', kept: [], dropped: conversations });
513
- await transacted(database, [CONVERSATIONS, MESSAGES], 'readwrite', (transaction) => {
514
- const messages = transaction.objectStore(MESSAGES);
515
- for (const conversation of conversations) {
516
- transaction.objectStore(CONVERSATIONS).delete(conversation);
517
- const held = messages.index('conversation').getAllKeys(conversation);
518
- held.onsuccess = () => {
519
- for (const key of held.result)
520
- messages.delete(key);
521
- };
522
- }
523
- });
310
+ await authored.ask({ kind: 'conversation.drop', conversations });
524
311
  },
525
312
  async chatDrafts() {
526
313
  const records = await authored.ask({ kind: 'authored.chatDrafts' });
@@ -574,25 +361,6 @@ export async function openRuntimeStore(fenced, authored) {
574
361
  fences() {
575
362
  return authored.ask({ kind: 'authored.fences' });
576
363
  },
577
- receivedHeads() {
578
- return authored.ask({ kind: 'replica.received' });
579
- },
580
- receivedParts(key, count) {
581
- return authored.ask({ kind: 'replica.receivedParts', key, count });
582
- },
583
- async keepReceived(key, head, part) {
584
- await authored.ask({
585
- kind: 'replica.receive',
586
- key,
587
- head: JSON.stringify(head),
588
- ...(part === undefined
589
- ? {}
590
- : { part: { index: part.index, value: JSON.stringify(part.value) } }),
591
- });
592
- },
593
- async dropReceived(keys) {
594
- await authored.ask({ kind: 'replica.unreceive', keys });
595
- },
596
364
  generation() {
597
365
  return fact('generation');
598
366
  },
@@ -602,8 +370,5 @@ export async function openRuntimeStore(fenced, authored) {
602
370
  file(key, type) {
603
371
  return authored.ask({ kind: 'authored.file', key, type });
604
372
  },
605
- close() {
606
- void idle(database).then(() => database.close());
607
- },
608
373
  };
609
374
  }