@agentshouse/mdruntime 0.1.0-cbb8d8acc9d19 → 0.1.0-cbbae1fff01c6

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 (324) hide show
  1. package/README.md +24 -11
  2. package/dist/acceptance.d.ts +3 -0
  3. package/dist/acceptance.d.ts.map +1 -0
  4. package/dist/acceptance.js +308 -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 +194 -90
  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/attempt.d.ts +16 -0
  14. package/dist/attempt.d.ts.map +1 -0
  15. package/dist/attempt.js +70 -0
  16. package/dist/binary.d.ts +18 -0
  17. package/dist/binary.d.ts.map +1 -0
  18. package/dist/binary.js +8 -0
  19. package/dist/bootstrap.d.ts +37 -5
  20. package/dist/bootstrap.d.ts.map +1 -1
  21. package/dist/bootstrap.js +324 -52
  22. package/dist/cell.d.ts +6 -0
  23. package/dist/cell.d.ts.map +1 -0
  24. package/dist/cell.js +9 -0
  25. package/dist/chain.d.ts +12 -0
  26. package/dist/chain.d.ts.map +1 -0
  27. package/dist/chain.js +64 -0
  28. package/dist/change-set.d.ts +13 -14
  29. package/dist/change-set.d.ts.map +1 -1
  30. package/dist/change-set.js +17 -56
  31. package/dist/change.d.ts +46 -0
  32. package/dist/change.d.ts.map +1 -1
  33. package/dist/change.js +36 -0
  34. package/dist/chat-types.d.ts +5 -0
  35. package/dist/chat-types.d.ts.map +1 -0
  36. package/dist/chat-types.js +13 -0
  37. package/dist/client.d.ts +56 -18
  38. package/dist/client.d.ts.map +1 -1
  39. package/dist/client.js +164 -23
  40. package/dist/collection.d.ts +31 -14
  41. package/dist/collection.d.ts.map +1 -1
  42. package/dist/collection.js +61 -55
  43. package/dist/compile.d.ts +16 -0
  44. package/dist/compile.d.ts.map +1 -0
  45. package/dist/compile.js +711 -0
  46. package/dist/connection.d.ts +8 -104
  47. package/dist/connection.d.ts.map +1 -1
  48. package/dist/connection.js +107 -2094
  49. package/dist/context.d.ts +2 -0
  50. package/dist/context.d.ts.map +1 -0
  51. package/dist/context.js +7 -0
  52. package/dist/conversation-live.d.ts +135 -0
  53. package/dist/conversation-live.d.ts.map +1 -0
  54. package/dist/conversation-live.js +247 -0
  55. package/dist/conversation-row.d.ts +33 -0
  56. package/dist/conversation-row.d.ts.map +1 -0
  57. package/dist/conversation-row.js +53 -0
  58. package/dist/conversation.d.ts +67 -44
  59. package/dist/conversation.d.ts.map +1 -1
  60. package/dist/conversation.js +1010 -549
  61. package/dist/declaration.d.ts +10 -0
  62. package/dist/declaration.d.ts.map +1 -0
  63. package/dist/declaration.js +24 -0
  64. package/dist/digest.d.ts +7 -0
  65. package/dist/digest.d.ts.map +1 -0
  66. package/dist/digest.js +113 -0
  67. package/dist/discovery.d.ts +10 -0
  68. package/dist/discovery.d.ts.map +1 -0
  69. package/dist/discovery.js +148 -0
  70. package/dist/durability.d.ts +19 -1
  71. package/dist/durability.d.ts.map +1 -1
  72. package/dist/durability.js +5 -0
  73. package/dist/entry.d.ts +20 -0
  74. package/dist/entry.d.ts.map +1 -0
  75. package/dist/entry.js +161 -0
  76. package/dist/expectation.d.ts +23 -0
  77. package/dist/expectation.d.ts.map +1 -0
  78. package/dist/expectation.js +92 -0
  79. package/dist/failure.d.ts +14 -0
  80. package/dist/failure.d.ts.map +1 -0
  81. package/dist/failure.js +22 -0
  82. package/dist/figures.d.ts +49 -0
  83. package/dist/figures.d.ts.map +1 -0
  84. package/dist/figures.js +197 -0
  85. package/dist/file.d.ts +2 -19
  86. package/dist/file.d.ts.map +1 -1
  87. package/dist/file.js +7 -122
  88. package/dist/holdings.d.ts +29 -0
  89. package/dist/holdings.d.ts.map +1 -0
  90. package/dist/holdings.js +95 -0
  91. package/dist/host.d.ts +28 -4
  92. package/dist/host.d.ts.map +1 -1
  93. package/dist/host.js +149 -27
  94. package/dist/identity.d.ts +3 -0
  95. package/dist/identity.d.ts.map +1 -1
  96. package/dist/identity.js +13 -1
  97. package/dist/index.d.ts +40 -10
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +17 -0
  100. package/dist/install.d.ts +54 -0
  101. package/dist/install.d.ts.map +1 -0
  102. package/dist/install.js +538 -0
  103. package/dist/job.d.ts +5 -0
  104. package/dist/job.d.ts.map +1 -0
  105. package/dist/job.js +7 -0
  106. package/dist/lifecycle.d.ts +7 -0
  107. package/dist/lifecycle.d.ts.map +1 -0
  108. package/dist/lifecycle.js +272 -0
  109. package/dist/listing.d.ts +48 -0
  110. package/dist/listing.d.ts.map +1 -0
  111. package/dist/listing.js +139 -0
  112. package/dist/live.d.ts +23 -0
  113. package/dist/live.d.ts.map +1 -0
  114. package/dist/live.js +165 -0
  115. package/dist/locks.d.ts +7 -0
  116. package/dist/locks.d.ts.map +1 -0
  117. package/dist/locks.js +33 -0
  118. package/dist/log.d.ts +1 -0
  119. package/dist/log.d.ts.map +1 -1
  120. package/dist/lost.d.ts +5 -0
  121. package/dist/lost.d.ts.map +1 -0
  122. package/dist/lost.js +50 -0
  123. package/dist/media.d.ts +8 -0
  124. package/dist/media.d.ts.map +1 -0
  125. package/dist/media.js +218 -0
  126. package/dist/memory.d.ts +25 -8
  127. package/dist/memory.d.ts.map +1 -1
  128. package/dist/memory.js +295 -99
  129. package/dist/messages.d.ts +49 -0
  130. package/dist/messages.d.ts.map +1 -0
  131. package/dist/messages.js +148 -0
  132. package/dist/model.d.ts +13 -13
  133. package/dist/model.d.ts.map +1 -1
  134. package/dist/model.js +7 -15
  135. package/dist/models.d.ts +10 -0
  136. package/dist/models.d.ts.map +1 -0
  137. package/dist/models.js +156 -0
  138. package/dist/name.d.ts +4 -0
  139. package/dist/name.d.ts.map +1 -0
  140. package/dist/name.js +122 -0
  141. package/dist/observation.d.ts +22 -4
  142. package/dist/observation.d.ts.map +1 -1
  143. package/dist/observation.js +127 -26
  144. package/dist/open.d.ts +2 -0
  145. package/dist/open.d.ts.map +1 -0
  146. package/dist/open.js +1 -0
  147. package/dist/opened.d.ts +22 -0
  148. package/dist/opened.d.ts.map +1 -0
  149. package/dist/opened.js +107 -0
  150. package/dist/opening.d.ts +4 -0
  151. package/dist/opening.d.ts.map +1 -0
  152. package/dist/opening.js +59 -0
  153. package/dist/outcome.d.ts +75 -5
  154. package/dist/outcome.d.ts.map +1 -1
  155. package/dist/outcome.js +84 -1
  156. package/dist/overlay.d.ts +17 -5
  157. package/dist/overlay.d.ts.map +1 -1
  158. package/dist/overlay.js +168 -190
  159. package/dist/parts.d.ts +11 -0
  160. package/dist/parts.d.ts.map +1 -0
  161. package/dist/parts.js +21 -0
  162. package/dist/paths.d.ts +2 -0
  163. package/dist/paths.d.ts.map +1 -1
  164. package/dist/paths.js +26 -0
  165. package/dist/preparation.d.ts +20 -0
  166. package/dist/preparation.d.ts.map +1 -0
  167. package/dist/preparation.js +233 -0
  168. package/dist/presence.d.ts +52 -0
  169. package/dist/presence.d.ts.map +1 -0
  170. package/dist/presence.js +220 -0
  171. package/dist/queries.d.ts +16 -0
  172. package/dist/queries.d.ts.map +1 -0
  173. package/dist/queries.js +270 -0
  174. package/dist/query.d.ts +51 -181
  175. package/dist/query.d.ts.map +1 -1
  176. package/dist/query.js +3 -461
  177. package/dist/questions.d.ts +34 -0
  178. package/dist/questions.d.ts.map +1 -0
  179. package/dist/questions.js +122 -0
  180. package/dist/queue.d.ts +40 -0
  181. package/dist/queue.d.ts.map +1 -0
  182. package/dist/queue.js +455 -0
  183. package/dist/reach.d.ts +21 -5
  184. package/dist/reach.d.ts.map +1 -1
  185. package/dist/reach.js +305 -80
  186. package/dist/react.d.ts +43 -20
  187. package/dist/react.d.ts.map +1 -1
  188. package/dist/react.js +22 -21
  189. package/dist/read.d.ts +7 -0
  190. package/dist/read.d.ts.map +1 -0
  191. package/dist/read.js +17 -0
  192. package/dist/readiness.d.ts +49 -0
  193. package/dist/readiness.d.ts.map +1 -0
  194. package/dist/readiness.js +27 -0
  195. package/dist/reads.d.ts +37 -0
  196. package/dist/reads.d.ts.map +1 -0
  197. package/dist/reads.js +174 -0
  198. package/dist/recovery.d.ts +26 -0
  199. package/dist/recovery.d.ts.map +1 -0
  200. package/dist/recovery.js +232 -0
  201. package/dist/refresh.d.ts +20 -7
  202. package/dist/refresh.d.ts.map +1 -1
  203. package/dist/refresh.js +155 -59
  204. package/dist/refusal.d.ts +5 -0
  205. package/dist/refusal.d.ts.map +1 -0
  206. package/dist/refusal.js +57 -0
  207. package/dist/replica.d.ts +53 -33
  208. package/dist/replica.d.ts.map +1 -1
  209. package/dist/replica.js +361 -164
  210. package/dist/room-draft.d.ts +58 -12
  211. package/dist/room-draft.d.ts.map +1 -1
  212. package/dist/room-draft.js +270 -90
  213. package/dist/room-drafts.d.ts +24 -0
  214. package/dist/room-drafts.d.ts.map +1 -0
  215. package/dist/room-drafts.js +217 -0
  216. package/dist/rows.d.ts +32 -35
  217. package/dist/rows.d.ts.map +1 -1
  218. package/dist/rows.js +64 -124
  219. package/dist/runtime.d.ts +34 -0
  220. package/dist/runtime.d.ts.map +1 -0
  221. package/dist/runtime.js +1 -0
  222. package/dist/save.d.ts +46 -22
  223. package/dist/save.d.ts.map +1 -1
  224. package/dist/save.js +969 -171
  225. package/dist/saves.d.ts +32 -0
  226. package/dist/saves.d.ts.map +1 -0
  227. package/dist/saves.js +413 -0
  228. package/dist/search.d.ts +15 -54
  229. package/dist/search.d.ts.map +1 -1
  230. package/dist/search.js +10 -121
  231. package/dist/seed.d.ts +25 -0
  232. package/dist/seed.d.ts.map +1 -0
  233. package/dist/seed.js +145 -0
  234. package/dist/shared.d.ts +10 -0
  235. package/dist/shared.d.ts.map +1 -0
  236. package/dist/shared.js +339 -0
  237. package/dist/shown.d.ts +32 -0
  238. package/dist/shown.d.ts.map +1 -0
  239. package/dist/shown.js +290 -0
  240. package/dist/socket/admission.d.ts +7 -0
  241. package/dist/socket/admission.d.ts.map +1 -0
  242. package/dist/socket/admission.js +39 -0
  243. package/dist/socket/answers.d.ts +6 -0
  244. package/dist/socket/answers.d.ts.map +1 -0
  245. package/dist/socket/answers.js +20 -0
  246. package/dist/socket/lanes.d.ts +20 -0
  247. package/dist/socket/lanes.d.ts.map +1 -0
  248. package/dist/socket/lanes.js +77 -0
  249. package/dist/socket/reads.d.ts +10 -0
  250. package/dist/socket/reads.d.ts.map +1 -0
  251. package/dist/socket/reads.js +31 -0
  252. package/dist/socket/session.d.ts +38 -0
  253. package/dist/socket/session.d.ts.map +1 -0
  254. package/dist/socket/session.js +23 -0
  255. package/dist/socket.d.ts +67 -0
  256. package/dist/socket.d.ts.map +1 -0
  257. package/dist/socket.js +170 -0
  258. package/dist/source.d.ts +61 -0
  259. package/dist/source.d.ts.map +1 -0
  260. package/dist/source.js +82 -0
  261. package/dist/status.d.ts +7 -4
  262. package/dist/status.d.ts.map +1 -1
  263. package/dist/status.js +3 -15
  264. package/dist/store/installs.d.ts +30 -0
  265. package/dist/store/installs.d.ts.map +1 -0
  266. package/dist/store/installs.js +34 -0
  267. package/dist/store/readiness.d.ts +10 -0
  268. package/dist/store/readiness.d.ts.map +1 -0
  269. package/dist/store/readiness.js +52 -0
  270. package/dist/store/records.d.ts +210 -0
  271. package/dist/store/records.d.ts.map +1 -0
  272. package/dist/store/records.js +428 -0
  273. package/dist/store/room-held.d.ts +8 -0
  274. package/dist/store/room-held.d.ts.map +1 -0
  275. package/dist/store/room-held.js +17 -0
  276. package/dist/store/space.d.ts +11 -0
  277. package/dist/store/space.d.ts.map +1 -0
  278. package/dist/store/space.js +41 -0
  279. package/dist/store/watchers.d.ts +17 -0
  280. package/dist/store/watchers.d.ts.map +1 -0
  281. package/dist/store/watchers.js +56 -0
  282. package/dist/store/writes.d.ts +24 -0
  283. package/dist/store/writes.d.ts.map +1 -0
  284. package/dist/store/writes.js +125 -0
  285. package/dist/store.d.ts +109 -94
  286. package/dist/store.d.ts.map +1 -1
  287. package/dist/store.js +161 -384
  288. package/dist/stored.d.ts +156 -0
  289. package/dist/stored.d.ts.map +1 -0
  290. package/dist/stored.js +649 -0
  291. package/dist/surface.d.ts +88 -0
  292. package/dist/surface.d.ts.map +1 -0
  293. package/dist/surface.js +223 -0
  294. package/dist/sync.d.ts +19 -0
  295. package/dist/sync.d.ts.map +1 -0
  296. package/dist/sync.js +521 -0
  297. package/dist/tables.d.ts +412 -0
  298. package/dist/tables.d.ts.map +1 -0
  299. package/dist/tables.js +737 -0
  300. package/dist/tallies.d.ts +18 -0
  301. package/dist/tallies.d.ts.map +1 -0
  302. package/dist/tallies.js +129 -0
  303. package/dist/transfer.d.ts +0 -5
  304. package/dist/transfer.d.ts.map +1 -1
  305. package/dist/turn.d.ts +9 -0
  306. package/dist/turn.d.ts.map +1 -0
  307. package/dist/turn.js +75 -0
  308. package/dist/validation.d.ts +29 -0
  309. package/dist/validation.d.ts.map +1 -0
  310. package/dist/validation.js +104 -0
  311. package/dist/windows.d.ts +11 -0
  312. package/dist/windows.d.ts.map +1 -0
  313. package/dist/windows.js +16 -0
  314. package/dist/wire.d.ts +189 -37
  315. package/dist/wire.d.ts.map +1 -1
  316. package/dist/wire.js +77 -33
  317. package/package.json +27 -15
  318. package/AGENTS.md +0 -244
  319. package/dist/attachment.d.ts +0 -3
  320. package/dist/attachment.d.ts.map +0 -1
  321. package/dist/attachment.js +0 -8
  322. package/dist/read-side.d.ts +0 -18
  323. package/dist/read-side.d.ts.map +0 -1
  324. package/dist/read-side.js +0 -433
package/dist/reach.js CHANGED
@@ -1,30 +1,39 @@
1
+ import { selected } from './collection.js';
1
2
  import { unheldView } from './conversation.js';
2
3
  import { modelTypes, NO_MODEL } from './model.js';
3
- import { applied, observing } from './observation.js';
4
+ import { changeOf, digestApplied, digestOf, observing, } from './observation.js';
5
+ import { runtimeError, uncaught } from './failure.js';
6
+ import { failure, lockedRoom, ROOM_LOCKED, undeclared, UNREADABLE, } from './outcome.js';
4
7
  import { beneath } from './paths.js';
5
- import { reconciled } from './read-side.js';
6
- import { moveTarget, readParts } from './room-draft.js';
8
+ import { moveTarget, readParts, staleWrite, } from './room-draft.js';
7
9
  import { documentKey } from './rows.js';
8
10
  const UNHELD_TYPES = { collection: modelTypes(NO_MODEL), typedSelection: null };
9
- const UNDECLARED = { kind: 'undeclared' };
10
- function undeclared() {
11
- return Promise.resolve(UNDECLARED);
11
+ function unconversed(name) {
12
+ return () => Promise.resolve(undeclared(name));
12
13
  }
13
14
  const NO_CONVERSATION = {
14
15
  list: () => Promise.resolve([]),
15
16
  read: (conversation) => Promise.resolve(unheldView(conversation)),
16
- create: undeclared,
17
- send: undeclared,
18
- answer: undeclared,
19
- interrupt: undeclared,
20
- kill: undeclared,
21
- cancel: undeclared,
22
- delete: undeclared,
17
+ create: unconversed('conversations/create'),
18
+ send: unconversed('conversations/send'),
19
+ answer: unconversed('conversations/interaction/answer'),
20
+ interrupt: unconversed('conversations/interrupt'),
21
+ kill: unconversed('conversations/kill'),
22
+ delete: unconversed('conversations/delete'),
23
23
  };
24
24
  const NO_CHAT_DRAFT = {
25
25
  write: () => Promise.resolve(),
26
+ prepend: () => Promise.resolve(),
26
27
  discard: () => Promise.resolve(),
27
28
  };
29
+ function areasOf(reach) {
30
+ return reach.areas ?? [];
31
+ }
32
+ function fenced(reach, room, path) {
33
+ return areasOf(reach).some((area) => area.room === room &&
34
+ beneath(area.path, path) &&
35
+ !area.open.some((open) => beneath(open, path)));
36
+ }
28
37
  export function holds(reach, room) {
29
38
  return (reach === null ||
30
39
  reach.rooms.includes(room) ||
@@ -37,16 +46,17 @@ export function governs(reach, room) {
37
46
  if (wholly(reach, room.locator)) {
38
47
  return { collection: true, selection: room.typedSelection !== null };
39
48
  }
40
- const selected = (path) => room.typedSelection?.roots.some((root) => beneath(root, path)) ?? false;
49
+ const within = (path) => selected({ selection: room.typedSelection }, path);
41
50
  const paths = reach.documents
42
51
  .filter((document) => document.room === room.locator)
43
52
  .map(({ path }) => path);
44
- return { collection: paths.some((path) => !selected(path)), selection: paths.some(selected) };
53
+ return { collection: paths.some((path) => !within(path)), selection: paths.some(within) };
45
54
  }
46
55
  function covers(reach, room, path) {
47
56
  return (reach === null ||
48
- reach.rooms.includes(room) ||
49
- reach.documents.some((document) => document.room === room && document.path === path));
57
+ (!fenced(reach, room, path) &&
58
+ (reach.rooms.includes(room) ||
59
+ reach.documents.some((document) => document.room === room && document.path === path))));
50
60
  }
51
61
  function conversing(reach) {
52
62
  return reach === null || reach.conversations;
@@ -59,6 +69,9 @@ export function planReach(reach) {
59
69
  documents: [
60
70
  ...new Set(reach.documents.map(({ room, path }) => documentKey(room, path))),
61
71
  ].sort(),
72
+ areas: areasOf(reach)
73
+ .map(({ room, path, open }) => ({ room, path, open: [...new Set(open)].sort() }))
74
+ .sort((left, right) => documentKey(left.room, left.path) < documentKey(right.room, right.path) ? -1 : 1),
62
75
  };
63
76
  }
64
77
  function roomsWithin(reach, rooms) {
@@ -74,7 +87,7 @@ function typesWithin(reach, room, types) {
74
87
  };
75
88
  }
76
89
  function moves(reach, room, move) {
77
- return move === undefined || covers(reach, room, moveTarget(move));
90
+ return move === undefined || covers(reach, move.room ?? room, moveTarget(move));
78
91
  }
79
92
  function draftWithin(reach, draft) {
80
93
  return covers(reach, draft.room, draft.path) && moves(reach, draft.room, draft.parts.move);
@@ -88,7 +101,7 @@ function shownDraft(reach, draft) {
88
101
  function writeWithin(reach, write) {
89
102
  return write.outcome === 'written'
90
103
  ? { outcome: 'written', roomDraft: shownDraft(reach, write.roomDraft) }
91
- : { outcome: 'stale', current: shownDraft(reach, write.current) };
104
+ : staleWrite(shownDraft(reach, write.current));
92
105
  }
93
106
  function savedWithin(reach, room, result) {
94
107
  if (reach === null || result.outcome === 'saved')
@@ -108,136 +121,348 @@ function statusWithin(reach, status) {
108
121
  return {
109
122
  ...status,
110
123
  attentionRequired: status.attentionRequired.filter((entry) => covers(reach, entry.room, entry.path)),
124
+ unsent: status.unsent.filter((change) => covers(reach, change.room, change.path)),
111
125
  };
112
126
  }
113
127
  function queueWithin(reach, room, entries) {
114
- return entries.filter(({ batch }) => batch.changes.every((change) => covers(reach, room, change.path) &&
115
- (change.kind !== 'move' || covers(reach, room, change.to))));
128
+ return entries
129
+ .filter(({ batch }) => batch.changes.every((change) => covers(reach, room, change.path) &&
130
+ (change.kind !== 'move' || covers(reach, room, change.to))))
131
+ .map((entry) => {
132
+ const { between, ...batch } = entry.batch;
133
+ if (between === undefined)
134
+ return entry;
135
+ return wholly(reach, between.source.room) && wholly(reach, between.destination.room)
136
+ ? entry
137
+ : { ...entry, batch };
138
+ });
116
139
  }
117
140
  function unreached(room) {
118
- return new Error(`No Local Replica for ${room}`);
141
+ return runtimeError('unknown-room', `Unknown Room ${room}`);
142
+ }
143
+ function lockedError(room) {
144
+ return runtimeError(ROOM_LOCKED, `${room} is locked until House confirms its access`, true);
145
+ }
146
+ function deviceUnreached() {
147
+ return runtimeError('device-unreached', 'Only the panel reaches this device');
119
148
  }
120
- export function narrowed(runtime, given) {
149
+ const ATTACH_REQUIRED = 'attach-required';
150
+ function attachRequired() {
151
+ return runtimeError(ATTACH_REQUIRED, 'App code takes a file in with binaryFile.attach');
152
+ }
153
+ function carriesFile(parts) {
154
+ return parts !== null && typeof parts === 'object' && Object.hasOwn(parts, 'file');
155
+ }
156
+ export function narrowed(runtime, given, port) {
121
157
  const { md, watch } = runtime;
122
158
  let reach = given;
123
159
  const open = new Set();
124
- function following(begin) {
160
+ function following(begin, locking = false) {
125
161
  let stop = begin();
126
162
  const restart = () => {
127
163
  stop();
128
164
  stop = begin();
129
165
  };
130
166
  open.add(restart);
167
+ const unwatch = locking ? runtime.watchLocks(restart) : () => { };
131
168
  return () => {
132
169
  open.delete(restart);
170
+ unwatch();
171
+ stop();
172
+ };
173
+ }
174
+ const unlocking = (rooms, locked) => {
175
+ const held = (rooms ?? []).filter((room) => locked.includes(room));
176
+ return held.length === 0 ? null : { pending: held.map((room) => ({ room, awaits: 'unlock' })) };
177
+ };
178
+ const unlocked = (entries, locked) => entries.filter((entry) => !locked.includes(entry.room));
179
+ const intoLocked = async (held) => {
180
+ for (const move of held) {
181
+ if (move?.room !== undefined && (await runtime.locked(move.room)))
182
+ return true;
183
+ }
184
+ return false;
185
+ };
186
+ function ordered(deliver) {
187
+ let open = true;
188
+ let shown = Promise.resolve();
189
+ return {
190
+ push(making) {
191
+ shown = shown.then(() => making.then((value) => {
192
+ if (open)
193
+ deliver(value);
194
+ }, uncaught), uncaught);
195
+ },
196
+ stop() {
197
+ open = false;
198
+ },
199
+ };
200
+ }
201
+ function unlockedWatch(topic, input, deliver, fail, within) {
202
+ const shown = ordered(deliver);
203
+ const stop = watch(topic, input, (message) => {
204
+ shown.push(runtime.lockedRooms().then((locked) => within(message, locked)));
205
+ }, fail);
206
+ return () => {
207
+ shown.stop();
208
+ stop();
209
+ };
210
+ }
211
+ function lockedFirst(room, start, shut) {
212
+ let open = true;
213
+ let stop = () => { };
214
+ void (async () => {
215
+ const closed = !holds(reach, room) || (await runtime.locked(room));
216
+ if (!open)
217
+ return;
218
+ if (closed)
219
+ shut();
220
+ else
221
+ stop = start();
222
+ })();
223
+ return () => {
224
+ open = false;
133
225
  stop();
134
226
  };
135
227
  }
136
- const within = (topic, input, deliver) => {
228
+ const within = (topic, input, deliver, fail) => {
229
+ if (topic === 'read' && reach !== null) {
230
+ fail(deviceUnreached());
231
+ return () => { };
232
+ }
137
233
  if (topic === 'rooms') {
138
- return following(() => watch(topic, input, (rooms) => deliver(roomsWithin(reach, rooms))));
234
+ return following(() => watch(topic, input, (rooms) => deliver(roomsWithin(reach, rooms)), fail));
235
+ }
236
+ if (topic === 'readiness') {
237
+ return following(() => runtime.watchReadiness(port, reach, deliver));
139
238
  }
140
239
  if (topic === 'sync-status') {
141
- return following(() => watch(topic, input, (status) => deliver(statusWithin(reach, status))));
240
+ return following(() => unlockedWatch(topic, input, deliver, fail, (status, locked) => {
241
+ const shown = statusWithin(reach, status);
242
+ return { ...shown, attentionRequired: unlocked(shown.attentionRequired, locked) };
243
+ }), true);
142
244
  }
143
245
  if (topic === 'room-drafts') {
144
- return following(() => watch(topic, input, (drafts) => deliver(draftsWithin(reach, drafts))));
246
+ return following(() => unlockedWatch(topic, input, deliver, fail, (drafts, locked) => unlocked(draftsWithin(reach, drafts), locked)), true);
145
247
  }
146
248
  if (topic === 'queue') {
147
249
  const room = input[0];
148
- return following(() => {
149
- if (!holds(reach, room)) {
150
- deliver([]);
151
- return () => { };
152
- }
153
- return watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)));
154
- });
250
+ return following(() => lockedFirst(room, () => watch(topic, input, (entries) => deliver(queueWithin(reach, room, entries)), fail), () => deliver([])), true);
155
251
  }
156
252
  if (topic === 'query') {
157
- const plan = runtime.plan(input[0], reach);
253
+ const planning = runtime.plan(input[0], reach);
158
254
  let held = null;
159
255
  return following(() => {
160
- let first = true;
161
- return runtime.watchPlan({ ...plan, reach: planReach(reach) }, (message) => {
162
- if (!first) {
163
- held = applied(held, message);
164
- deliver(message);
256
+ let open = true;
257
+ let stop = () => { };
258
+ void (async () => {
259
+ const plan = await planning;
260
+ const locked = await runtime.lockedRooms();
261
+ if (!open)
165
262
  return;
166
- }
167
- first = false;
168
- if (held === null) {
169
- held = message;
170
- deliver(message);
263
+ const pending = unlocking(plan.rooms, locked);
264
+ if (pending !== null) {
265
+ const answer = { result: pending, keys: [] };
266
+ if (held === null || changeOf(held, answer) !== null)
267
+ deliver(answer);
268
+ held = digestOf(answer);
171
269
  return;
172
270
  }
173
- const next = reconciled(held, message);
174
- if (next === null)
175
- return;
176
- held = next.keyed;
177
- deliver(next.change);
271
+ let first = true;
272
+ const heard = (message) => {
273
+ if (!first) {
274
+ held = digestApplied(held, message);
275
+ deliver(message);
276
+ return;
277
+ }
278
+ first = false;
279
+ const change = held === null ? message : changeOf(held, message);
280
+ held = digestOf(message);
281
+ if (change !== null)
282
+ deliver(change);
283
+ };
284
+ const current = { ...plan, reach: planReach(reach), locked };
285
+ stop = runtime.watchPlan(current, (message) => {
286
+ if (open)
287
+ heard(message);
288
+ }, (error) => {
289
+ if (open)
290
+ fail(error);
291
+ });
292
+ })().catch((error) => {
293
+ if (open)
294
+ fail(error);
178
295
  });
179
- });
296
+ return () => {
297
+ open = false;
298
+ stop();
299
+ };
300
+ }, true);
180
301
  }
181
302
  if (topic === 'conversation') {
182
303
  return following(() => {
183
304
  if (conversing(reach))
184
- return watch(topic, input, deliver);
305
+ return watch(topic, input, deliver, fail);
185
306
  deliver(unheldView(input[0]));
186
307
  return () => { };
187
308
  });
188
309
  }
189
- if (topic === 'conversations') {
310
+ if (topic === 'conversations' || topic === 'agents') {
190
311
  return following(() => {
191
312
  if (conversing(reach))
192
- return watch(topic, input, deliver);
313
+ return watch(topic, input, deliver, fail);
193
314
  deliver([]);
194
315
  return () => { };
195
316
  });
196
317
  }
197
- return watch(topic, input, deliver);
318
+ if (topic === 'figures' || topic === 'holdings') {
319
+ if (reach === null)
320
+ return watch(topic, input, deliver, fail);
321
+ fail(deviceUnreached());
322
+ return () => { };
323
+ }
324
+ return watch(topic, input, deliver, fail);
198
325
  };
326
+ const files = new Map();
327
+ let handed = 0;
328
+ async function hand(reading) {
329
+ const answer = await reading;
330
+ if (answer.kind !== 'binary')
331
+ return answer;
332
+ handed += 1;
333
+ const file = String(handed);
334
+ files.set(file, answer.file);
335
+ return { ...answer, file };
336
+ }
199
337
  const conversation = () => (conversing(reach) ? md.conversation : NO_CONVERSATION);
200
338
  const chatDraft = () => (conversing(reach) ? md.chatDraft : NO_CHAT_DRAFT);
201
339
  const view = {
202
340
  ...md,
203
- rooms: () => roomsWithin(reach, md.rooms()),
204
- query: ((input) => runtime.query(runtime.plan(input, reach))),
341
+ rooms: () => md.rooms().then((rooms) => roomsWithin(reach, rooms)),
342
+ query: (async (input) => {
343
+ const plan = await runtime.plan(input, reach);
344
+ const locked = await runtime.lockedRooms();
345
+ return unlocking(plan.rooms, locked) ?? runtime.query({ ...plan, locked });
346
+ }),
205
347
  search: (input) => runtime.search(input, reach),
206
- types(room) {
348
+ async types(room) {
349
+ if (holds(reach, room) && (await runtime.locked(room)))
350
+ throw lockedError(room);
207
351
  if (wholly(reach, room))
208
352
  return md.types(room);
209
353
  if (!holds(reach, room))
210
354
  return structuredClone(UNHELD_TYPES);
211
- const listed = md.rooms().find(({ locator }) => locator === room);
212
- return typesWithin(reach, listed, md.types(room));
355
+ return typesWithin(reach, await runtime.room(room), await md.types(room));
213
356
  },
214
357
  async save(room, roomDrafts, writtenBy) {
215
358
  if (!holds(reach, room))
216
359
  throw unreached(room);
217
- const outside = roomDrafts.find(({ path }) => !covers(reach, room, path) ||
218
- !moves(reach, room, md.roomDraft.read(room, path)?.parts.move));
219
- if (outside !== undefined)
220
- return { outcome: 'refused', rule: 'stale', file: outside.path };
360
+ if (await runtime.locked(room)) {
361
+ return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
362
+ }
363
+ const held = (await Promise.all(roomDrafts.map(({ path }) => md.roomDraft.read(room, path)))).map((draft) => draft?.parts.move);
364
+ const outside = roomDrafts.find(({ path }, at) => !covers(reach, room, path) || !moves(reach, room, held[at]));
365
+ if (outside !== undefined) {
366
+ return { outcome: 'refused', code: 'stale', retryable: false, file: outside.path };
367
+ }
368
+ if (await intoLocked(held))
369
+ return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
221
370
  return savedWithin(reach, room, await md.save(room, roomDrafts, writtenBy));
222
371
  },
223
- history: (room, path, query) => covers(reach, room, path)
224
- ? md.history(room, path, query)
225
- : Promise.resolve({ kind: 'room-not-readable', locator: room }),
226
- reached: (room, roomVersion, path) => (path === undefined ? wholly(reach, room) : covers(reach, room, path)) &&
227
- md.reached(room, roomVersion, path),
372
+ async saveParts(room, parts, writtenBy) {
373
+ if (!holds(reach, room))
374
+ throw unreached(room);
375
+ const filed = reach === null ? undefined : parts.find(({ parts: one }) => carriesFile(one));
376
+ if (filed !== undefined) {
377
+ return { outcome: 'refused', code: ATTACH_REQUIRED, retryable: false, file: filed.path };
378
+ }
379
+ if (await runtime.locked(room)) {
380
+ return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
381
+ }
382
+ const held = parts.map(({ path, parts: one }) => readParts(one, path).move);
383
+ if (parts.some(({ path }, at) => !covers(reach, room, path) || !moves(reach, room, held[at]))) {
384
+ throw unreached(room);
385
+ }
386
+ if (await intoLocked(held))
387
+ return { outcome: 'refused', code: ROOM_LOCKED, retryable: true };
388
+ return savedWithin(reach, room, await md.saveParts(room, parts, writtenBy));
389
+ },
390
+ async resolve(room, path, destination) {
391
+ const at = await runtime.located(room, path, destination);
392
+ return at !== null && !covers(reach, at.room, at.path)
393
+ ? UNREADABLE
394
+ : md.resolve(room, path, destination);
395
+ },
396
+ history: async (room, path, query) => !covers(reach, room, path)
397
+ ? failure({ kind: 'room-not-readable', locator: room })
398
+ : (await runtime.locked(room))
399
+ ? lockedRoom(room)
400
+ : md.history(room, path, query),
401
+ binaryFile: {
402
+ read: async (room, path, revision) => !covers(reach, room, path)
403
+ ? failure({ kind: 'room-not-readable', locator: room })
404
+ : (await runtime.locked(room))
405
+ ? lockedRoom(room)
406
+ : hand(md.binaryFile.read(room, path, revision)),
407
+ link: async (room, path, revision) => !covers(reach, room, path)
408
+ ? failure({ kind: 'room-not-readable', locator: room })
409
+ : (await runtime.locked(room))
410
+ ? lockedRoom(room)
411
+ : md.binaryFile.link(room, path, revision),
412
+ show: async (room, path, revision) => !covers(reach, room, path)
413
+ ? failure({ kind: 'room-not-readable', locator: room })
414
+ : (await runtime.locked(room))
415
+ ? lockedRoom(room)
416
+ : hand(md.binaryFile.show(room, path, revision)),
417
+ attach: async (room, file) => !wholly(reach, room)
418
+ ? failure({ kind: 'room-not-readable', locator: room })
419
+ : (await runtime.locked(room))
420
+ ? lockedRoom(room)
421
+ : md.binaryFile.attach(room, file),
422
+ async part(file, part) {
423
+ const key = files.get(file);
424
+ if (key === undefined)
425
+ return null;
426
+ const bytes = await md.binaryFile.part(key, part);
427
+ if (bytes === null)
428
+ files.delete(file);
429
+ return bytes;
430
+ },
431
+ },
432
+ reached: async (room, roomVersion, path) => (path === undefined ? wholly(reach, room) : covers(reach, room, path)) &&
433
+ !(await runtime.locked(room)) &&
434
+ (await md.reached(room, roomVersion, path)),
228
435
  log: () => (reach === null ? md.log() : ''),
436
+ cleanUp: () => (reach === null ? md.cleanUp() : Promise.reject(deviceUnreached())),
437
+ unsent: () => (reach === null ? md.unsent() : Promise.reject(deviceUnreached())),
438
+ reset: () => (reach === null ? md.reset() : Promise.reject(deviceUnreached())),
439
+ readAgain: () => (reach === null ? md.readAgain() : Promise.reject(deviceUnreached())),
229
440
  roomDraft: {
230
- list: () => md.roomDraft.list().then((drafts) => draftsWithin(reach, drafts)),
231
- read: (room, path) => covers(reach, room, path) ? shownDraft(reach, md.roomDraft.read(room, path)) : null,
232
- async write(room, path, revision, parts) {
233
- if (!covers(reach, room, path) || !moves(reach, room, readParts(parts).move)) {
441
+ list: async () => unlocked(draftsWithin(reach, await md.roomDraft.list()), await runtime.lockedRooms()),
442
+ async read(room, path) {
443
+ if (!covers(reach, room, path))
444
+ return null;
445
+ if (await runtime.locked(room))
446
+ throw lockedError(room);
447
+ return shownDraft(reach, await md.roomDraft.read(room, path));
448
+ },
449
+ async write(room, path, revision, parts, next) {
450
+ if (reach !== null && carriesFile(parts))
451
+ throw attachRequired();
452
+ const move = readParts(parts, path).move;
453
+ if (!covers(reach, room, path) || !moves(reach, room, move))
234
454
  throw unreached(room);
235
- }
236
- return writeWithin(reach, await md.roomDraft.write(room, path, revision, parts));
455
+ if (await runtime.locked(room))
456
+ throw lockedError(room);
457
+ if (await intoLocked([move]))
458
+ throw lockedError(move.room);
459
+ return writeWithin(reach, await md.roomDraft.write(room, path, revision, parts, next));
237
460
  },
238
461
  async discard(room, path, revision) {
239
462
  if (!covers(reach, room, path))
240
- return { outcome: 'stale', current: null };
463
+ return staleWrite(null);
464
+ if (await runtime.locked(room))
465
+ throw lockedError(room);
241
466
  return writeWithin(reach, await md.roomDraft.discard(room, path, revision));
242
467
  },
243
468
  },
@@ -245,15 +470,15 @@ export function narrowed(runtime, given) {
245
470
  list: () => conversation().list(),
246
471
  read: (id, options) => conversation().read(id, options),
247
472
  create: (input) => conversation().create(input),
248
- send: (id) => conversation().send(id),
473
+ send: (id, operation, draft) => conversation().send(id, operation, draft),
249
474
  answer: (id, answer) => conversation().answer(id, answer),
250
475
  interrupt: (id) => conversation().interrupt(id),
251
476
  kill: (id) => conversation().kill(id),
252
- cancel: (id, turn) => conversation().cancel(id, turn),
253
477
  delete: (id) => conversation().delete(id),
254
478
  },
255
479
  chatDraft: {
256
- write: (id, draft) => chatDraft().write(id, draft),
480
+ write: (id, draft, revision) => chatDraft().write(id, draft, revision),
481
+ prepend: (id, draft) => chatDraft().prepend(id, draft),
257
482
  discard: (id) => chatDraft().discard(id),
258
483
  },
259
484
  observe: observing(within),
package/dist/react.d.ts CHANGED
@@ -1,32 +1,55 @@
1
+ import type { DocumentQuery, GroupQuery } from '@agentshouse/mdmodel';
1
2
  import type { MdRuntimeClient } from './client.js';
2
- import type { AppRoom, ConnectionRefusal, SaveResult } from './connection.js';
3
- import type { ServiceMode } from './adapter.js';
4
- import type { ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
3
+ import type { AppRoom } from './listing.js';
4
+ import type { ConnectionRefusal } from './socket.js';
5
+ import type { SavedRoomDraft, SaveResult } from './saves.js';
6
+ import type { Member, ServiceMode } from './adapter.js';
7
+ import type { ConversationAgent, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
8
+ import { type RuntimeError } from './failure.js';
9
+ import type { FiguresResult } from './figures.js';
10
+ import type { Holdings } from './holdings.js';
11
+ import type { Expecting } from './expectation.js';
5
12
  import type { QueueEntry } from './outcome.js';
6
- import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult } from './query.js';
13
+ import type { DocumentResult, GroupResult, PendingResult } from './query.js';
14
+ import type { Readiness } from './readiness.js';
7
15
  import type { RoomDraft, RoomDraftParts } from './room-draft.js';
8
16
  import type { SyncStatus } from './status.js';
9
17
  type Client = MdRuntimeClient | null;
10
- export declare function useObserve(client: Client, topic: 'deployment-facts'): unknown;
11
- export declare function useObserve(client: Client, topic: 'rooms'): readonly AppRoom[] | undefined;
12
- export declare function useObserve(client: Client, topic: 'connection-refusal'): ConnectionRefusal | null | undefined;
13
- export declare function useObserve(client: Client, topic: 'storage-loss'): string | null | undefined;
14
- export declare function useObserve(client: Client, topic: 'sync-status'): SyncStatus | undefined;
15
- export declare function useObserve(client: Client, topic: 'service-mode'): ServiceMode | undefined;
16
- export declare function useObserve(client: Client, topic: 'query', query: DocumentQuery): DocumentResult | undefined;
17
- export declare function useObserve(client: Client, topic: 'query', query: GroupQuery): GroupResult | undefined;
18
- export declare function useObserve(client: Client, topic: 'queue', locator: string): readonly QueueEntry[] | undefined;
19
- export declare function useObserve(client: Client, topic: 'room-drafts'): readonly RoomDraft[] | undefined;
20
- export declare function useObserve(client: Client, topic: 'presentation'): unknown;
21
- export declare function useObserve(client: Client, topic: 'conversation', conversation: string, options: ConversationOptions): ConversationView | undefined;
22
- export declare function useObserve(client: Client, topic: 'conversations'): readonly ConversationEntry[] | undefined;
18
+ export type Observed<T> = {
19
+ readonly state: 'loading';
20
+ } | {
21
+ readonly state: 'ready';
22
+ readonly value: T;
23
+ };
24
+ export declare function useObserve(client: Client, topic: 'deployment-facts'): Observed<unknown>;
25
+ export declare function useObserve(client: Client, topic: 'rooms'): Observed<readonly AppRoom[]>;
26
+ export declare function useObserve(client: Client, topic: 'readiness'): Observed<Readiness>;
27
+ export declare function useObserve(client: Client, topic: 'connection-refusal'): Observed<ConnectionRefusal | null>;
28
+ export declare function useObserve(client: Client, topic: 'storage-loss'): Observed<string | null>;
29
+ export declare function useObserve(client: Client, topic: 'sync-status'): Observed<SyncStatus>;
30
+ export declare function useObserve(client: Client, topic: 'service-mode'): Observed<ServiceMode>;
31
+ export declare function useObserve(client: Client, topic: 'member'): Observed<Member | null>;
32
+ export declare function useObserve(client: Client, topic: 'authority-changes'): Observed<number>;
33
+ export declare function useObserve(client: Client, topic: 'query', query: DocumentQuery): Observed<DocumentResult | PendingResult>;
34
+ export declare function useObserve(client: Client, topic: 'query', query: GroupQuery): Observed<GroupResult | PendingResult>;
35
+ export declare function useObserve(client: Client, topic: 'queue', locator: string): Observed<readonly QueueEntry[]>;
36
+ export declare function useObserve(client: Client, topic: 'room-drafts'): Observed<readonly RoomDraft[]>;
37
+ export declare function useObserve(client: Client, topic: 'presentation'): Observed<unknown>;
38
+ export declare function useObserve(client: Client, topic: 'conversation', conversation: string, options: ConversationOptions): Observed<ConversationView>;
39
+ export declare function useObserve(client: Client, topic: 'conversations'): Observed<readonly ConversationEntry[]>;
40
+ export declare function useObserve(client: Client, topic: 'agents'): Observed<readonly ConversationAgent[]>;
41
+ export declare function useObserve(client: Client, topic: 'figures'): Observed<FiguresResult>;
42
+ export declare function useObserve(client: Client, topic: 'holdings'): Observed<Holdings>;
43
+ export declare function useReading<E extends {
44
+ readonly key: string;
45
+ }>(store: Pick<Expecting<E>, 'reads' | 'heard' | 'left'>, asks: (one: E) => boolean, shown: ((one: E) => boolean) | null): void;
23
46
  export type Saving = {
24
47
  readonly busy: boolean;
25
48
  readonly outcome: SaveResult | null;
26
- readonly failure: Error | null;
27
- save(room: string, roomDrafts: ReadonlyMap<string, RoomDraftParts>): Promise<SaveResult>;
49
+ readonly failure: RuntimeError | null;
50
+ save(room: string, parts: ReadonlyMap<string, RoomDraftParts>): Promise<SaveResult>;
51
+ saveWritten(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;
28
52
  };
29
- export declare function saveRoomDrafts(client: MdRuntimeClient, room: string, roomDrafts: ReadonlyMap<string, RoomDraftParts>): Promise<SaveResult>;
30
53
  export declare function useSave(client: MdRuntimeClient): Saving;
31
54
  export {};
32
55
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}