@agentshouse/mdruntime 0.1.0-c05b32a1b6587 → 0.1.0-c0bed82db8d73

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 (226) hide show
  1. package/AGENTS.md +289 -279
  2. package/README.md +16 -14
  3. package/dist/adapter.d.ts +98 -34
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/attached-model.d.ts +4 -1
  6. package/dist/attached-model.d.ts.map +1 -1
  7. package/dist/attached-model.js +13 -3
  8. package/dist/binary.d.ts +0 -5
  9. package/dist/binary.d.ts.map +1 -1
  10. package/dist/binary.js +1 -1
  11. package/dist/bootstrap.d.ts +27 -8
  12. package/dist/bootstrap.d.ts.map +1 -1
  13. package/dist/bootstrap.js +155 -63
  14. package/dist/chain.d.ts +11 -0
  15. package/dist/chain.d.ts.map +1 -0
  16. package/dist/chain.js +64 -0
  17. package/dist/change-set.d.ts +9 -14
  18. package/dist/change-set.d.ts.map +1 -1
  19. package/dist/change-set.js +11 -63
  20. package/dist/change.d.ts +31 -1
  21. package/dist/change.d.ts.map +1 -1
  22. package/dist/change.js +10 -1
  23. package/dist/client.d.ts +24 -12
  24. package/dist/client.d.ts.map +1 -1
  25. package/dist/client.js +49 -9
  26. package/dist/collection.d.ts +7 -6
  27. package/dist/collection.d.ts.map +1 -1
  28. package/dist/collection.js +31 -77
  29. package/dist/compile.d.ts +16 -0
  30. package/dist/compile.d.ts.map +1 -0
  31. package/dist/compile.js +721 -0
  32. package/dist/connection.d.ts +42 -15
  33. package/dist/connection.d.ts.map +1 -1
  34. package/dist/connection.js +3336 -728
  35. package/dist/conversation.d.ts +30 -9
  36. package/dist/conversation.d.ts.map +1 -1
  37. package/dist/conversation.js +546 -181
  38. package/dist/digest.d.ts +7 -0
  39. package/dist/digest.d.ts.map +1 -0
  40. package/dist/digest.js +113 -0
  41. package/dist/durability.d.ts +5 -1
  42. package/dist/durability.d.ts.map +1 -1
  43. package/dist/durability.js +5 -0
  44. package/dist/entry.d.ts +5 -3
  45. package/dist/entry.d.ts.map +1 -1
  46. package/dist/entry.js +18 -23
  47. package/dist/fence.d.ts +6 -0
  48. package/dist/fence.d.ts.map +1 -0
  49. package/dist/fence.js +10 -0
  50. package/dist/file.d.ts +2 -10
  51. package/dist/file.d.ts.map +1 -1
  52. package/dist/file.js +3 -120
  53. package/dist/fulltext.d.ts +27 -0
  54. package/dist/fulltext.d.ts.map +1 -0
  55. package/dist/fulltext.js +368 -0
  56. package/dist/host.d.ts +14 -2
  57. package/dist/host.d.ts.map +1 -1
  58. package/dist/host.js +124 -14
  59. package/dist/identity.d.ts +1 -0
  60. package/dist/identity.d.ts.map +1 -1
  61. package/dist/identity.js +3 -0
  62. package/dist/index.d.ts +15 -9
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +5 -0
  65. package/dist/live.d.ts +22 -0
  66. package/dist/live.d.ts.map +1 -0
  67. package/dist/live.js +123 -0
  68. package/dist/memory.d.ts +9 -2
  69. package/dist/memory.d.ts.map +1 -1
  70. package/dist/memory.js +52 -20
  71. package/dist/messages.d.ts +28 -0
  72. package/dist/messages.d.ts.map +1 -0
  73. package/dist/messages.js +90 -0
  74. package/dist/model.d.ts +4 -2
  75. package/dist/model.d.ts.map +1 -1
  76. package/dist/model.js +10 -1
  77. package/dist/name.d.ts +4 -0
  78. package/dist/name.d.ts.map +1 -0
  79. package/dist/name.js +122 -0
  80. package/dist/observation.d.ts +19 -2
  81. package/dist/observation.d.ts.map +1 -1
  82. package/dist/observation.js +113 -12
  83. package/dist/opened.d.ts +22 -0
  84. package/dist/opened.d.ts.map +1 -0
  85. package/dist/opened.js +107 -0
  86. package/dist/outcome.d.ts +38 -4
  87. package/dist/outcome.d.ts.map +1 -1
  88. package/dist/outcome.js +26 -0
  89. package/dist/overlay.d.ts +3 -4
  90. package/dist/overlay.d.ts.map +1 -1
  91. package/dist/overlay.js +100 -182
  92. package/dist/query.d.ts +60 -4
  93. package/dist/query.d.ts.map +1 -1
  94. package/dist/query.js +48 -7
  95. package/dist/reach.d.ts +11 -6
  96. package/dist/reach.d.ts.map +1 -1
  97. package/dist/reach.js +182 -62
  98. package/dist/react.d.ts +8 -6
  99. package/dist/react.d.ts.map +1 -1
  100. package/dist/react.js +7 -17
  101. package/dist/readiness.d.ts +64 -0
  102. package/dist/readiness.d.ts.map +1 -0
  103. package/dist/readiness.js +33 -0
  104. package/dist/reads.d.ts +11 -0
  105. package/dist/reads.d.ts.map +1 -0
  106. package/dist/reads.js +100 -0
  107. package/dist/recovery.d.ts +25 -0
  108. package/dist/recovery.d.ts.map +1 -0
  109. package/dist/recovery.js +198 -0
  110. package/dist/refresh.d.ts +16 -15
  111. package/dist/refresh.d.ts.map +1 -1
  112. package/dist/refresh.js +112 -44
  113. package/dist/replica.d.ts +57 -33
  114. package/dist/replica.d.ts.map +1 -1
  115. package/dist/replica.js +295 -149
  116. package/dist/room-draft.d.ts +17 -2
  117. package/dist/room-draft.d.ts.map +1 -1
  118. package/dist/room-draft.js +65 -25
  119. package/dist/rows.d.ts +28 -37
  120. package/dist/rows.d.ts.map +1 -1
  121. package/dist/rows.js +113 -72
  122. package/dist/save.d.ts +51 -9
  123. package/dist/save.d.ts.map +1 -1
  124. package/dist/save.js +526 -165
  125. package/dist/search.d.ts +39 -28
  126. package/dist/search.d.ts.map +1 -1
  127. package/dist/search.js +37 -105
  128. package/dist/seed.d.ts +16 -0
  129. package/dist/seed.d.ts.map +1 -0
  130. package/dist/seed.js +75 -0
  131. package/dist/shared.d.ts +16 -0
  132. package/dist/shared.d.ts.map +1 -0
  133. package/dist/shared.js +431 -0
  134. package/dist/status.d.ts +4 -0
  135. package/dist/status.d.ts.map +1 -1
  136. package/dist/store.d.ts +116 -76
  137. package/dist/store.d.ts.map +1 -1
  138. package/dist/store.js +349 -480
  139. package/dist/stored.d.ts +145 -0
  140. package/dist/stored.d.ts.map +1 -0
  141. package/dist/stored.js +567 -0
  142. package/dist/tables.d.ts +354 -0
  143. package/dist/tables.d.ts.map +1 -0
  144. package/dist/tables.js +624 -0
  145. package/dist/turn.d.ts +9 -0
  146. package/dist/turn.d.ts.map +1 -0
  147. package/dist/turn.js +75 -0
  148. package/dist/validation.d.ts +30 -0
  149. package/dist/validation.d.ts.map +1 -0
  150. package/dist/validation.js +162 -0
  151. package/dist/windows.d.ts +22 -0
  152. package/dist/windows.d.ts.map +1 -0
  153. package/dist/windows.js +89 -0
  154. package/dist/wire.d.ts +164 -32
  155. package/dist/wire.d.ts.map +1 -1
  156. package/dist/wire.js +55 -31
  157. package/dist/words.d.ts +19 -0
  158. package/dist/words.d.ts.map +1 -0
  159. package/dist/words.js +150 -0
  160. package/package.json +18 -18
  161. package/dist/chat/acts.d.ts +0 -34
  162. package/dist/chat/acts.d.ts.map +0 -1
  163. package/dist/chat/acts.js +0 -36
  164. package/dist/chat/context.d.ts +0 -3
  165. package/dist/chat/context.d.ts.map +0 -1
  166. package/dist/chat/context.js +0 -10
  167. package/dist/chat/input.d.ts +0 -9
  168. package/dist/chat/input.d.ts.map +0 -1
  169. package/dist/chat/input.js +0 -99
  170. package/dist/chat/kit.d.ts +0 -60
  171. package/dist/chat/kit.d.ts.map +0 -1
  172. package/dist/chat/kit.js +0 -123
  173. package/dist/chat/lasting.d.ts +0 -6
  174. package/dist/chat/lasting.d.ts.map +0 -1
  175. package/dist/chat/lasting.js +0 -19
  176. package/dist/chat/list.d.ts +0 -26
  177. package/dist/chat/list.d.ts.map +0 -1
  178. package/dist/chat/list.js +0 -62
  179. package/dist/chat/markdown.d.ts +0 -20
  180. package/dist/chat/markdown.d.ts.map +0 -1
  181. package/dist/chat/markdown.js +0 -188
  182. package/dist/chat/message.d.ts +0 -6
  183. package/dist/chat/message.d.ts.map +0 -1
  184. package/dist/chat/message.js +0 -192
  185. package/dist/chat/messages.d.ts +0 -21
  186. package/dist/chat/messages.d.ts.map +0 -1
  187. package/dist/chat/messages.js +0 -151
  188. package/dist/chat/name.d.ts +0 -6
  189. package/dist/chat/name.d.ts.map +0 -1
  190. package/dist/chat/name.js +0 -37
  191. package/dist/chat/opened.d.ts +0 -11
  192. package/dist/chat/opened.d.ts.map +0 -1
  193. package/dist/chat/opened.js +0 -17
  194. package/dist/chat/overlay.d.ts +0 -31
  195. package/dist/chat/overlay.d.ts.map +0 -1
  196. package/dist/chat/overlay.js +0 -97
  197. package/dist/chat/parts.d.ts +0 -57
  198. package/dist/chat/parts.d.ts.map +0 -1
  199. package/dist/chat/parts.js +0 -119
  200. package/dist/chat/process.d.ts +0 -20
  201. package/dist/chat/process.d.ts.map +0 -1
  202. package/dist/chat/process.js +0 -32
  203. package/dist/chat/provider.d.ts +0 -63
  204. package/dist/chat/provider.d.ts.map +0 -1
  205. package/dist/chat/provider.js +0 -645
  206. package/dist/chat/question.d.ts +0 -9
  207. package/dist/chat/question.d.ts.map +0 -1
  208. package/dist/chat/question.js +0 -80
  209. package/dist/chat/questions.d.ts +0 -31
  210. package/dist/chat/questions.d.ts.map +0 -1
  211. package/dist/chat/questions.js +0 -111
  212. package/dist/chat/read.d.ts +0 -5
  213. package/dist/chat/read.d.ts.map +0 -1
  214. package/dist/chat/read.js +0 -13
  215. package/dist/chat/ready.d.ts +0 -33
  216. package/dist/chat/ready.d.ts.map +0 -1
  217. package/dist/chat/ready.js +0 -91
  218. package/dist/chat/style.d.ts +0 -4
  219. package/dist/chat/style.d.ts.map +0 -1
  220. package/dist/chat/style.js +0 -302
  221. package/dist/chat.d.ts +0 -14
  222. package/dist/chat.d.ts.map +0 -1
  223. package/dist/chat.js +0 -8
  224. package/dist/read-side.d.ts +0 -18
  225. package/dist/read-side.d.ts.map +0 -1
  226. package/dist/read-side.js +0 -440
package/dist/client.d.ts CHANGED
@@ -1,38 +1,42 @@
1
- import type { AppRoom, ConnectionRefusal, HistoryQuery, RoomSchemas, SavedRoomDraft, SaveResult } from './connection.js';
1
+ import type { AppRoom, ConnectionRefusal, HistoryQuery, RoomSchemas, SavedParts, SavedRoomDraft, SaveResult } from './connection.js';
2
2
  import type { Member, ServiceMode } from './adapter.js';
3
3
  import type { ChatDraft, ConversationAgent, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
4
4
  import { type Observation } from './observation.js';
5
- import type { BinaryReference } from './binary.js';
6
- import type { BinaryAnswer, CallResult, HistoryAnswer, QueueEntry } from './outcome.js';
7
- import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult } from './query.js';
5
+ import type { ChosenFile } from './file.js';
6
+ import type { BinaryAnswer, BinaryLinkAnswer, CallResult, HistoryAnswer, Offline, QueueEntry, Resolution } from './outcome.js';
7
+ import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult, PendingResult } from './query.js';
8
8
  import type { RoomDraft, RoomDraftParts, RoomDraftWrite } from './room-draft.js';
9
9
  import type { SearchRequest, SearchResult } from './search.js';
10
+ import type { Readiness } from './readiness.js';
10
11
  import type { SyncStatus } from './status.js';
11
12
  import { type RuntimePort } from './wire.js';
12
13
  export type MdRuntimeClient = {
13
14
  rooms(): Promise<readonly AppRoom[]>;
14
15
  query: {
15
- (query: DocumentQuery): Promise<DocumentResult>;
16
- (query: GroupQuery): Promise<GroupResult>;
16
+ (query: DocumentQuery): Promise<DocumentResult | PendingResult>;
17
+ (query: GroupQuery): Promise<GroupResult | PendingResult>;
17
18
  };
18
19
  search(request: SearchRequest): Promise<SearchResult>;
19
20
  types(locator: string): Promise<RoomSchemas>;
20
21
  roomDraft: {
21
22
  list(): Promise<readonly RoomDraft[]>;
22
23
  read(room: string, path: string): Promise<RoomDraft | null>;
23
- write(room: string, path: string, revision: string | null, parts: RoomDraftParts): Promise<RoomDraftWrite>;
24
+ write(room: string, path: string, revision: string | null, parts: RoomDraftParts, next?: string): Promise<RoomDraftWrite>;
24
25
  discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
25
26
  };
26
27
  save(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;
28
+ saveParts(room: string, parts: readonly SavedParts[]): Promise<SaveResult>;
27
29
  presentation: {
28
30
  read(): Promise<unknown>;
29
31
  write(value: unknown): Promise<void>;
32
+ edit(members: Readonly<Record<string, unknown>>): Promise<void>;
30
33
  };
31
34
  conversation: {
32
35
  list(): Promise<readonly ConversationEntry[]>;
33
36
  read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;
34
37
  create(input: unknown): Promise<CallResult>;
35
- send(conversation: string): Promise<CallResult>;
38
+ send(conversation: string, operation?: string, draft?: ChatDraft): Promise<CallResult | Offline>;
39
+ attach(room: string, file: ChosenFile): Promise<CallResult | Offline>;
36
40
  answer(conversation: string, answer: unknown): Promise<CallResult>;
37
41
  interrupt(conversation: string): Promise<CallResult>;
38
42
  kill(conversation: string): Promise<CallResult>;
@@ -41,27 +45,32 @@ export type MdRuntimeClient = {
41
45
  };
42
46
  chatDraft: {
43
47
  write(conversation: string, draft: ChatDraft, revision?: string): Promise<void>;
48
+ prepend(conversation: string, draft: ChatDraft): Promise<void>;
44
49
  discard(conversation: string): Promise<void>;
45
50
  };
46
51
  history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryAnswer>;
52
+ resolve(room: string, path: string, destination: string): Promise<Resolution>;
47
53
  binaryFile: {
48
54
  read(room: string, path: string, revision?: string): Promise<BinaryAnswer>;
49
- readReference(reference: BinaryReference): Promise<BinaryAnswer>;
55
+ link(room: string, path: string, revision?: string): Promise<BinaryLinkAnswer>;
50
56
  };
51
57
  call(name: string, input: unknown): Promise<CallResult>;
52
58
  reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
53
59
  log(): Promise<string>;
54
60
  persistence(): Promise<boolean>;
61
+ retry(): Promise<void>;
62
+ cleanUp(): Promise<number>;
55
63
  observe: {
56
64
  (topic: 'deployment-facts'): Promise<Observation<unknown>>;
57
65
  (topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
66
+ (topic: 'readiness'): Promise<Observation<Readiness>>;
58
67
  (topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
59
68
  (topic: 'storage-loss'): Promise<Observation<string | null>>;
60
69
  (topic: 'sync-status'): Promise<Observation<SyncStatus>>;
61
70
  (topic: 'service-mode'): Promise<Observation<ServiceMode>>;
62
71
  (topic: 'member'): Promise<Observation<Member | null>>;
63
- (topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult>>;
64
- (topic: 'query', query: GroupQuery): Promise<Observation<GroupResult>>;
72
+ (topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult | PendingResult>>;
73
+ (topic: 'query', query: GroupQuery): Promise<Observation<GroupResult | PendingResult>>;
65
74
  (topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
66
75
  (topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
67
76
  (topic: 'presentation'): Promise<Observation<unknown>>;
@@ -74,6 +83,9 @@ export type MdRuntimeClient = {
74
83
  };
75
84
  export declare function connectMdRuntime(port: RuntimePort): MdRuntimeClient;
76
85
  export declare function inTurn(client: MdRuntimeClient, work: () => Promise<void>): Promise<void>;
86
+ export { chainedWindows, type WindowAnswer, type WindowChain } from './chain.js';
87
+ export { roomDraftRevision } from './identity.js';
77
88
  export type { Observation } from './observation.js';
78
- export type { RuntimePort } from './wire.js';
89
+ export type { Open } from './open.js';
90
+ export { unanswered, type RuntimePort, type WireMember } from './wire.js';
79
91
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,cAAc,EACd,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAY,KAAK,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,EAEV,aAAa,EACb,OAAO,EACP,UAAU,EACV,UAAU,EACX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAIL,KAAK,WAAW,EAIjB,MAAM,WAAW,CAAC;AAKnB,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACrC,KAAK,EAAE;QACL,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC;QAChE,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;KAC3D,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,SAAS,EAAE;QACT,IAAI,IAAI,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QAC5D,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,KAAK,EAAE,cAAc,EACrB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;KAChF,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3E,YAAY,EAAE;QACZ,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QACzB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACjE,CAAC;IACF,YAAY,EAAE;QACZ,IAAI,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACrF,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CACF,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACnE,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;KACnD,CAAC;IACF,SAAS,EAAE;QACT,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChF,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9C,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9E,UAAU,EAAE;QACV,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;KAChF,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACvB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE;QACP,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACtD,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QACzD,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC;QAC7F,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC;QACvF,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,CACE,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC,CAAC;KACvE,CAAC;IACF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAAC;AAMF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAsQnE;AAID,wBAAgB,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxF;AAED,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC"}
package/dist/client.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { observed } from './observation.js';
2
2
  import { runtimeError } from './failure.js';
3
3
  import { answer, AUTHORIZATION_ENDED, PORT_CLOSED, } from './wire.js';
4
+ // React renders an arrived value in a later task and opens what that render observes as it commits, so this many frames opening nothing mean the page drew what it observes.
5
+ const SETTLED_FRAMES = 2;
4
6
  function refused(refusal) {
5
7
  return runtimeError(refusal.code, refusal.code, refusal.retryable);
6
8
  }
@@ -131,6 +133,29 @@ export function connectMdRuntime(port) {
131
133
  drawing?.();
132
134
  });
133
135
  }
136
+ function streamed(answer) {
137
+ if (answer.kind !== 'binary')
138
+ return answer;
139
+ const { file, byteLength, mediaType } = answer;
140
+ let part = 0;
141
+ let received = 0;
142
+ const stream = new ReadableStream({
143
+ async pull(controller) {
144
+ const bytes = await ask('binaryFile.part', [file, part]);
145
+ if (bytes === null) {
146
+ if (received === byteLength)
147
+ controller.close();
148
+ else
149
+ controller.error(runtimeError('binary-file-absent', 'The file ended early'));
150
+ return;
151
+ }
152
+ part += 1;
153
+ received += bytes.byteLength;
154
+ controller.enqueue(bytes);
155
+ },
156
+ }, { highWaterMark: 0 });
157
+ return { kind: 'binary', stream, byteLength, mediaType };
158
+ }
134
159
  function settled() {
135
160
  if (settling !== null)
136
161
  return settling;
@@ -141,14 +166,19 @@ export function connectMdRuntime(port) {
141
166
  if (opening.size > 0)
142
167
  return;
143
168
  const at = moved;
144
- requestAnimationFrame(() => {
169
+ const waited = (frames) => {
145
170
  requestAnimationFrame(() => {
171
+ if (frames < SETTLED_FRAMES) {
172
+ waited(frames + 1);
173
+ return;
174
+ }
146
175
  if (moved !== at || opening.size > 0)
147
176
  return;
148
177
  drawing = null;
149
178
  resolve();
150
179
  });
151
- });
180
+ };
181
+ waited(1);
152
182
  };
153
183
  drawing = check;
154
184
  check();
@@ -163,19 +193,22 @@ export function connectMdRuntime(port) {
163
193
  roomDraft: {
164
194
  list: () => ask('roomDraft.list', []),
165
195
  read: (room, path) => ask('roomDraft.read', [room, path]),
166
- write: (room, path, revision, parts) => ask('roomDraft.write', [room, path, revision, parts]),
196
+ write: (room, path, revision, parts, next) => ask('roomDraft.write', next === undefined ? [room, path, revision, parts] : [room, path, revision, parts, next]),
167
197
  discard: (room, path, revision) => ask('roomDraft.discard', [room, path, revision]),
168
198
  },
169
199
  save: (room, roomDrafts) => ask('save', [room, roomDrafts]),
200
+ saveParts: (room, parts) => ask('saveParts', [room, parts]),
170
201
  presentation: {
171
202
  read: () => ask('presentation.read', []),
172
203
  write: (value) => ask('presentation.write', [value]),
204
+ edit: (members) => ask('presentation.edit', [members]),
173
205
  },
174
206
  conversation: {
175
207
  list: () => ask('conversation.list', []),
176
208
  read: (conversation, options) => ask('conversation.read', [conversation, options]),
177
209
  create: (input) => ask('conversation.create', [input]),
178
- send: (conversation) => ask('conversation.send', [conversation]),
210
+ send: (conversation, operation, draft) => ask('conversation.send', [conversation, operation, draft]),
211
+ attach: (room, file) => ask('conversation.attach', [room, file]),
179
212
  answer: (conversation, answer) => ask('conversation.answer', [conversation, answer]),
180
213
  interrupt: (conversation) => ask('conversation.interrupt', [conversation]),
181
214
  kill: (conversation) => ask('conversation.kill', [conversation]),
@@ -184,17 +217,21 @@ export function connectMdRuntime(port) {
184
217
  },
185
218
  chatDraft: {
186
219
  write: (conversation, draft, revision) => ask('chatDraft.write', [conversation, draft, revision]),
220
+ prepend: (conversation, draft) => ask('chatDraft.prepend', [conversation, draft]),
187
221
  discard: (conversation) => ask('chatDraft.discard', [conversation]),
188
222
  },
189
223
  history: (locator, path, query) => ask('history', [locator, path, query]),
224
+ resolve: (room, path, destination) => ask('resolve', [room, path, destination]),
190
225
  binaryFile: {
191
- read: (room, path, revision) => ask('binaryFile.read', [room, path, revision]),
192
- readReference: (reference) => ask('binaryFile.readReference', [reference]),
226
+ read: (room, path, revision) => ask('binaryFile.read', [room, path, revision]).then(streamed),
227
+ link: (room, path, revision) => ask('binaryFile.link', [room, path, revision]),
193
228
  },
194
229
  call: (name, input) => ask('call', [name, input]),
195
230
  reached: (locator, roomVersion, path) => ask('reached', [locator, roomVersion, path]),
196
231
  log: () => ask('log', []),
197
232
  persistence: () => ask('persistence', []),
233
+ retry: () => ask('retry', []),
234
+ cleanUp: () => ask('cleanUp', []),
198
235
  observe: ((topic, ...input) => watch(topic, input)),
199
236
  reauthorize: () => ask('reauthorize', []),
200
237
  settled,
@@ -202,7 +239,10 @@ export function connectMdRuntime(port) {
202
239
  }
203
240
  const turns = new WeakMap();
204
241
  export function inTurn(client, work) {
205
- const next = (turns.get(client) ?? Promise.resolve()).then(work).catch(() => undefined);
206
- turns.set(client, next);
207
- return next;
242
+ const turn = (turns.get(client) ?? Promise.resolve()).then(work);
243
+ turns.set(client, turn.then(() => undefined, () => undefined));
244
+ return turn;
208
245
  }
246
+ export { chainedWindows } from './chain.js';
247
+ export { roomDraftRevision } from './identity.js';
248
+ export { unanswered } from './wire.js';
@@ -1,6 +1,7 @@
1
- import { type Document, type Validation } from '@agentshouse/mdmodel';
1
+ import { type Document } from '@agentshouse/mdmodel';
2
2
  import type { ModelState } from './model.js';
3
3
  import type { MdModelIdentity } from './adapter.js';
4
+ import { type Paths } from './shared.js';
4
5
  import type { Refused } from './transfer.js';
5
6
  export declare const MD_MODEL: MdModelIdentity;
6
7
  export type Collection = {
@@ -15,11 +16,11 @@ export type Composition = {
15
16
  model: ModelState;
16
17
  } | null;
17
18
  };
19
+ export declare function selected(composition: Composition, path: string): boolean;
18
20
  export declare function governing(composition: Composition, path: string): ModelState;
19
- export declare function collectionOf(text: Readonly<Record<string, string>>, composition: Composition, previous?: Collection): Collection;
20
- export declare function passingDocument(collection: Collection, path: string): Document | undefined;
21
- export declare function documentsOf(collection: Collection): Generator<readonly [string, Document]>;
22
- export declare function unreadable(text: Readonly<Record<string, string>>, previous?: Readonly<Record<string, string>>): Refused | null;
21
+ export declare function collectionOf(text: Readonly<Record<string, string>>, composition: Composition): Collection;
22
+ export declare function documentsOf(collection: Collection): Generator<number, Iterable<readonly [string, Document]>, void>;
23
+ export declare function unreadable(text: Paths<string>, paths?: Iterable<string> | null): Generator<number, Refused | null, void>;
23
24
  export declare function validRoot(root: unknown): root is string;
24
- export declare function validateCollection(text: Readonly<Record<string, string>>, binaryTargets: readonly string[], composition: Composition): Validation;
25
+ export declare function available(composition: Composition): boolean;
25
26
  //# sourceMappingURL=collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,UAAU,EAEhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAIhG,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE,CAAC;AASF,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAI5E;AAID,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,UAAU,GACpB,UAAU,CAsBZ;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAO1F;AAED,wBAAiB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAY3F;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC1C,OAAO,GAAG,IAAI,CAOhB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEvD;AAwBD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,WAAW,EAAE,WAAW,GACvB,UAAU,CA0BZ"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAsB,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAEhG,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE,CAAC;AAEF,wBAAgB,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxE;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAI5E;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,GACvB,UAAU,CAcZ;AAED,wBAAiB,WAAW,CAC1B,UAAU,EAAE,UAAU,GACrB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAQhE;AAED,wBAAiB,UAAU,CACzB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EACnB,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAW,GACpC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,CAAC,CAazC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEvD;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAK3D"}
@@ -1,8 +1,9 @@
1
- import { parse, validate, VERSION, } from '@agentshouse/mdmodel';
1
+ import { parse, VERSION } from '@agentshouse/mdmodel';
2
2
  import { beneath, normalize } from './paths.js';
3
+ import { keysIn, sortedKeys } from './shared.js';
4
+ import { ROW_WEIGHT } from './turn.js';
3
5
  export const MD_MODEL = { identity: '@agentshouse/mdmodel', version: VERSION };
4
- const NO_TYPES = { types: {} };
5
- function selected(composition, path) {
6
+ export function selected(composition, path) {
6
7
  return (composition.selection !== null &&
7
8
  composition.selection.roots.some((root) => beneath(root, path)));
8
9
  }
@@ -11,22 +12,14 @@ export function governing(composition, path) {
11
12
  ? composition.selection.model
12
13
  : composition.model;
13
14
  }
14
- const parsedIn = new WeakMap();
15
- export function collectionOf(text, composition, previous) {
15
+ export function collectionOf(text, composition) {
16
16
  const parsed = new Map();
17
- if (previous !== undefined) {
18
- for (const [path, held] of parsedIn.get(previous) ?? []) {
19
- if (previous.text[path] === text[path])
20
- parsed.set(path, held);
21
- }
22
- }
23
- const collection = {
17
+ return {
24
18
  text,
25
19
  composition,
26
20
  document(path) {
27
- const held = parsed.get(path);
28
- if (held !== undefined)
29
- return held ?? undefined;
21
+ if (parsed.has(path))
22
+ return parsed.get(path) ?? undefined;
30
23
  const content = text[path];
31
24
  if (content === undefined)
32
25
  return undefined;
@@ -35,75 +28,36 @@ export function collectionOf(text, composition, previous) {
35
28
  return read.ok ? read.document : undefined;
36
29
  },
37
30
  };
38
- parsedIn.set(collection, parsed);
39
- return collection;
40
- }
41
- export function passingDocument(collection, path) {
42
- const held = parsedIn.get(collection)?.get(path);
43
- if (held !== undefined)
44
- return held ?? undefined;
45
- const content = collection.text[path];
46
- if (content === undefined)
47
- return undefined;
48
- const read = parse(content, path);
49
- return read.ok ? read.document : undefined;
50
31
  }
51
32
  export function* documentsOf(collection) {
52
- const parsed = parsedIn.get(collection);
53
- for (const path of Object.keys(collection.text).sort()) {
54
- const held = parsed?.get(path);
55
- if (held === null)
56
- continue;
57
- if (held !== undefined) {
58
- yield [path, held];
59
- continue;
33
+ const paths = yield* sortedKeys(collection.text);
34
+ return (function* () {
35
+ for (const path of paths) {
36
+ const document = collection.document(path);
37
+ if (document !== undefined)
38
+ yield [path, document];
60
39
  }
61
- const read = parse(collection.text[path], path);
62
- if (read.ok)
63
- yield [path, read.document];
64
- }
65
- }
66
- export function unreadable(text, previous) {
67
- for (const path of Object.keys(text).sort()) {
68
- if (previous?.[path] === text[path])
40
+ })();
41
+ }
42
+ export function* unreadable(text, paths = null) {
43
+ const named = paths ?? (yield* keysIn(text));
44
+ let least = null;
45
+ for (const path of named) {
46
+ const content = Object.hasOwn(text, path) ? text[path] : undefined;
47
+ if (content === undefined)
69
48
  continue;
70
- const read = parse(text[path], path);
71
- if (!read.ok)
72
- return { kind: 'refused', refusal: read.refusal };
49
+ const read = parse(content, path);
50
+ if (!read.ok && (least === null || path < least.path)) {
51
+ least = { path, refused: { kind: 'refused', refusal: read.refusal } };
52
+ }
53
+ yield ROW_WEIGHT + content.length;
73
54
  }
74
- return null;
55
+ return least?.refused ?? null;
75
56
  }
76
57
  export function validRoot(root) {
77
58
  return typeof root === 'string' && normalize(root) === root;
78
59
  }
79
- function validateAgainst(documents, binaryTargets, model) {
80
- if (model.status === 'unavailable') {
81
- const typed = Object.entries(documents).find(([, content]) => {
82
- const parsed = parse(content);
83
- return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';
84
- });
85
- if (typed !== undefined)
86
- return { verdict: 'refuse', rule: 'model-unavailable', file: typed[0] };
87
- }
88
- return validate(documents, { binaryTargets }, model.status === 'unavailable' ? NO_TYPES : { types: model.types });
89
- }
90
- export function validateCollection(text, binaryTargets, composition) {
91
- const collection = {};
92
- const selection = {};
93
- for (const [path, content] of Object.entries(text)) {
94
- if (selected(composition, path))
95
- selection[path] = content;
96
- else
97
- collection[path] = content;
98
- }
99
- const verdicts = [
100
- validateAgainst(collection, binaryTargets.filter((path) => !selected(composition, path)), composition.model),
101
- ];
102
- if (composition.selection !== null) {
103
- verdicts.push(validateAgainst(selection, binaryTargets.filter((path) => selected(composition, path)), composition.selection.model));
104
- }
105
- const refusals = verdicts.filter((verdict) => verdict.verdict === 'refuse');
106
- if (refusals.length === 0)
107
- return verdicts[0];
108
- return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];
60
+ export function available(composition) {
61
+ return (composition.model.status !== 'unavailable' &&
62
+ (composition.selection === null || composition.selection.model.status !== 'unavailable'));
109
63
  }
@@ -0,0 +1,16 @@
1
+ import type { Plan, QueryRows } from './query.js';
2
+ import type { Connection, Value } from './tables.js';
3
+ export type QueryRoom = {
4
+ readonly locator: string;
5
+ readonly key: number;
6
+ };
7
+ export type Fragment = {
8
+ readonly sql: string;
9
+ readonly bind: readonly Value[];
10
+ };
11
+ export type QueryAnswer = QueryRows & {
12
+ readonly more?: string;
13
+ };
14
+ export declare function selected(connection: Connection, plan: Plan, rooms: readonly QueryRoom[]): Fragment;
15
+ export declare function answerQuery(connection: Connection, plan: Plan, rooms: readonly QueryRoom[], budget?: number | null): QueryAnswer;
16
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAOV,IAAI,EAGJ,SAAS,EAIV,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAU1D,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,KAAK,EAAE,CAAA;CAAE,CAAC;AA+pBjF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA8SjE,wBAAgB,QAAQ,CACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,SAAS,EAAE,GAC1B,QAAQ,CAEV;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,WAAW,CAUb"}