@agentshouse/mdruntime 0.1.0-c4ca57eefb98a → 0.1.0-c4d7cf2ec26a6

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