@agentshouse/mdruntime 0.1.0-cfcbb238a5fa0 → 0.1.0-cfcf93be6310b

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 (236) hide show
  1. package/README.md +19 -16
  2. package/dist/adapter.d.ts +142 -70
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +5 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +38 -4
  7. package/dist/binary.d.ts +0 -5
  8. package/dist/binary.d.ts.map +1 -1
  9. package/dist/binary.js +1 -1
  10. package/dist/bootstrap.d.ts +26 -11
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +181 -103
  13. package/dist/chain.d.ts +11 -0
  14. package/dist/chain.d.ts.map +1 -0
  15. package/dist/chain.js +64 -0
  16. package/dist/change-set.d.ts +9 -16
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +11 -89
  19. package/dist/change.d.ts +31 -1
  20. package/dist/change.d.ts.map +1 -1
  21. package/dist/change.js +10 -1
  22. package/dist/client.d.ts +17 -9
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +86 -9
  25. package/dist/collection.d.ts +11 -21
  26. package/dist/collection.d.ts.map +1 -1
  27. package/dist/collection.js +39 -291
  28. package/dist/compile.d.ts +16 -0
  29. package/dist/compile.d.ts.map +1 -0
  30. package/dist/compile.js +789 -0
  31. package/dist/connection.d.ts +26 -16
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +3210 -1397
  34. package/dist/context.d.ts +2 -0
  35. package/dist/context.d.ts.map +1 -0
  36. package/dist/{chat/context.js → context.js} +1 -4
  37. package/dist/conversation.d.ts +29 -14
  38. package/dist/conversation.d.ts.map +1 -1
  39. package/dist/conversation.js +422 -198
  40. package/dist/digest.d.ts +7 -0
  41. package/dist/digest.d.ts.map +1 -0
  42. package/dist/digest.js +113 -0
  43. package/dist/durability.d.ts +2 -5
  44. package/dist/durability.d.ts.map +1 -1
  45. package/dist/durability.js +5 -0
  46. package/dist/entry.d.ts +4 -1
  47. package/dist/entry.d.ts.map +1 -1
  48. package/dist/entry.js +20 -24
  49. package/dist/file.d.ts +2 -19
  50. package/dist/file.d.ts.map +1 -1
  51. package/dist/file.js +7 -122
  52. package/dist/host.d.ts +3 -10
  53. package/dist/host.d.ts.map +1 -1
  54. package/dist/host.js +64 -38
  55. package/dist/identity.d.ts +0 -1
  56. package/dist/identity.d.ts.map +1 -1
  57. package/dist/identity.js +0 -3
  58. package/dist/index.d.ts +17 -12
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +8 -2
  61. package/dist/job.d.ts +14 -0
  62. package/dist/job.d.ts.map +1 -0
  63. package/dist/job.js +28 -0
  64. package/dist/live.d.ts +23 -0
  65. package/dist/live.d.ts.map +1 -0
  66. package/dist/live.js +127 -0
  67. package/dist/media.d.ts +8 -0
  68. package/dist/media.d.ts.map +1 -0
  69. package/dist/media.js +218 -0
  70. package/dist/memory.d.ts +12 -6
  71. package/dist/memory.d.ts.map +1 -1
  72. package/dist/memory.js +202 -103
  73. package/dist/messages.d.ts +28 -0
  74. package/dist/messages.d.ts.map +1 -0
  75. package/dist/messages.js +89 -0
  76. package/dist/model.d.ts +6 -1
  77. package/dist/model.d.ts.map +1 -1
  78. package/dist/model.js +7 -10
  79. package/dist/name.d.ts +4 -0
  80. package/dist/name.d.ts.map +1 -0
  81. package/dist/name.js +122 -0
  82. package/dist/observation.d.ts +17 -2
  83. package/dist/observation.d.ts.map +1 -1
  84. package/dist/observation.js +100 -5
  85. package/dist/opened.d.ts +22 -0
  86. package/dist/opened.d.ts.map +1 -0
  87. package/dist/opened.js +107 -0
  88. package/dist/outcome.d.ts +45 -7
  89. package/dist/outcome.d.ts.map +1 -1
  90. package/dist/outcome.js +39 -0
  91. package/dist/overlay.d.ts +2 -5
  92. package/dist/overlay.d.ts.map +1 -1
  93. package/dist/overlay.js +87 -172
  94. package/dist/paths.d.ts +1 -0
  95. package/dist/paths.d.ts.map +1 -1
  96. package/dist/paths.js +4 -0
  97. package/dist/phrase.d.ts +3 -0
  98. package/dist/phrase.d.ts.map +1 -0
  99. package/dist/phrase.js +8 -0
  100. package/dist/query.d.ts +36 -2
  101. package/dist/query.d.ts.map +1 -1
  102. package/dist/query.js +60 -6
  103. package/dist/reach.d.ts +17 -8
  104. package/dist/reach.d.ts.map +1 -1
  105. package/dist/reach.js +219 -90
  106. package/dist/react.d.ts +2 -2
  107. package/dist/react.d.ts.map +1 -1
  108. package/dist/react.js +2 -14
  109. package/dist/readiness.d.ts +14 -17
  110. package/dist/readiness.d.ts.map +1 -1
  111. package/dist/readiness.js +2 -8
  112. package/dist/recovery.d.ts +3 -2
  113. package/dist/recovery.d.ts.map +1 -1
  114. package/dist/recovery.js +34 -7
  115. package/dist/refresh.d.ts +18 -15
  116. package/dist/refresh.d.ts.map +1 -1
  117. package/dist/refresh.js +155 -58
  118. package/dist/replica.d.ts +56 -33
  119. package/dist/replica.d.ts.map +1 -1
  120. package/dist/replica.js +301 -191
  121. package/dist/room-draft.d.ts +23 -4
  122. package/dist/room-draft.d.ts.map +1 -1
  123. package/dist/room-draft.js +158 -71
  124. package/dist/rows.d.ts +39 -30
  125. package/dist/rows.d.ts.map +1 -1
  126. package/dist/rows.js +178 -96
  127. package/dist/save.d.ts +53 -14
  128. package/dist/save.d.ts.map +1 -1
  129. package/dist/save.js +529 -185
  130. package/dist/search.d.ts +12 -82
  131. package/dist/search.d.ts.map +1 -1
  132. package/dist/search.js +10 -207
  133. package/dist/seed.d.ts.map +1 -1
  134. package/dist/seed.js +18 -4
  135. package/dist/shared.d.ts +7 -3
  136. package/dist/shared.d.ts.map +1 -1
  137. package/dist/shared.js +119 -66
  138. package/dist/status.d.ts +4 -3
  139. package/dist/status.d.ts.map +1 -1
  140. package/dist/status.js +3 -1
  141. package/dist/store.d.ts +99 -97
  142. package/dist/store.d.ts.map +1 -1
  143. package/dist/store.js +336 -665
  144. package/dist/stored.d.ts +162 -0
  145. package/dist/stored.d.ts.map +1 -0
  146. package/dist/stored.js +549 -0
  147. package/dist/tables.d.ts +353 -0
  148. package/dist/tables.d.ts.map +1 -0
  149. package/dist/tables.js +585 -0
  150. package/dist/transfer.d.ts +0 -5
  151. package/dist/transfer.d.ts.map +1 -1
  152. package/dist/turn.d.ts +5 -3
  153. package/dist/turn.d.ts.map +1 -1
  154. package/dist/turn.js +51 -21
  155. package/dist/validation.d.ts +29 -0
  156. package/dist/validation.d.ts.map +1 -0
  157. package/dist/validation.js +104 -0
  158. package/dist/windows.d.ts +22 -0
  159. package/dist/windows.d.ts.map +1 -0
  160. package/dist/windows.js +89 -0
  161. package/dist/wire.d.ts +34 -5
  162. package/dist/wire.d.ts.map +1 -1
  163. package/dist/wire.js +10 -2
  164. package/package.json +18 -19
  165. package/AGENTS.md +0 -299
  166. package/dist/acquisition.d.ts +0 -14
  167. package/dist/acquisition.d.ts.map +0 -1
  168. package/dist/acquisition.js +0 -24
  169. package/dist/chat/acts.d.ts +0 -33
  170. package/dist/chat/acts.d.ts.map +0 -1
  171. package/dist/chat/acts.js +0 -36
  172. package/dist/chat/context.d.ts +0 -3
  173. package/dist/chat/context.d.ts.map +0 -1
  174. package/dist/chat/input.d.ts +0 -9
  175. package/dist/chat/input.d.ts.map +0 -1
  176. package/dist/chat/input.js +0 -99
  177. package/dist/chat/kit.d.ts +0 -61
  178. package/dist/chat/kit.d.ts.map +0 -1
  179. package/dist/chat/kit.js +0 -123
  180. package/dist/chat/lasting.d.ts +0 -6
  181. package/dist/chat/lasting.d.ts.map +0 -1
  182. package/dist/chat/lasting.js +0 -19
  183. package/dist/chat/list.d.ts +0 -27
  184. package/dist/chat/list.d.ts.map +0 -1
  185. package/dist/chat/list.js +0 -63
  186. package/dist/chat/markdown.d.ts +0 -20
  187. package/dist/chat/markdown.d.ts.map +0 -1
  188. package/dist/chat/markdown.js +0 -188
  189. package/dist/chat/message.d.ts +0 -6
  190. package/dist/chat/message.d.ts.map +0 -1
  191. package/dist/chat/message.js +0 -192
  192. package/dist/chat/messages.d.ts +0 -22
  193. package/dist/chat/messages.d.ts.map +0 -1
  194. package/dist/chat/messages.js +0 -155
  195. package/dist/chat/name.d.ts +0 -6
  196. package/dist/chat/name.d.ts.map +0 -1
  197. package/dist/chat/name.js +0 -37
  198. package/dist/chat/opened.d.ts +0 -11
  199. package/dist/chat/opened.d.ts.map +0 -1
  200. package/dist/chat/opened.js +0 -17
  201. package/dist/chat/overlay.d.ts +0 -31
  202. package/dist/chat/overlay.d.ts.map +0 -1
  203. package/dist/chat/overlay.js +0 -97
  204. package/dist/chat/parts.d.ts +0 -57
  205. package/dist/chat/parts.d.ts.map +0 -1
  206. package/dist/chat/parts.js +0 -119
  207. package/dist/chat/process.d.ts +0 -20
  208. package/dist/chat/process.d.ts.map +0 -1
  209. package/dist/chat/process.js +0 -32
  210. package/dist/chat/provider.d.ts +0 -63
  211. package/dist/chat/provider.d.ts.map +0 -1
  212. package/dist/chat/provider.js +0 -629
  213. package/dist/chat/question.d.ts +0 -9
  214. package/dist/chat/question.d.ts.map +0 -1
  215. package/dist/chat/question.js +0 -80
  216. package/dist/chat/questions.d.ts +0 -31
  217. package/dist/chat/questions.d.ts.map +0 -1
  218. package/dist/chat/questions.js +0 -111
  219. package/dist/chat/read.d.ts +0 -5
  220. package/dist/chat/read.d.ts.map +0 -1
  221. package/dist/chat/read.js +0 -13
  222. package/dist/chat/ready.d.ts +0 -34
  223. package/dist/chat/ready.d.ts.map +0 -1
  224. package/dist/chat/ready.js +0 -91
  225. package/dist/chat/style.d.ts +0 -4
  226. package/dist/chat/style.d.ts.map +0 -1
  227. package/dist/chat/style.js +0 -302
  228. package/dist/chat.d.ts +0 -14
  229. package/dist/chat.d.ts.map +0 -1
  230. package/dist/chat.js +0 -8
  231. package/dist/read-side.d.ts +0 -25
  232. package/dist/read-side.d.ts.map +0 -1
  233. package/dist/read-side.js +0 -642
  234. package/dist/reads.d.ts +0 -11
  235. package/dist/reads.d.ts.map +0 -1
  236. package/dist/reads.js +0 -98
package/dist/search.d.ts CHANGED
@@ -1,92 +1,22 @@
1
- import type { ProviderRefusal } from './adapter.js';
2
- import type { ChangeSet } from './change-set.js';
3
- import { type CoveredRoom, type Filter, type PendingRoom } from './query.js';
4
- import type { Open } from './open.js';
5
- export type DocumentPart = Open<'fields' | 'sections' | 'preamble' | 'path'>;
1
+ import type { ProviderRefusal, SearchHit } from './adapter.js';
2
+ import type { Failure, Offline } from './outcome.js';
6
3
  export type SearchRequest = {
7
4
  text: string;
8
- documents?: Filter;
9
- collection?: true;
10
- conversations?: readonly string[];
11
- limit?: number;
5
+ rooms?: readonly string[];
12
6
  };
13
- export type DocumentHit = {
14
- room: string;
15
- path: string;
16
- type: string;
17
- score: number;
18
- matches: Readonly<Record<string, readonly DocumentPart[]>>;
7
+ export type { SearchHit } from './adapter.js';
8
+ export type SearchFound = {
9
+ kind: 'found';
10
+ documents: readonly SearchHit[];
19
11
  };
20
- export type MessageHit = {
21
- conversation: string;
22
- identity: string;
23
- score: number;
24
- matches: Readonly<Record<string, readonly Open<'text'>[]>>;
25
- };
26
- export type SearchCoverage = {
27
- rooms: readonly CoveredRoom[];
28
- conversations: readonly string[];
29
- index: string;
30
- overlay: readonly string[];
31
- };
32
- export type PendingConversation = {
33
- conversation: string;
34
- awaits: Open<'index'>;
35
- };
36
- export type SearchHits = {
37
- documents: readonly DocumentHit[];
38
- messages: readonly MessageHit[];
39
- };
40
- export type SearchPending = SearchHits & {
41
- pending: readonly (PendingRoom | PendingConversation)[];
42
- coverage: SearchCoverage;
43
- };
44
- export type SearchUndeclared = ProviderRefusal & {
12
+ export type SearchResult = SearchFound | Offline | (ProviderRefusal & {
13
+ kind: 'rejected';
14
+ }) | (ProviderRefusal & {
45
15
  kind: 'undeclared';
46
- };
47
- export type SearchResult = (SearchHits & {
48
- coverage: SearchCoverage;
49
- }) | SearchPending | SearchUndeclared;
50
- export declare function undeclaredSearch(): SearchUndeclared;
51
- export type SearchedDocument = {
52
- room: string;
53
- path: string;
54
- type: string;
55
- fields: Readonly<Record<string, unknown>>;
56
- preamble: string;
57
- sections: Readonly<Record<string, string>>;
58
- };
59
- export type SearchedMessage = {
60
- conversation: string;
61
- identity: string;
62
- text: string;
63
- };
64
- export type SearchSource = {
65
- room(room: string): readonly string[];
66
- document(room: string, path: string): SearchedDocument | null;
67
- };
16
+ }) | Failure;
68
17
  export type SearchPlan = {
69
18
  text: string;
70
- documents: unknown;
71
- collection: boolean;
72
- conversations: readonly string[] | null;
73
- limit: number | null;
74
- };
75
- export type SearchIndex = {
76
- generation(): string;
77
- rooms(): ReadonlySet<string>;
78
- conversations(): ReadonlySet<string>;
79
- indexRoom(room: string): Promise<void>;
80
- indexMessages(conversation: string, messages: readonly SearchedMessage[], whole: boolean): void;
81
- forget(rooms: readonly string[]): void;
82
- changed(set: ChangeSet): void;
83
- changes(): number;
84
- caughtUp(): Promise<void>;
85
- search(plan: SearchPlan, documents: readonly {
86
- room: string;
87
- path: string;
88
- }[] | null, conversations: readonly string[], rooms: ReadonlySet<string> | null, selections: ReadonlyMap<string, readonly string[]> | null): SearchHits;
19
+ rooms: readonly string[] | null;
89
20
  };
90
21
  export declare function searchPlanOf(input: unknown): SearchPlan;
91
- export declare function createSearchIndex(source: SearchSource): SearchIndex;
92
22
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAExE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAAC;AAE7E,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,OAAO,GACP,CAAC,eAAe,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACxC,CAAC,eAAe,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GAC1C,OAAO,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAYvD"}
package/dist/search.js CHANGED
@@ -1,211 +1,14 @@
1
- import MiniSearch from 'minisearch';
2
- import { indexGeneration } from './identity.js';
3
- import { flag, invalid, known, limitOf, plain, } from './query.js';
4
- import { beneath } from './paths.js';
5
- import { inUnits, ROW_WEIGHT } from './turn.js';
6
- export function undeclaredSearch() {
7
- return {
8
- kind: 'undeclared',
9
- code: 'search-undeclared',
10
- fields: { name: 'local_search' },
11
- retryable: false,
12
- };
13
- }
14
- const FIELDS = ['fields', 'sections', 'preamble', 'path', 'text'];
15
- function documentId(room, path) {
16
- return JSON.stringify(['document', room, path]);
17
- }
18
- function messageId(conversation, identity) {
19
- return JSON.stringify(['message', conversation, identity]);
20
- }
21
- function scalars(value) {
22
- if (value === null || value === undefined)
23
- return [];
24
- if (Array.isArray(value))
25
- return value.flatMap(scalars);
26
- if (typeof value === 'object')
27
- return Object.values(value).flatMap(scalars);
28
- return [String(value)];
29
- }
1
+ import { invalid, known, plain } from './query.js';
30
2
  export function searchPlanOf(input) {
31
3
  if (!plain(input))
32
4
  invalid('search', 'expects a search object');
33
- known(input, ['text', 'documents', 'collection', 'conversations', 'limit'], '');
34
- if (typeof input.text !== 'string')
35
- invalid('text', 'expects text');
36
- const conversations = input.conversations;
37
- if (conversations !== undefined &&
38
- (!Array.isArray(conversations) || conversations.some((named) => typeof named !== 'string'))) {
39
- invalid('conversations', 'expects a list of conversations');
40
- }
41
- return {
42
- text: input.text,
43
- documents: input.documents,
44
- collection: flag(input.collection, 'collection'),
45
- conversations: conversations ?? null,
46
- limit: limitOf(input.limit),
47
- };
48
- }
49
- function byRoomThenPath(left, right) {
50
- if (left.room !== right.room)
51
- return left.room < right.room ? -1 : 1;
52
- if (left.path !== right.path)
53
- return left.path < right.path ? -1 : 1;
54
- return 0;
55
- }
56
- export function createSearchIndex(source) {
57
- const generation = indexGeneration();
58
- const index = new MiniSearch({ fields: FIELDS });
59
- const documents = new Map();
60
- const messages = new Map();
61
- const rooms = new Set();
62
- const filling = new Set();
63
- const conversations = new Set();
64
- const acquiring = new Set();
65
- const changedDocuments = new Map();
66
- let changes = 0;
67
- function addDocument(document) {
68
- const id = documentId(document.room, document.path);
69
- discard(id, documents);
70
- index.add({
71
- id,
72
- fields: scalars(document.fields).join('\n'),
73
- sections: Object.entries(document.sections)
74
- .map(([heading, text]) => `${heading}\n${text}`)
75
- .join('\n'),
76
- preamble: document.preamble,
77
- path: document.path,
78
- });
79
- documents.set(id, { room: document.room, path: document.path, type: document.type });
80
- }
81
- function addMessage(message) {
82
- const id = messageId(message.conversation, message.identity);
83
- discard(id, messages);
84
- index.add({ id, text: message.text });
85
- messages.set(id, { conversation: message.conversation, identity: message.identity });
86
- }
87
- function discard(id, entries) {
88
- if (entries.delete(id))
89
- index.discard(id);
90
- }
91
- function* pending() {
92
- for (;;) {
93
- const next = changedDocuments.entries().next();
94
- if (next.done === true)
95
- return;
96
- changedDocuments.delete(next.value[0]);
97
- yield next.value;
98
- }
99
- }
100
- let catching = null;
101
- function caughtUp() {
102
- if (catching !== null)
103
- return catching;
104
- const running = inUnits(pending(), ([id, { room, path }]) => {
105
- discard(id, documents);
106
- const document = source.document(room, path);
107
- if (document === null)
108
- return ROW_WEIGHT;
109
- addDocument(document);
110
- return Object.values(document.sections).reduce((total, text) => total + text.length, ROW_WEIGHT + document.preamble.length);
111
- });
112
- if (!(running instanceof Promise))
113
- return Promise.resolve();
114
- catching = running.finally(() => {
115
- catching = null;
116
- });
117
- return catching;
118
- }
119
- function ranked(text, entries, keep, limit, tie) {
120
- const found = index.search(text, {
121
- filter: ({ id }) => {
122
- const entry = entries.get(id);
123
- return entry !== undefined && keep(entry, id);
124
- },
125
- });
126
- if (tie !== null) {
127
- found.sort((left, right) => right.score - left.score ||
128
- tie(entries.get(left.id), entries.get(right.id)));
129
- }
130
- return (limit === null ? found : found.slice(0, limit)).map(({ id, score, match }) => ({
131
- ...entries.get(id),
132
- score,
133
- match,
134
- }));
135
- }
136
- return {
137
- generation: () => generation,
138
- rooms: () => rooms,
139
- conversations: () => conversations,
140
- async indexRoom(room) {
141
- if (rooms.has(room) || filling.has(room))
142
- return;
143
- filling.add(room);
144
- try {
145
- await inUnits(source.room(room), (path) => {
146
- const document = filling.has(room) ? source.document(room, path) : null;
147
- if (document === null)
148
- return ROW_WEIGHT;
149
- addDocument(document);
150
- return Object.values(document.sections).reduce((total, text) => total + text.length, ROW_WEIGHT + document.preamble.length);
151
- });
152
- if (filling.has(room))
153
- rooms.add(room);
154
- }
155
- finally {
156
- filling.delete(room);
157
- }
158
- },
159
- indexMessages(conversation, arriving, whole) {
160
- for (const message of arriving)
161
- addMessage(message);
162
- if (!whole) {
163
- acquiring.add(conversation);
164
- return;
165
- }
166
- acquiring.delete(conversation);
167
- conversations.add(conversation);
168
- },
169
- forget(leaving) {
170
- const gone = new Set(leaving);
171
- for (const [id, entry] of documents)
172
- if (gone.has(entry.room))
173
- discard(id, documents);
174
- for (const room of leaving) {
175
- rooms.delete(room);
176
- filling.delete(room);
177
- }
178
- },
179
- changed(set) {
180
- changes += 1;
181
- for (const { locator, path } of set.documents) {
182
- if (rooms.has(locator) || filling.has(locator)) {
183
- changedDocuments.set(documentId(locator, path), { room: locator, path });
184
- }
185
- }
186
- for (const { conversation, identity, text } of set.messages) {
187
- if (!conversations.has(conversation) && !acquiring.has(conversation))
188
- continue;
189
- const id = messageId(conversation, identity);
190
- if (text === null)
191
- discard(id, messages);
192
- else
193
- addMessage({ conversation, identity, text });
194
- }
195
- },
196
- changes: () => changes,
197
- caughtUp,
198
- search({ text, limit }, selected, named, within, selections) {
199
- const chosen = selected === null
200
- ? null
201
- : new Set(selected.map(({ room, path }) => documentId(room, path)));
202
- const asked = new Set(named);
203
- return {
204
- documents: ranked(text, documents, ({ room, path }, id) => (chosen === null || chosen.has(id)) &&
205
- (within === null || within.has(room)) &&
206
- !(selections?.get(room) ?? []).some((root) => beneath(root, path)), limit, byRoomThenPath).map(({ match, ...hit }) => ({ ...hit, matches: match })),
207
- messages: ranked(text, messages, ({ conversation }) => asked.has(conversation), limit, null).map(({ match, ...hit }) => ({ ...hit, matches: match })),
208
- };
209
- },
210
- };
5
+ known(input, ['text', 'rooms'], '');
6
+ if (typeof input.text !== 'string' || input.text.trim() === '')
7
+ invalid('text', 'expects words');
8
+ const rooms = input.rooms;
9
+ if (rooms !== undefined &&
10
+ (!Array.isArray(rooms) || rooms.some((named) => typeof named !== 'string'))) {
11
+ invalid('rooms', 'expects a list of Rooms');
12
+ }
13
+ return { text: input.text, rooms: rooms ?? null };
211
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAA4C,SAAS,EAAE,MAAM,YAAY,CAAC;AAGtF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AA0BjG,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoBtD"}
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAA4C,SAAS,EAAE,MAAM,YAAY,CAAC;AAGtF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAwCjG,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoBtD"}
package/dist/seed.js CHANGED
@@ -2,20 +2,34 @@ import { documentKey } from './rows.js';
2
2
  function plain(value) {
3
3
  return typeof value === 'object' && value !== null && !Array.isArray(value);
4
4
  }
5
+ function windowOf(value) {
6
+ const { next, total } = value;
7
+ if (next !== undefined && typeof next !== 'string')
8
+ return null;
9
+ if (total !== undefined && !Number.isSafeInteger(total))
10
+ return null;
11
+ return {
12
+ ...(next === undefined ? {} : { next }),
13
+ ...(total === undefined ? {} : { total: total }),
14
+ };
15
+ }
5
16
  function rowsOf(value) {
6
17
  if (!plain(value))
7
18
  return null;
19
+ const window = windowOf(value);
20
+ if (window === null)
21
+ return null;
8
22
  if (Array.isArray(value.groups)) {
9
23
  const groups = value.groups;
10
24
  return groups.every((group) => plain(group) && Array.isArray(group.key) && typeof group.count === 'number')
11
- ? { groups: groups }
25
+ ? { groups: groups, ...window }
12
26
  : null;
13
27
  }
14
28
  if (!Array.isArray(value.documents))
15
29
  return null;
16
30
  const documents = value.documents;
17
31
  return documents.every((document) => plain(document) && typeof document.room === 'string' && typeof document.path === 'string')
18
- ? { documents: documents }
32
+ ? { documents: documents, ...window }
19
33
  : null;
20
34
  }
21
35
  export function entrySeedOf(value) {
@@ -50,12 +64,12 @@ export function seededResult(seed) {
50
64
  };
51
65
  if ('groups' in seed.rows) {
52
66
  return {
53
- result: { groups: seed.rows.groups, coverage },
67
+ result: { ...seed.rows, coverage },
54
68
  keys: seed.rows.groups.map((_group, index) => index),
55
69
  };
56
70
  }
57
71
  return {
58
- result: { documents: seed.rows.documents, coverage },
72
+ result: { ...seed.rows, coverage },
59
73
  keys: seed.rows.documents.map((document) => documentKey(document.room, document.path)),
60
74
  };
61
75
  }
package/dist/shared.d.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  export type Paths<V> = Readonly<Record<string, V>>;
2
- type Weigh<V> = (key: string, value: V) => number;
2
+ export declare function entriesIn<V>(map: Paths<V>): Generator<readonly [string, V]>;
3
+ export declare function sortedKeys(map: Paths<unknown>): Generator<number, readonly string[], void>;
4
+ export declare function sorting(keys: Iterable<string>): Generator<number, readonly string[], void>;
5
+ export declare function sharing<V>(map: Paths<V>): Generator<number, Paths<V>, void>;
3
6
  export declare function shared<V>(map: Paths<V>): Paths<V>;
4
7
  export declare function patched<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Paths<V>;
5
- export declare function tally<V>(map: Paths<V>, weigh: Weigh<V>): number;
8
+ export declare function patching<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Generator<number, Paths<V>, void>;
6
9
  export declare function sizeOf<V>(map: Paths<V>): number;
10
+ export declare function differences<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): Generator<number, ReadonlySet<string>, void>;
7
11
  export declare function differing<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): ReadonlySet<string>;
8
12
  export declare function drafted<V>(base: Paths<V>): Record<string, V>;
9
13
  export declare function settled<V>(draft: Record<string, V>): Paths<V>;
10
- export {};
14
+ export declare function settling<V>(draft: Record<string, V>): Generator<number, Paths<V>, void>;
11
15
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAkBnD,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;AA6LlD,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAEjD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,KAAK,CAAC,CAAC,CAAC,CA8BV;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAY/D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAE/C;AAuCD,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,WAAW,CAAC,MAAM,CAAC,CAcrB;AAMD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAiD5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAS7D"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AA+LnD,wBAAiB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAO5E;AAuCD,wBAAiB,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,CAE3F;AAED,wBAAiB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,CAoB3F;AAED,wBAAiB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAE5E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAEjD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,KAAK,CAAC,CAAC,CAAC,CAEV;AAED,wBAAiB,QAAQ,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EACnC,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAM,GAC7B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAoBnC;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAE/C;AA8CD,wBAAiB,WAAW,CAAC,CAAC,EAC5B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAkB9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,IAAI,GAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAmB,GAC/C,WAAW,CAAC,MAAM,CAAC,CAErB;AAMD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAiD5D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAE7D;AAED,wBAAiB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAUxF"}