@agentshouse/mdruntime 0.1.0-c3fa75348e547 → 0.1.0-c3faae279d4d2

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 (368) hide show
  1. package/README.md +19 -16
  2. package/dist/acceptance.d.ts +6 -0
  3. package/dist/acceptance.d.ts.map +1 -0
  4. package/dist/acceptance.js +385 -0
  5. package/dist/actions.d.ts +20 -0
  6. package/dist/actions.d.ts.map +1 -0
  7. package/dist/actions.js +251 -0
  8. package/dist/adapter.d.ts +150 -81
  9. package/dist/adapter.d.ts.map +1 -1
  10. package/dist/attached-model.d.ts +7 -10
  11. package/dist/attached-model.d.ts.map +1 -1
  12. package/dist/attached-model.js +40 -41
  13. package/dist/binary.d.ts +0 -5
  14. package/dist/binary.d.ts.map +1 -1
  15. package/dist/binary.js +1 -1
  16. package/dist/bootstrap.d.ts +30 -11
  17. package/dist/bootstrap.d.ts.map +1 -1
  18. package/dist/bootstrap.js +320 -111
  19. package/dist/cell.d.ts +6 -0
  20. package/dist/cell.d.ts.map +1 -0
  21. package/dist/cell.js +9 -0
  22. package/dist/chain.d.ts +12 -0
  23. package/dist/chain.d.ts.map +1 -0
  24. package/dist/chain.js +64 -0
  25. package/dist/change-set.d.ts +9 -16
  26. package/dist/change-set.d.ts.map +1 -1
  27. package/dist/change-set.js +11 -89
  28. package/dist/change.d.ts +32 -1
  29. package/dist/change.d.ts.map +1 -1
  30. package/dist/change.js +14 -3
  31. package/dist/chat-types.d.ts +5 -0
  32. package/dist/chat-types.d.ts.map +1 -0
  33. package/dist/chat-types.js +13 -0
  34. package/dist/client.d.ts +33 -10
  35. package/dist/client.d.ts.map +1 -1
  36. package/dist/client.js +90 -10
  37. package/dist/collection.d.ts +11 -21
  38. package/dist/collection.d.ts.map +1 -1
  39. package/dist/collection.js +39 -291
  40. package/dist/compile.d.ts +16 -0
  41. package/dist/compile.d.ts.map +1 -0
  42. package/dist/compile.js +711 -0
  43. package/dist/connection.d.ts +7 -132
  44. package/dist/connection.d.ts.map +1 -1
  45. package/dist/connection.js +100 -3568
  46. package/dist/context.d.ts +2 -0
  47. package/dist/context.d.ts.map +1 -0
  48. package/dist/{chat/context.js → context.js} +1 -4
  49. package/dist/conversation-live.d.ts +136 -0
  50. package/dist/conversation-live.d.ts.map +1 -0
  51. package/dist/conversation-live.js +248 -0
  52. package/dist/conversation-row.d.ts +33 -0
  53. package/dist/conversation-row.d.ts.map +1 -0
  54. package/dist/conversation-row.js +53 -0
  55. package/dist/conversation.d.ts +53 -44
  56. package/dist/conversation.d.ts.map +1 -1
  57. package/dist/conversation.js +938 -715
  58. package/dist/digest.d.ts +7 -0
  59. package/dist/digest.d.ts.map +1 -0
  60. package/dist/digest.js +113 -0
  61. package/dist/discovery.d.ts +10 -0
  62. package/dist/discovery.d.ts.map +1 -0
  63. package/dist/discovery.js +175 -0
  64. package/dist/durability.d.ts +16 -4
  65. package/dist/durability.d.ts.map +1 -1
  66. package/dist/durability.js +5 -0
  67. package/dist/entry.d.ts +5 -2
  68. package/dist/entry.d.ts.map +1 -1
  69. package/dist/entry.js +33 -28
  70. package/dist/figures.d.ts +49 -0
  71. package/dist/figures.d.ts.map +1 -0
  72. package/dist/figures.js +197 -0
  73. package/dist/file.d.ts +2 -19
  74. package/dist/file.d.ts.map +1 -1
  75. package/dist/file.js +7 -122
  76. package/dist/holdings.d.ts +29 -0
  77. package/dist/holdings.d.ts.map +1 -0
  78. package/dist/holdings.js +95 -0
  79. package/dist/host.d.ts +4 -10
  80. package/dist/host.d.ts.map +1 -1
  81. package/dist/host.js +74 -41
  82. package/dist/identity.d.ts +0 -2
  83. package/dist/identity.d.ts.map +1 -1
  84. package/dist/identity.js +0 -6
  85. package/dist/index.d.ts +33 -13
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +12 -2
  88. package/dist/install.d.ts +56 -0
  89. package/dist/install.d.ts.map +1 -0
  90. package/dist/install.js +554 -0
  91. package/dist/job.d.ts +33 -0
  92. package/dist/job.d.ts.map +1 -0
  93. package/dist/job.js +54 -0
  94. package/dist/lifecycle.d.ts +7 -0
  95. package/dist/lifecycle.d.ts.map +1 -0
  96. package/dist/lifecycle.js +268 -0
  97. package/dist/listing.d.ts +53 -0
  98. package/dist/listing.d.ts.map +1 -0
  99. package/dist/listing.js +176 -0
  100. package/dist/live.d.ts +23 -0
  101. package/dist/live.d.ts.map +1 -0
  102. package/dist/live.js +163 -0
  103. package/dist/locks.d.ts +9 -0
  104. package/dist/locks.d.ts.map +1 -0
  105. package/dist/locks.js +61 -0
  106. package/dist/log.d.ts +1 -0
  107. package/dist/log.d.ts.map +1 -1
  108. package/dist/lost.d.ts +5 -0
  109. package/dist/lost.d.ts.map +1 -0
  110. package/dist/lost.js +61 -0
  111. package/dist/media.d.ts +8 -0
  112. package/dist/media.d.ts.map +1 -0
  113. package/dist/media.js +218 -0
  114. package/dist/memory.d.ts +14 -7
  115. package/dist/memory.d.ts.map +1 -1
  116. package/dist/memory.js +241 -107
  117. package/dist/messages.d.ts +52 -0
  118. package/dist/messages.d.ts.map +1 -0
  119. package/dist/messages.js +162 -0
  120. package/dist/model.d.ts +8 -10
  121. package/dist/model.d.ts.map +1 -1
  122. package/dist/model.js +6 -18
  123. package/dist/models.d.ts +14 -0
  124. package/dist/models.d.ts.map +1 -0
  125. package/dist/models.js +195 -0
  126. package/dist/name.d.ts +4 -0
  127. package/dist/name.d.ts.map +1 -0
  128. package/dist/name.js +122 -0
  129. package/dist/observation.d.ts +17 -2
  130. package/dist/observation.d.ts.map +1 -1
  131. package/dist/observation.js +107 -17
  132. package/dist/opened.d.ts +22 -0
  133. package/dist/opened.d.ts.map +1 -0
  134. package/dist/opened.js +107 -0
  135. package/dist/opening.d.ts +4 -0
  136. package/dist/opening.d.ts.map +1 -0
  137. package/dist/opening.js +57 -0
  138. package/dist/outcome.d.ts +49 -8
  139. package/dist/outcome.d.ts.map +1 -1
  140. package/dist/outcome.js +42 -0
  141. package/dist/overlay.d.ts +3 -5
  142. package/dist/overlay.d.ts.map +1 -1
  143. package/dist/overlay.js +98 -172
  144. package/dist/{chat/parts.d.ts → parts.d.ts} +12 -9
  145. package/dist/parts.d.ts.map +1 -0
  146. package/dist/{chat/parts.js → parts.js} +53 -46
  147. package/dist/paths.d.ts +2 -0
  148. package/dist/paths.d.ts.map +1 -1
  149. package/dist/paths.js +26 -0
  150. package/dist/preparation.d.ts +20 -0
  151. package/dist/preparation.d.ts.map +1 -0
  152. package/dist/preparation.js +226 -0
  153. package/dist/queries.d.ts +16 -0
  154. package/dist/queries.d.ts.map +1 -0
  155. package/dist/queries.js +272 -0
  156. package/dist/query.d.ts +25 -191
  157. package/dist/query.d.ts.map +1 -1
  158. package/dist/query.js +3 -470
  159. package/dist/{chat/questions.d.ts → questions.d.ts} +5 -2
  160. package/dist/questions.d.ts.map +1 -0
  161. package/dist/{chat/questions.js → questions.js} +13 -2
  162. package/dist/reach.d.ts +20 -9
  163. package/dist/reach.d.ts.map +1 -1
  164. package/dist/reach.js +287 -99
  165. package/dist/react.d.ts +11 -4
  166. package/dist/react.d.ts.map +1 -1
  167. package/dist/react.js +2 -14
  168. package/dist/{chat/read.d.ts → read.d.ts} +2 -0
  169. package/dist/read.d.ts.map +1 -0
  170. package/dist/{chat/read.js → read.js} +4 -0
  171. package/dist/readiness.d.ts +13 -17
  172. package/dist/readiness.d.ts.map +1 -1
  173. package/dist/readiness.js +2 -8
  174. package/dist/reads.d.ts +36 -10
  175. package/dist/reads.d.ts.map +1 -1
  176. package/dist/reads.js +157 -84
  177. package/dist/recovery.d.ts +3 -2
  178. package/dist/recovery.d.ts.map +1 -1
  179. package/dist/recovery.js +43 -8
  180. package/dist/refresh.d.ts +18 -15
  181. package/dist/refresh.d.ts.map +1 -1
  182. package/dist/refresh.js +143 -58
  183. package/dist/refusal.d.ts +5 -0
  184. package/dist/refusal.d.ts.map +1 -0
  185. package/dist/refusal.js +55 -0
  186. package/dist/replica.d.ts +56 -33
  187. package/dist/replica.d.ts.map +1 -1
  188. package/dist/replica.js +332 -190
  189. package/dist/room-draft.d.ts +25 -8
  190. package/dist/room-draft.d.ts.map +1 -1
  191. package/dist/room-draft.js +161 -74
  192. package/dist/room-drafts.d.ts +24 -0
  193. package/dist/room-drafts.d.ts.map +1 -0
  194. package/dist/room-drafts.js +217 -0
  195. package/dist/rows.d.ts +31 -30
  196. package/dist/rows.d.ts.map +1 -1
  197. package/dist/rows.js +59 -118
  198. package/dist/runtime.d.ts +43 -0
  199. package/dist/runtime.d.ts.map +1 -0
  200. package/dist/runtime.js +1 -0
  201. package/dist/save.d.ts +57 -14
  202. package/dist/save.d.ts.map +1 -1
  203. package/dist/save.js +537 -192
  204. package/dist/saves.d.ts +70 -0
  205. package/dist/saves.d.ts.map +1 -0
  206. package/dist/saves.js +1005 -0
  207. package/dist/search.d.ts +12 -82
  208. package/dist/search.d.ts.map +1 -1
  209. package/dist/search.js +10 -207
  210. package/dist/seed.d.ts +11 -2
  211. package/dist/seed.d.ts.map +1 -1
  212. package/dist/seed.js +89 -5
  213. package/dist/shared.d.ts +6 -7
  214. package/dist/shared.d.ts.map +1 -1
  215. package/dist/shared.js +75 -104
  216. package/dist/shown.d.ts +31 -0
  217. package/dist/shown.d.ts.map +1 -0
  218. package/dist/shown.js +292 -0
  219. package/dist/socket/admission.d.ts +7 -0
  220. package/dist/socket/admission.d.ts.map +1 -0
  221. package/dist/socket/admission.js +39 -0
  222. package/dist/socket/answers.d.ts +6 -0
  223. package/dist/socket/answers.d.ts.map +1 -0
  224. package/dist/socket/answers.js +20 -0
  225. package/dist/socket/lanes.d.ts +20 -0
  226. package/dist/socket/lanes.d.ts.map +1 -0
  227. package/dist/socket/lanes.js +77 -0
  228. package/dist/socket/reads.d.ts +10 -0
  229. package/dist/socket/reads.d.ts.map +1 -0
  230. package/dist/socket/reads.js +31 -0
  231. package/dist/socket/rooms.d.ts +44 -0
  232. package/dist/socket/rooms.d.ts.map +1 -0
  233. package/dist/socket/rooms.js +90 -0
  234. package/dist/socket/session.d.ts +38 -0
  235. package/dist/socket/session.d.ts.map +1 -0
  236. package/dist/socket/session.js +23 -0
  237. package/dist/socket.d.ts +70 -0
  238. package/dist/socket.d.ts.map +1 -0
  239. package/dist/socket.js +175 -0
  240. package/dist/source.d.ts +61 -0
  241. package/dist/source.d.ts.map +1 -0
  242. package/dist/source.js +82 -0
  243. package/dist/status.d.ts +4 -5
  244. package/dist/status.d.ts.map +1 -1
  245. package/dist/status.js +3 -7
  246. package/dist/store/fences.d.ts +16 -0
  247. package/dist/store/fences.d.ts.map +1 -0
  248. package/dist/store/fences.js +26 -0
  249. package/dist/store/installs.d.ts +30 -0
  250. package/dist/store/installs.d.ts.map +1 -0
  251. package/dist/store/installs.js +34 -0
  252. package/dist/store/readiness.d.ts +10 -0
  253. package/dist/store/readiness.d.ts.map +1 -0
  254. package/dist/store/readiness.js +52 -0
  255. package/dist/store/records.d.ts +212 -0
  256. package/dist/store/records.d.ts.map +1 -0
  257. package/dist/store/records.js +431 -0
  258. package/dist/store/room-held.d.ts +8 -0
  259. package/dist/store/room-held.d.ts.map +1 -0
  260. package/dist/store/room-held.js +17 -0
  261. package/dist/store/space.d.ts +11 -0
  262. package/dist/store/space.d.ts.map +1 -0
  263. package/dist/store/space.js +41 -0
  264. package/dist/store/watchers.d.ts +17 -0
  265. package/dist/store/watchers.d.ts.map +1 -0
  266. package/dist/store/watchers.js +56 -0
  267. package/dist/store/writes.d.ts +24 -0
  268. package/dist/store/writes.d.ts.map +1 -0
  269. package/dist/store/writes.js +125 -0
  270. package/dist/store.d.ts +106 -158
  271. package/dist/store.d.ts.map +1 -1
  272. package/dist/store.js +136 -734
  273. package/dist/stored.d.ts +156 -0
  274. package/dist/stored.d.ts.map +1 -0
  275. package/dist/stored.js +649 -0
  276. package/dist/surface.d.ts +88 -0
  277. package/dist/surface.d.ts.map +1 -0
  278. package/dist/surface.js +223 -0
  279. package/dist/sync.d.ts +19 -0
  280. package/dist/sync.d.ts.map +1 -0
  281. package/dist/sync.js +532 -0
  282. package/dist/tables.d.ts +416 -0
  283. package/dist/tables.d.ts.map +1 -0
  284. package/dist/tables.js +740 -0
  285. package/dist/tallies.d.ts +18 -0
  286. package/dist/tallies.d.ts.map +1 -0
  287. package/dist/tallies.js +129 -0
  288. package/dist/transfer.d.ts +0 -5
  289. package/dist/transfer.d.ts.map +1 -1
  290. package/dist/turn.d.ts +5 -3
  291. package/dist/turn.d.ts.map +1 -1
  292. package/dist/turn.js +51 -21
  293. package/dist/validation.d.ts +29 -0
  294. package/dist/validation.d.ts.map +1 -0
  295. package/dist/validation.js +104 -0
  296. package/dist/windows.d.ts +11 -0
  297. package/dist/windows.d.ts.map +1 -0
  298. package/dist/windows.js +16 -0
  299. package/dist/wire.d.ts +50 -6
  300. package/dist/wire.d.ts.map +1 -1
  301. package/dist/wire.js +16 -2
  302. package/package.json +18 -19
  303. package/AGENTS.md +0 -299
  304. package/dist/acquisition.d.ts +0 -14
  305. package/dist/acquisition.d.ts.map +0 -1
  306. package/dist/acquisition.js +0 -24
  307. package/dist/chat/acts.d.ts +0 -33
  308. package/dist/chat/acts.d.ts.map +0 -1
  309. package/dist/chat/acts.js +0 -36
  310. package/dist/chat/context.d.ts +0 -3
  311. package/dist/chat/context.d.ts.map +0 -1
  312. package/dist/chat/input.d.ts +0 -9
  313. package/dist/chat/input.d.ts.map +0 -1
  314. package/dist/chat/input.js +0 -99
  315. package/dist/chat/kit.d.ts +0 -61
  316. package/dist/chat/kit.d.ts.map +0 -1
  317. package/dist/chat/kit.js +0 -123
  318. package/dist/chat/lasting.d.ts +0 -6
  319. package/dist/chat/lasting.d.ts.map +0 -1
  320. package/dist/chat/lasting.js +0 -19
  321. package/dist/chat/list.d.ts +0 -27
  322. package/dist/chat/list.d.ts.map +0 -1
  323. package/dist/chat/list.js +0 -63
  324. package/dist/chat/markdown.d.ts +0 -20
  325. package/dist/chat/markdown.d.ts.map +0 -1
  326. package/dist/chat/markdown.js +0 -188
  327. package/dist/chat/message.d.ts +0 -6
  328. package/dist/chat/message.d.ts.map +0 -1
  329. package/dist/chat/message.js +0 -192
  330. package/dist/chat/messages.d.ts +0 -22
  331. package/dist/chat/messages.d.ts.map +0 -1
  332. package/dist/chat/messages.js +0 -155
  333. package/dist/chat/name.d.ts +0 -6
  334. package/dist/chat/name.d.ts.map +0 -1
  335. package/dist/chat/name.js +0 -37
  336. package/dist/chat/opened.d.ts +0 -11
  337. package/dist/chat/opened.d.ts.map +0 -1
  338. package/dist/chat/opened.js +0 -17
  339. package/dist/chat/overlay.d.ts +0 -31
  340. package/dist/chat/overlay.d.ts.map +0 -1
  341. package/dist/chat/overlay.js +0 -97
  342. package/dist/chat/parts.d.ts.map +0 -1
  343. package/dist/chat/process.d.ts +0 -20
  344. package/dist/chat/process.d.ts.map +0 -1
  345. package/dist/chat/process.js +0 -32
  346. package/dist/chat/provider.d.ts +0 -63
  347. package/dist/chat/provider.d.ts.map +0 -1
  348. package/dist/chat/provider.js +0 -629
  349. package/dist/chat/question.d.ts +0 -9
  350. package/dist/chat/question.d.ts.map +0 -1
  351. package/dist/chat/question.js +0 -80
  352. package/dist/chat/questions.d.ts.map +0 -1
  353. package/dist/chat/read.d.ts.map +0 -1
  354. package/dist/chat/ready.d.ts +0 -34
  355. package/dist/chat/ready.d.ts.map +0 -1
  356. package/dist/chat/ready.js +0 -91
  357. package/dist/chat/style.d.ts +0 -4
  358. package/dist/chat/style.d.ts.map +0 -1
  359. package/dist/chat/style.js +0 -302
  360. package/dist/chat.d.ts +0 -14
  361. package/dist/chat.d.ts.map +0 -1
  362. package/dist/chat.js +0 -8
  363. package/dist/fence.d.ts +0 -6
  364. package/dist/fence.d.ts.map +0 -1
  365. package/dist/fence.js +0 -10
  366. package/dist/read-side.d.ts +0 -25
  367. package/dist/read-side.d.ts.map +0 -1
  368. package/dist/read-side.js +0 -642
package/dist/memory.js CHANGED
@@ -1,7 +1,12 @@
1
+ import { documentFacts, parse } from '@agentshouse/mdmodel';
2
+ import { NO_ROOM_TYPES, schemaTypes } from './attached-model.js';
1
3
  import { sameChange } from './overlay.js';
4
+ const ATTACHMENTS = 'attachments';
5
+ function lastName(path) {
6
+ return path.slice(path.lastIndexOf('/') + 1);
7
+ }
2
8
  const FIXTURE_RETENTION = {
3
9
  history: { kind: 'duration', seconds: 1 },
4
- outcome: 604_800,
5
10
  refreshHorizon: 1,
6
11
  };
7
12
  function declaredRetention(value) {
@@ -15,12 +20,7 @@ function declaredRetention(value) {
15
20
  }
16
21
  const MODEL_ABSENT = { kind: 'model-unavailable', reason: 'not-readable' };
17
22
  function modelsOf(room) {
18
- return {
19
- collection: room.model ?? MODEL_ABSENT,
20
- ...(room.typedSelection === undefined
21
- ? {}
22
- : { selection: room.selectionModel ?? MODEL_ABSENT }),
23
- };
23
+ return { collection: room.model ?? MODEL_ABSENT };
24
24
  }
25
25
  function changedModels(room, from) {
26
26
  const now = modelsOf(room);
@@ -53,14 +53,16 @@ export function createMemoryAdapter(options = {}) {
53
53
  const listeners = new Set();
54
54
  const modeObservers = new Set();
55
55
  const scripted = new Map();
56
- const unsealed = new Map();
57
- const sealed = new Set();
58
56
  const sentTurns = new Map();
59
57
  const historyPageSize = options.historyPageSize;
60
- let held = [];
61
- let heldDemand = null;
58
+ const attached = new Map();
59
+ const linked = new WeakMap();
60
+ const carried = new Map();
62
61
  let expiring = [];
62
+ let openings = 0;
63
+ const declaredRooms = new Set();
63
64
  let replicated = [];
65
+ let heldCursor = null;
64
66
  let issued = 0;
65
67
  function scriptConversations(entries) {
66
68
  scripted.clear();
@@ -88,8 +90,48 @@ export function createMemoryAdapter(options = {}) {
88
90
  const wanted = ordinals.get(`${locator}\u0000${target}`);
89
91
  return held !== undefined && wanted !== undefined && held >= wanted;
90
92
  }
93
+ function heldBlob(room, path) {
94
+ return attached.get(`${room.locator}\u0000${path}`) ?? room.blobs?.[path];
95
+ }
96
+ function freePath(room, name) {
97
+ const dot = name.lastIndexOf('.');
98
+ const stem = dot > 0 ? name.slice(0, dot) : name;
99
+ const extension = dot > 0 ? name.slice(dot) : '';
100
+ for (let count = 1;; count += 1) {
101
+ const path = `${ATTACHMENTS}/${count === 1 ? stem : `${stem}-${count}`}${extension}`;
102
+ if (heldBlob(room, path) === undefined && room.documents?.[path] === undefined)
103
+ return path;
104
+ }
105
+ }
106
+ const saved = new WeakMap();
107
+ function factsAt(room, path, content) {
108
+ const types = schemaTypes(room.model?.kind === 'model' ? room.model.snapshot.schema : null, NO_ROOM_TYPES);
109
+ let held = saved.get(types);
110
+ if (held === undefined) {
111
+ held = new Map();
112
+ saved.set(types, held);
113
+ }
114
+ const key = `${path}\u0000${content}`;
115
+ if (!held.has(key)) {
116
+ const facts = documentFacts(path, parse(content, path), { types });
117
+ held.set(key, facts === null ? null : JSON.parse(JSON.stringify(facts)));
118
+ }
119
+ return held.get(key);
120
+ }
121
+ function factsIn(room, paths) {
122
+ const facts = {};
123
+ for (const path of paths) {
124
+ const content = room.documents?.[path];
125
+ const held = room.facts?.[path] ?? (content === undefined ? null : factsAt(room, path, content));
126
+ if (held !== null)
127
+ facts[path] = held;
128
+ }
129
+ return facts;
130
+ }
91
131
  function retain(entries) {
92
132
  for (const room of entries) {
133
+ for (const [path, content] of Object.entries(room.documents ?? {}))
134
+ factsAt(room, path, content);
93
135
  note(room.locator, room);
94
136
  const versions = served.get(room.locator) ?? new Map();
95
137
  versions.set(room.roomVersion, room);
@@ -107,6 +149,7 @@ export function createMemoryAdapter(options = {}) {
107
149
  replica: room.replica,
108
150
  ...(room.typedSelection === undefined ? {} : { typedSelection: room.typedSelection }),
109
151
  providerOwnedPaths: room.providerOwnedPaths,
152
+ authoredPaths: room.authoredPaths,
110
153
  };
111
154
  }
112
155
  function page(room, after) {
@@ -122,27 +165,43 @@ export function createMemoryAdapter(options = {}) {
122
165
  roomVersion: room.roomVersion,
123
166
  ...(opening ? { models: modelsOf(room) } : {}),
124
167
  documents: named(room.documents ?? {}, taken),
168
+ facts: factsIn(room, taken),
125
169
  revisions: named(room.revisions ?? {}, [...taken, ...targets]),
126
170
  ...(room.fileIds === undefined
127
171
  ? {}
128
172
  : { fileIds: named(room.fileIds, [...taken, ...targets]) }),
173
+ ...(room.created === undefined
174
+ ? {}
175
+ : { created: named(room.created, [...taken, ...targets]) }),
129
176
  changes: named(room.changes ?? {}, [...taken, ...targets]),
130
177
  binaryFiles: named(room.binaryFiles ?? {}, targets),
178
+ ...(opening && room.folders !== undefined ? { folders: room.folders } : {}),
131
179
  ...(next < paths.length ? { pageToken: taken.at(-1) } : {}),
132
180
  };
133
181
  }
134
- function advancement(room, from, at) {
182
+ function foldersMoved(room, from) {
183
+ const now = new Set(room.folders ?? []);
184
+ const before = new Set(from.folders ?? []);
185
+ const folders = [...now].filter((folder) => !before.has(folder)).sort();
186
+ const folderRemovals = [...before].filter((folder) => !now.has(folder)).sort();
187
+ return {
188
+ ...(folders.length === 0 ? {} : { folders }),
189
+ ...(folderRemovals.length === 0 ? {} : { folderRemovals }),
190
+ };
191
+ }
192
+ function advancement(room, from, at, whole = false) {
135
193
  const current = room.documents ?? {};
136
194
  const previous = from.documents ?? {};
137
195
  const currentTargets = new Set(Object.keys(room.binaryFiles ?? {}));
138
196
  const previousTargets = new Set(Object.keys(from.binaryFiles ?? {}));
139
197
  const headMoved = (path) => room.revisions?.[path] !== from.revisions?.[path] ||
140
198
  room.fileIds?.[path] !== from.fileIds?.[path] ||
199
+ room.created?.[path] !== from.created?.[path] ||
141
200
  !sameChange(room.changes?.[path], from.changes?.[path]);
142
201
  const changed = Object.keys(current)
143
202
  .filter((path) => current[path] !== previous[path] || headMoved(path))
144
203
  .sort();
145
- const size = pageSize ?? changed.length;
204
+ const size = whole ? changed.length : (pageSize ?? changed.length);
146
205
  const taken = changed.slice(at, at + size);
147
206
  const next = at + taken.length;
148
207
  const opening = at === 0;
@@ -158,12 +217,17 @@ export function createMemoryAdapter(options = {}) {
158
217
  roomVersion: room.roomVersion,
159
218
  ...(models === undefined ? {} : { models }),
160
219
  documents: named(current, taken),
220
+ facts: factsIn(room, taken),
161
221
  revisions: named(room.revisions ?? {}, [...taken, ...targets]),
162
222
  ...(room.fileIds === undefined
163
223
  ? {}
164
224
  : { fileIds: named(room.fileIds, [...taken, ...targets]) }),
225
+ ...(room.created === undefined
226
+ ? {}
227
+ : { created: named(room.created, [...taken, ...targets]) }),
165
228
  changes: named(room.changes ?? {}, [...taken, ...targets]),
166
229
  binaryFiles: named(room.binaryFiles ?? {}, targets),
230
+ ...(opening ? foldersMoved(room, from) : {}),
167
231
  removals: opening
168
232
  ? [
169
233
  ...Object.keys(previous).filter((path) => !(path in current) && !currentTargets.has(path)),
@@ -173,6 +237,26 @@ export function createMemoryAdapter(options = {}) {
173
237
  ...(pageToken === undefined ? {} : { pageToken }),
174
238
  };
175
239
  }
240
+ function carry(locator) {
241
+ const at = carried.get(locator);
242
+ const current = rooms.find((entry) => entry.locator === locator);
243
+ if (at === undefined || current === undefined || current.roomVersion === at)
244
+ return;
245
+ const from = served.get(locator)?.get(at);
246
+ carried.set(locator, current.roomVersion);
247
+ if (from === undefined)
248
+ return;
249
+ const page = advancement(current, from, 0, true);
250
+ for (const observer of observers) {
251
+ observer({
252
+ kind: 'room-change',
253
+ locator,
254
+ from: at,
255
+ roomVersion: current.roomVersion,
256
+ read: async () => page,
257
+ });
258
+ }
259
+ }
176
260
  function pageOf(conversation, after) {
177
261
  const messages = conversation.messages ?? [];
178
262
  const first = typeof after === 'string' ? messages.findIndex((message) => message.position > after) : 0;
@@ -187,16 +271,13 @@ export function createMemoryAdapter(options = {}) {
187
271
  : {}),
188
272
  };
189
273
  }
190
- function historiesOf(input) {
191
- const asked = input?.conversations;
192
- if (!Array.isArray(asked))
193
- return { kind: 'rejected', code: 'invalid_request', fields: {}, retryable: false };
274
+ function historiesOf(request) {
194
275
  const histories = [];
195
- for (const entry of asked) {
196
- const conversation = typeof entry.conversation === 'string' ? scripted.get(entry.conversation) : undefined;
276
+ for (const entry of request.conversations) {
277
+ const conversation = scripted.get(entry.conversation);
197
278
  if (conversation === undefined)
198
279
  continue;
199
- const outcome = conversation.outcomes?.['conversation.history'];
280
+ const outcome = conversation.outcomes?.history;
200
281
  if (outcome !== undefined)
201
282
  return outcome;
202
283
  histories.push(pageOf(conversation, entry.after));
@@ -207,15 +288,13 @@ export function createMemoryAdapter(options = {}) {
207
288
  function conversationAction(request) {
208
289
  const name = request.name;
209
290
  const input = (request.input ?? {});
210
- if (name === 'conversation.history')
211
- return historiesOf(request.input);
212
- if (name === 'conversation.create') {
291
+ if (name === 'conversations/create') {
213
292
  issued += 1;
214
293
  const conversation = `conversation-${issued}`;
215
294
  scripted.set(conversation, { conversation });
216
- return { kind: 'action', result: { conversation } };
295
+ return { kind: 'action', result: { conversation_id: conversation } };
217
296
  }
218
- const named = typeof input.conversation === 'string' ? input.conversation : '';
297
+ const named = typeof input.conversation_id === 'string' ? input.conversation_id : '';
219
298
  const conversation = scripted.get(named);
220
299
  if (conversation === undefined) {
221
300
  return {
@@ -228,34 +307,28 @@ export function createMemoryAdapter(options = {}) {
228
307
  const outcome = conversation.outcomes?.[name];
229
308
  if (outcome !== undefined)
230
309
  return outcome;
231
- if (name === 'conversation.send') {
310
+ if (name === 'conversations/send') {
232
311
  const operation = typeof input.operation_id === 'string' ? input.operation_id : null;
233
312
  const answered = operation === null ? undefined : sentTurns.get(operation);
234
313
  if (answered !== undefined)
235
- return { kind: 'action', result: { turn: answered } };
314
+ return { kind: 'action', result: { message_id: answered } };
236
315
  issued += 1;
237
316
  const turn = `turn-${issued}`;
238
- unsealed.set(turn, named);
239
317
  if (operation !== null)
240
318
  sentTurns.set(operation, turn);
241
- return { kind: 'action', result: { turn } };
242
- }
243
- if (name === 'conversation.cancel') {
244
- const turn = typeof input.turn === 'string' ? input.turn : '';
245
- if (sealed.has(turn) || !unsealed.has(turn)) {
246
- return { kind: 'rejected', code: 'turn-sealed', fields: { turn }, retryable: false };
247
- }
248
- unsealed.delete(turn);
249
- return { kind: 'action', result: { turn, cancelled: true } };
319
+ return { kind: 'action', result: { message_id: turn } };
250
320
  }
251
- if (name === 'conversation.delete')
321
+ if (name === 'conversations/delete')
252
322
  scripted.delete(named);
253
- return { kind: 'action', result: { conversation: named } };
323
+ return { kind: 'action', result: { conversation_id: named } };
254
324
  }
255
325
  function announceList() {
256
- const entries = [...scripted.values()].flatMap(({ conversation, listed }) => listed === undefined ? [] : [{ conversation, ...listed }]);
257
- for (const listener of listeners)
258
- listener({ kind: 'list', entries });
326
+ const entries = [...scripted.values()].flatMap(({ conversation, listed, messages = [] }) => listed === undefined
327
+ ? []
328
+ : [{ conversation, ...listed, newest: messages.at(-1)?.position ?? null }]);
329
+ for (const listener of listeners) {
330
+ listener({ kind: 'list', entries, whole: true, more: false, cursor: null });
331
+ }
259
332
  }
260
333
  function discovery() {
261
334
  return {
@@ -267,8 +340,42 @@ export function createMemoryAdapter(options = {}) {
267
340
  ...(options.member === undefined ? {} : { member: options.member }),
268
341
  };
269
342
  }
343
+ function discovered() {
344
+ return resolveScript(scripts.discover, discovery, undefined).then((answer) => {
345
+ if (answer.kind === 'discovery')
346
+ for (const room of answer.rooms)
347
+ note(room.locator, room);
348
+ return answer;
349
+ });
350
+ }
351
+ function opened(notify) {
352
+ const opening = ++openings;
353
+ notify({ kind: 'opened' });
354
+ void discovered()
355
+ .catch(() => ({ kind: 'transport-uncertainty' }))
356
+ .then((answer) => {
357
+ if (opening !== openings)
358
+ return;
359
+ if (answer.kind !== 'discovery') {
360
+ openings += 1;
361
+ carried.clear();
362
+ const revoked = answer.kind === 'revoked-authorization';
363
+ notify({ kind: 'closed', revoked, lost: !revoked, authorityChanged: false });
364
+ return;
365
+ }
366
+ declaredRooms.clear();
367
+ for (const room of answer.rooms)
368
+ declaredRooms.add(room.locator);
369
+ notify({ kind: 'discovered', discovery: answer });
370
+ });
371
+ }
372
+ function emitAll(event) {
373
+ for (const observer of observers)
374
+ observer(event);
375
+ }
270
376
  return {
271
- ...(options.exhaustiveDiscovery === undefined ? {} : { exhaustiveDiscovery: true }),
377
+ ...(options.roomTypes === undefined ? {} : { roomTypes: options.roomTypes }),
378
+ ...(options.typedPaths === undefined ? {} : { typedPaths: options.typedPaths }),
272
379
  setRooms(next) {
273
380
  rooms = [...next];
274
381
  retain(rooms);
@@ -277,30 +384,37 @@ export function createMemoryAdapter(options = {}) {
277
384
  scriptConversations(next);
278
385
  },
279
386
  open() {
387
+ carried.clear();
280
388
  announceList();
281
- for (const observer of observers)
282
- observer({ kind: 'opened' });
389
+ opened(emitAll);
283
390
  },
284
- close({ revoked = false, lost = !revoked } = {}) {
285
- for (const observer of observers)
286
- observer({ kind: 'closed', revoked, lost });
391
+ close({ revoked = false, lost = !revoked, authorityChanged = false } = {}) {
392
+ openings += 1;
393
+ carried.clear();
394
+ emitAll({ kind: 'closed', revoked, lost, authorityChanged });
287
395
  },
288
396
  expire(locators) {
289
397
  expiring = [...locators];
290
398
  },
291
- notifyRoomVersion({ locator, roomVersion }) {
292
- for (const observer of observers)
293
- observer({ kind: 'room-version', locator, roomVersion });
399
+ notifyRoomVersion({ locator }) {
400
+ carry(locator);
294
401
  },
295
- notifyAuthorityChanged() {
296
- for (const observer of observers)
297
- observer({ kind: 'authority-changed' });
402
+ notifyAuthorityChanged(locators) {
403
+ const named = new Set(locators ?? [...declaredRooms, ...rooms.map((room) => room.locator)]);
404
+ const listed = rooms.filter((room) => named.has(room.locator));
405
+ const left = [...named].filter((locator) => !listed.some((room) => room.locator === locator));
406
+ for (const room of listed)
407
+ declaredRooms.add(room.locator);
408
+ for (const locator of left)
409
+ declaredRooms.delete(locator);
410
+ emitAll({
411
+ kind: 'authority-changed',
412
+ rooms: listed.map(declared),
413
+ left,
414
+ ...(options.member === undefined ? {} : { member: options.member }),
415
+ });
298
416
  },
299
417
  notifyConversation(event) {
300
- if (event.kind === 'accepted-message') {
301
- sealed.add(event.message.turn);
302
- unsealed.delete(event.message.turn);
303
- }
304
418
  for (const listener of listeners)
305
419
  listener(event);
306
420
  },
@@ -309,24 +423,31 @@ export function createMemoryAdapter(options = {}) {
309
423
  observer(mode);
310
424
  },
311
425
  heldRooms() {
312
- return held;
313
- },
314
- heldDemand() {
315
- return heldDemand;
426
+ return [...carried.keys()].sort();
316
427
  },
317
428
  replicatedConversations() {
318
429
  return replicated;
319
430
  },
431
+ heldConversationCursor() {
432
+ return heldCursor;
433
+ },
320
434
  conversations: {
321
435
  replicate(next) {
322
436
  replicated = [...next];
323
437
  },
438
+ hold(cursor) {
439
+ heldCursor = cursor;
440
+ },
324
441
  observe(notify) {
325
442
  listeners.add(notify);
326
443
  return () => {
327
444
  listeners.delete(notify);
328
445
  };
329
446
  },
447
+ history: (request) => Promise.resolve(historiesOf(request)),
448
+ ...(options.agents === undefined
449
+ ? {}
450
+ : { agents: () => Promise.resolve(structuredClone(options.agents)) }),
330
451
  },
331
452
  serviceMode: {
332
453
  observe(notify) {
@@ -337,46 +458,47 @@ export function createMemoryAdapter(options = {}) {
337
458
  },
338
459
  },
339
460
  roomStream: {
340
- hold(asked, demand) {
341
- held = asked.map((room) => room.locator);
342
- heldDemand = demand;
343
- const expired = expiring.filter((locator) => held.includes(locator));
344
- expiring = [];
345
- const moved = asked.flatMap((room) => {
461
+ hold(asked) {
462
+ const named = asked.map((room) => room.locator);
463
+ const unknown = asked.flatMap((room) => {
346
464
  const current = rooms.find((entry) => entry.locator === room.locator);
465
+ const version = room.roomVersion;
347
466
  return current === undefined ||
348
- expired.includes(room.locator) ||
349
- current.roomVersion === room.roomVersion
467
+ (version !== null &&
468
+ (current.roomVersion === version || served.get(room.locator)?.has(version) === true))
350
469
  ? []
351
- : [{ locator: room.locator, roomVersion: current.roomVersion }];
470
+ : [room.locator];
352
471
  });
472
+ const expired = [
473
+ ...new Set([...expiring.filter((locator) => named.includes(locator)), ...unknown]),
474
+ ];
475
+ expiring = expiring.filter((locator) => !named.includes(locator));
353
476
  queueMicrotask(() => {
354
- for (const observer of observers) {
355
- for (const room of moved)
356
- observer({ kind: 'room-version', ...room });
357
- observer({ kind: 'opening', expired });
477
+ for (const room of asked) {
478
+ if (expired.includes(room.locator) || room.roomVersion === null)
479
+ carried.delete(room.locator);
480
+ else {
481
+ carried.set(room.locator, room.roomVersion);
482
+ carry(room.locator);
483
+ }
358
484
  }
485
+ emitAll({ kind: 'caught-up', expired });
359
486
  });
360
487
  },
361
- reopen() {
362
- queueMicrotask(() => {
363
- for (const observer of observers) {
364
- observer({ kind: 'closed', revoked: false, lost: false });
365
- }
366
- });
367
- },
368
- published() { },
369
488
  observe(notify) {
370
489
  observers.add(notify);
371
490
  queueMicrotask(() => {
372
491
  if (!observers.has(notify))
373
492
  return;
374
493
  if (options.unopened === true) {
375
- notify({ kind: 'closed', revoked: false, lost: true });
494
+ notify({ kind: 'closed', revoked: false, lost: true, authorityChanged: false });
376
495
  return;
377
496
  }
378
497
  announceList();
379
- notify({ kind: 'opened' });
498
+ opened((event) => {
499
+ if (observers.has(notify))
500
+ notify(event);
501
+ });
380
502
  });
381
503
  return () => {
382
504
  observers.delete(notify);
@@ -393,12 +515,7 @@ export function createMemoryAdapter(options = {}) {
393
515
  return resolveScript(scripts.authorize, () => ({}), undefined);
394
516
  },
395
517
  async discover(_authorization) {
396
- return resolveScript(scripts.discover, discovery, undefined).then((answer) => {
397
- if (answer.kind === 'discovery')
398
- for (const room of answer.rooms)
399
- note(room.locator, room);
400
- return answer;
401
- });
518
+ return discovered();
402
519
  },
403
520
  reached,
404
521
  follows(locator, roomVersion, next) {
@@ -455,7 +572,13 @@ export function createMemoryAdapter(options = {}) {
455
572
  retryable: false,
456
573
  affected: {},
457
574
  };
458
- }, request).then((answer) => note(request.locator, answer));
575
+ }, request).then((answer) => {
576
+ const destination = request.changeBatch.between?.destination.room;
577
+ if (answer.kind === 'accepted' && answer.destination !== undefined && destination) {
578
+ note(destination, answer.destination);
579
+ }
580
+ return note(request.locator, answer);
581
+ });
459
582
  },
460
583
  async history(_authorization, request) {
461
584
  return resolveScript(scripts.history, () => {
@@ -471,31 +594,42 @@ export function createMemoryAdapter(options = {}) {
471
594
  },
472
595
  async binary(_authorization, request) {
473
596
  return resolveScript(scripts.binary, () => {
474
- if (request.kind === 'reference') {
475
- return { kind: 'rejected', code: 'unscripted-binary', fields: {}, retryable: false };
476
- }
477
597
  const room = rooms.find((entry) => entry.locator === request.locator);
478
598
  if (room === undefined)
479
599
  return { kind: 'room-not-readable', locator: request.locator };
480
- const blob = room.blobs?.[request.path];
600
+ const blob = heldBlob(room, request.path);
481
601
  return blob === undefined
482
602
  ? { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false }
483
- : { kind: 'binary', blob };
603
+ : { kind: 'binary', body: blob.stream(), mediaType: blob.type };
484
604
  }, request);
485
605
  },
486
- referrerScope(referrer) {
487
- if (typeof referrer !== 'object' || referrer === null)
488
- return null;
489
- const { room, path, message } = referrer;
490
- if (typeof message === 'string')
491
- return { kind: 'conversations' };
492
- if (typeof room !== 'string')
493
- return null;
494
- return { kind: 'room', locator: room, ...(typeof path === 'string' ? { path } : {}) };
606
+ async link(_authorization, request) {
607
+ return resolveScript(scripts.link, () => {
608
+ const room = rooms.find((entry) => entry.locator === request.locator);
609
+ if (room === undefined)
610
+ return { kind: 'room-not-readable', locator: request.locator };
611
+ const blob = heldBlob(room, request.path);
612
+ if (blob === undefined) {
613
+ return { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false };
614
+ }
615
+ const url = linked.get(blob) ?? URL.createObjectURL(blob);
616
+ linked.set(blob, url);
617
+ return { kind: 'link', url, name: lastName(request.path), mediaType: blob.type };
618
+ }, request);
619
+ },
620
+ async attach(_authorization, request) {
621
+ return resolveScript(scripts.attach, () => {
622
+ const room = rooms.find((entry) => entry.locator === request.locator);
623
+ if (room === undefined)
624
+ return { kind: 'room-not-readable', locator: request.locator };
625
+ const path = freePath(room, request.name);
626
+ attached.set(`${room.locator}\u0000${path}`, request.blob);
627
+ return { kind: 'attached', path, revision: `attached-${attached.size}` };
628
+ }, request);
495
629
  },
496
630
  async action(_authorization, request) {
497
631
  return resolveScript(scripts.action, () => {
498
- if (request.name.startsWith('conversation.'))
632
+ if (request.name.startsWith('conversations/'))
499
633
  return conversationAction(request);
500
634
  return { kind: 'rejected', code: 'unscripted-action', fields: {}, retryable: false };
501
635
  }, request).then((answer) => {
@@ -0,0 +1,52 @@
1
+ import type { AcceptedMessage } from './adapter.js';
2
+ import type { JobMarker } from './job.js';
3
+ import type { Connection } from './tables.js';
4
+ export declare const MESSAGE_TABLES: readonly string[];
5
+ export declare const ROWS = "WITH chosen AS (\n SELECT listed.value AS conversation,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND json_extract(message, '$.role') = 'assistant' ORDER BY position DESC, identity DESC LIMIT 1) AS answer,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND text <> '' ORDER BY position DESC, identity DESC LIMIT 1) AS said,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND json_extract(message, '$.role') = 'house' ORDER BY position, identity LIMIT 1) AS opened,\n (SELECT id FROM conversation_messages WHERE conversation = listed.value AND json_extract(message, '$.role') = 'house' AND json_extract(message, '$.waiting') = 1 ORDER BY position, identity LIMIT 1) AS asking\n FROM json_each(?) AS listed\n )\n SELECT chosen.conversation AS conversation,\n substr(said.text, 1, 512) AS said_text,\n json_extract(said.message, '$.role') AS said_role,\n json_extract(said.message, '$.accepted_at') AS said_at,\n substr(json_extract(answer.message, '$.failure'), 1, 512) AS failure,\n json_extract(opened.message, '$.source') AS opened_source,\n json_extract(opened.message, '$.sender') AS opened_sender,\n asking.identity AS asking_identity,\n asking.text AS asking_text,\n json_extract(asking.message, '$.accepted_at') AS asking_at,\n json_extract(asking.message, '$.source') AS asking_source,\n json_extract(asking.message, '$.sender') AS asking_sender\n FROM chosen\n LEFT JOIN conversation_messages said ON said.id = chosen.said\n LEFT JOIN conversation_messages answer ON answer.id = chosen.answer\n LEFT JOIN conversation_messages opened ON opened.id = chosen.opened\n LEFT JOIN conversation_messages asking ON asking.id = chosen.asking";
6
+ export declare const JOB_MARKERS = "SELECT json_extract(part.value, '$.text') AS said,\n json_extract(message, '$.accepted_at') AS at\n FROM conversation_messages, json_each(message, '$.parts') AS part\n WHERE conversation = ? AND instr(message, '\"marker\":\"job\"') > 0\n AND json_extract(part.value, '$.type') = 'marker'\n AND json_extract(part.value, '$.marker') = 'job'\n ORDER BY position, identity, part.key";
7
+ export type HeldConversation = {
8
+ readonly conversation: string;
9
+ readonly read: string | null | undefined;
10
+ readonly partial: boolean;
11
+ };
12
+ export type MessageWindow = {
13
+ readonly messages: AcceptedMessage[];
14
+ readonly more: boolean;
15
+ };
16
+ export type HeldSource = {
17
+ readonly source: unknown;
18
+ readonly sender: string | null;
19
+ };
20
+ export type HeldRow = {
21
+ readonly conversation: string;
22
+ readonly said: {
23
+ readonly text: string;
24
+ readonly role: string | null;
25
+ readonly at: string | null;
26
+ } | null;
27
+ readonly failure: string | null;
28
+ readonly opened: HeldSource | null;
29
+ readonly asking: (HeldSource & {
30
+ readonly identity: string;
31
+ readonly text: string;
32
+ readonly at: string | null;
33
+ }) | null;
34
+ };
35
+ export type ConversationWrite = {
36
+ readonly conversation: string;
37
+ readonly messages: readonly AcceptedMessage[];
38
+ readonly read?: {
39
+ readonly at: string | null;
40
+ readonly partial: boolean;
41
+ };
42
+ };
43
+ export declare function heldConversations(connection: Connection, conversations: readonly string[] | null): HeldConversation[];
44
+ export declare function keptMessages(connection: Connection, { conversation, messages, read }: ConversationWrite): null;
45
+ export declare function messageWindow(connection: Connection, conversation: string, limit: number, before: readonly [string, string] | null, phrase: string | null): MessageWindow;
46
+ export declare function messageCount(connection: Connection, conversation: string, phrase: string | null): number;
47
+ export declare function conversationRows(connection: Connection, conversations: readonly string[]): HeldRow[];
48
+ export declare function jobMarkers(connection: Connection, conversation: string): JobMarker[];
49
+ export declare function turnArrived(connection: Connection, conversation: string, turn: string): boolean;
50
+ export declare function droppedMessages(connection: Connection, conversations: readonly string[]): void;
51
+ export declare function forgottenMessages(connection: Connection): void;
52
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}