@agentshouse/mdruntime 0.1.0-c1ffd2bc60355 → 0.1.0-c219104d36ac5

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 (178) hide show
  1. package/README.md +10 -8
  2. package/dist/adapter.d.ts +25 -7
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +2 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +28 -4
  7. package/dist/bootstrap.d.ts +8 -8
  8. package/dist/bootstrap.d.ts.map +1 -1
  9. package/dist/bootstrap.js +90 -84
  10. package/dist/chain.d.ts.map +1 -1
  11. package/dist/chain.js +7 -3
  12. package/dist/client.d.ts +4 -4
  13. package/dist/client.d.ts.map +1 -1
  14. package/dist/client.js +52 -5
  15. package/dist/collection.d.ts +5 -0
  16. package/dist/collection.d.ts.map +1 -1
  17. package/dist/collection.js +23 -2
  18. package/dist/compile.d.ts.map +1 -1
  19. package/dist/compile.js +74 -24
  20. package/dist/connection.d.ts +5 -2
  21. package/dist/connection.d.ts.map +1 -1
  22. package/dist/connection.js +654 -359
  23. package/dist/conversation.d.ts +5 -5
  24. package/dist/conversation.d.ts.map +1 -1
  25. package/dist/conversation.js +126 -33
  26. package/dist/entry.d.ts +1 -0
  27. package/dist/entry.d.ts.map +1 -1
  28. package/dist/entry.js +1 -1
  29. package/dist/file.d.ts +2 -11
  30. package/dist/file.d.ts.map +1 -1
  31. package/dist/file.js +6 -4
  32. package/dist/fulltext.d.ts.map +1 -1
  33. package/dist/fulltext.js +8 -6
  34. package/dist/host.d.ts.map +1 -1
  35. package/dist/host.js +4 -2
  36. package/dist/index.d.ts +3 -4
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/live.d.ts.map +1 -1
  40. package/dist/live.js +2 -1
  41. package/dist/media.d.ts +8 -0
  42. package/dist/media.d.ts.map +1 -0
  43. package/dist/media.js +208 -0
  44. package/dist/memory.d.ts +2 -2
  45. package/dist/memory.d.ts.map +1 -1
  46. package/dist/memory.js +47 -9
  47. package/dist/model.d.ts +6 -0
  48. package/dist/model.d.ts.map +1 -1
  49. package/dist/model.js +7 -1
  50. package/dist/observation.d.ts +1 -0
  51. package/dist/observation.d.ts.map +1 -1
  52. package/dist/observation.js +1 -1
  53. package/dist/outcome.d.ts +13 -2
  54. package/dist/outcome.d.ts.map +1 -1
  55. package/dist/outcome.js +16 -2
  56. package/dist/paths.d.ts +1 -0
  57. package/dist/paths.d.ts.map +1 -1
  58. package/dist/paths.js +4 -0
  59. package/dist/query.d.ts +6 -0
  60. package/dist/query.d.ts.map +1 -1
  61. package/dist/reach.d.ts +8 -1
  62. package/dist/reach.d.ts.map +1 -1
  63. package/dist/reach.js +51 -17
  64. package/dist/readiness.d.ts +1 -2
  65. package/dist/readiness.d.ts.map +1 -1
  66. package/dist/reads.d.ts.map +1 -1
  67. package/dist/reads.js +10 -19
  68. package/dist/refresh.d.ts.map +1 -1
  69. package/dist/refresh.js +1 -5
  70. package/dist/replica.d.ts +3 -4
  71. package/dist/replica.d.ts.map +1 -1
  72. package/dist/replica.js +4 -3
  73. package/dist/room-draft.d.ts +17 -2
  74. package/dist/room-draft.d.ts.map +1 -1
  75. package/dist/room-draft.js +40 -6
  76. package/dist/rows.d.ts +15 -6
  77. package/dist/rows.d.ts.map +1 -1
  78. package/dist/rows.js +102 -74
  79. package/dist/save.d.ts +2 -0
  80. package/dist/save.d.ts.map +1 -1
  81. package/dist/save.js +11 -5
  82. package/dist/status.d.ts +5 -0
  83. package/dist/status.d.ts.map +1 -1
  84. package/dist/status.js +3 -1
  85. package/dist/store.d.ts +16 -19
  86. package/dist/store.d.ts.map +1 -1
  87. package/dist/store.js +23 -29
  88. package/dist/stored.d.ts +9 -19
  89. package/dist/stored.d.ts.map +1 -1
  90. package/dist/stored.js +197 -196
  91. package/dist/tables.d.ts +14 -16
  92. package/dist/tables.d.ts.map +1 -1
  93. package/dist/tables.js +6 -9
  94. package/dist/wire.d.ts +8 -4
  95. package/dist/wire.d.ts.map +1 -1
  96. package/dist/wire.js +2 -1
  97. package/dist/words.d.ts.map +1 -1
  98. package/dist/words.js +8 -2
  99. package/package.json +10 -17
  100. package/AGENTS.md +0 -317
  101. package/dist/chat/acts.d.ts +0 -33
  102. package/dist/chat/acts.d.ts.map +0 -1
  103. package/dist/chat/acts.js +0 -36
  104. package/dist/chat/context.d.ts +0 -3
  105. package/dist/chat/context.d.ts.map +0 -1
  106. package/dist/chat/context.js +0 -10
  107. package/dist/chat/earlier.d.ts +0 -10
  108. package/dist/chat/earlier.d.ts.map +0 -1
  109. package/dist/chat/earlier.js +0 -54
  110. package/dist/chat/house.d.ts +0 -25
  111. package/dist/chat/house.d.ts.map +0 -1
  112. package/dist/chat/house.js +0 -38
  113. package/dist/chat/input.d.ts +0 -11
  114. package/dist/chat/input.d.ts.map +0 -1
  115. package/dist/chat/input.js +0 -92
  116. package/dist/chat/kit.d.ts +0 -61
  117. package/dist/chat/kit.d.ts.map +0 -1
  118. package/dist/chat/kit.js +0 -123
  119. package/dist/chat/lasting.d.ts +0 -6
  120. package/dist/chat/lasting.d.ts.map +0 -1
  121. package/dist/chat/lasting.js +0 -19
  122. package/dist/chat/list.d.ts +0 -28
  123. package/dist/chat/list.d.ts.map +0 -1
  124. package/dist/chat/list.js +0 -103
  125. package/dist/chat/markdown.d.ts +0 -20
  126. package/dist/chat/markdown.d.ts.map +0 -1
  127. package/dist/chat/markdown.js +0 -229
  128. package/dist/chat/message.d.ts +0 -7
  129. package/dist/chat/message.d.ts.map +0 -1
  130. package/dist/chat/message.js +0 -254
  131. package/dist/chat/messages.d.ts +0 -35
  132. package/dist/chat/messages.d.ts.map +0 -1
  133. package/dist/chat/messages.js +0 -210
  134. package/dist/chat/name.d.ts +0 -7
  135. package/dist/chat/name.d.ts.map +0 -1
  136. package/dist/chat/name.js +0 -37
  137. package/dist/chat/opened.d.ts +0 -12
  138. package/dist/chat/opened.d.ts.map +0 -1
  139. package/dist/chat/opened.js +0 -19
  140. package/dist/chat/overlay.d.ts +0 -32
  141. package/dist/chat/overlay.d.ts.map +0 -1
  142. package/dist/chat/overlay.js +0 -103
  143. package/dist/chat/parts.d.ts +0 -58
  144. package/dist/chat/parts.d.ts.map +0 -1
  145. package/dist/chat/parts.js +0 -120
  146. package/dist/chat/pieces.d.ts +0 -62
  147. package/dist/chat/pieces.d.ts.map +0 -1
  148. package/dist/chat/pieces.js +0 -1110
  149. package/dist/chat/process.d.ts +0 -20
  150. package/dist/chat/process.d.ts.map +0 -1
  151. package/dist/chat/process.js +0 -32
  152. package/dist/chat/provider.d.ts +0 -70
  153. package/dist/chat/provider.d.ts.map +0 -1
  154. package/dist/chat/provider.js +0 -635
  155. package/dist/chat/question.d.ts +0 -9
  156. package/dist/chat/question.d.ts.map +0 -1
  157. package/dist/chat/question.js +0 -69
  158. package/dist/chat/questions.d.ts +0 -31
  159. package/dist/chat/questions.d.ts.map +0 -1
  160. package/dist/chat/questions.js +0 -111
  161. package/dist/chat/read.d.ts +0 -5
  162. package/dist/chat/read.d.ts.map +0 -1
  163. package/dist/chat/read.js +0 -13
  164. package/dist/chat/ready.d.ts +0 -37
  165. package/dist/chat/ready.d.ts.map +0 -1
  166. package/dist/chat/ready.js +0 -93
  167. package/dist/chat/room-file.d.ts +0 -8
  168. package/dist/chat/room-file.d.ts.map +0 -1
  169. package/dist/chat/room-file.js +0 -72
  170. package/dist/chat/steady.d.ts +0 -3
  171. package/dist/chat/steady.d.ts.map +0 -1
  172. package/dist/chat/steady.js +0 -26
  173. package/dist/chat/style.d.ts +0 -4
  174. package/dist/chat/style.d.ts.map +0 -1
  175. package/dist/chat/style.js +0 -307
  176. package/dist/chat.d.ts +0 -15
  177. package/dist/chat.d.ts.map +0 -1
  178. package/dist/chat.js +0 -8
package/dist/rows.js CHANGED
@@ -16,12 +16,44 @@ export function pathOfKey(key) {
16
16
  export function markdownPath(path) {
17
17
  return path.endsWith('.md');
18
18
  }
19
- export function settingsTextPath(path) {
20
- return /^settings\/.+\.ya?ml$/u.test(path);
21
- }
22
19
  export function folderOf(path) {
23
20
  return path.slice(0, Math.max(path.lastIndexOf('/'), 0));
24
21
  }
22
+ export function placedOf(pointer, reach) {
23
+ const [first = '', ...rest] = pointer.split('/').slice(1);
24
+ const keys = [first];
25
+ const gaps = [[]];
26
+ for (const segment of rest) {
27
+ if (ARRAY_INDEX.test(segment)) {
28
+ gaps.at(-1).push(segment);
29
+ continue;
30
+ }
31
+ keys.push(segment);
32
+ gaps.push([]);
33
+ }
34
+ const places = gaps
35
+ .map((gap, at) => {
36
+ const open = at < gaps.length - 1 ? reach !== 'exact' : reach === 'link';
37
+ return `/${gap.map((number) => `[.:]${number}`).join('')}.${open ? '*' : ''}`;
38
+ })
39
+ .join('');
40
+ return {
41
+ keys: keys.map((key) => `/${key}`).join(''),
42
+ places,
43
+ glob: /[[*]/u.test(places),
44
+ };
45
+ }
46
+ function placesOf({ done, head, tail }) {
47
+ return `${done}/${head}${tail}.`;
48
+ }
49
+ function throughOf(keys, places) {
50
+ const gaps = places.split('/').slice(1);
51
+ return keys
52
+ .split('/')
53
+ .slice(1)
54
+ .map((key, at) => `/${key}${gaps[at].replace(/\.\d*/gu, '').replaceAll(':', '/')}`)
55
+ .join('');
56
+ }
25
57
  function plainObject(value) {
26
58
  return typeof value === 'object' && value !== null && !Array.isArray(value);
27
59
  }
@@ -50,75 +82,59 @@ function scalarOf(value) {
50
82
  return JSON.stringify(value);
51
83
  return null;
52
84
  }
53
- function held(reading, form, value, single) {
54
- const at = reading.reached.get(form) ?? 0;
55
- reading.reached.set(form, at + 1);
56
- const kind = kindOf(value);
85
+ function held(reading, keys, places, value) {
57
86
  reading.values.push({
58
- form,
59
- held: at,
87
+ keys,
88
+ places,
60
89
  item: -1,
61
- kind,
90
+ kind: kindOf(value),
62
91
  value: scalarOf(value),
63
92
  size: Array.isArray(value) ? value.length : null,
64
- single,
65
93
  });
66
94
  if (!Array.isArray(value))
67
95
  return;
68
96
  value.forEach((item, index) => {
69
97
  const itemKind = kindOf(item);
70
98
  reading.values.push({
71
- form,
72
- held: at,
99
+ keys,
100
+ places,
73
101
  item: index,
74
102
  kind: itemKind,
75
103
  value: itemKind === 'array' ? null : scalarOf(item),
76
104
  size: null,
77
- single: false,
78
105
  });
79
106
  });
80
107
  }
81
- function record(reading, node, forms, exact) {
108
+ function record(reading, node, at) {
82
109
  const value = Array.isArray(node)
83
- ? node.map((item, index) => compared(reading, `${exact}/${index}`, item))
84
- : compared(reading, exact, node);
85
- for (const form of forms) {
86
- if (form.pending)
87
- continue;
88
- held(reading, form.text, value, !form.through && value !== undefined && !plainObject(value));
89
- }
90
- if (Array.isArray(node) || plainObject(node) || !reading.references.has(exact))
91
- return;
92
- const found = compared(reading, exact, node);
93
- if (typeof found !== 'string')
110
+ ? node.map((item, index) => compared(reading, `${at.exact}/${index}`, item))
111
+ : compared(reading, at.exact, node);
112
+ const places = placesOf(at);
113
+ held(reading, at.keys, places, value);
114
+ if (typeof value !== 'string' || !reading.references.has(at.exact))
94
115
  return;
95
- const field = forms
96
- .map((form) => form.text)
97
- .reduce((left, right) => (right.length < left.length ? right : left));
98
- const known = reading.targets.get(`${field}\u0000${found}`);
99
- const kept = known ?? { field, target: found, forms: new Set() };
100
- for (const form of forms)
101
- kept.forms.add(form.text);
102
- reading.targets.set(`${field}\u0000${found}`, kept);
103
- }
104
- function walk(reading, node, forms, exact) {
105
- record(reading, node, forms, exact);
116
+ reading.links.push({
117
+ kind: 'field',
118
+ keys: at.keys,
119
+ places,
120
+ target: value,
121
+ field: throughOf(at.keys, places),
122
+ });
123
+ }
124
+ function walk(reading, node, at) {
125
+ record(reading, node, at);
106
126
  if (Array.isArray(node)) {
107
- node.forEach((item, index) => walk(reading, item, forms.flatMap((form) => [
108
- ...(form.pending
109
- ? []
110
- : [{ text: `${form.text}/${index}`, through: form.through, pending: false }]),
111
- { text: form.text, through: true, pending: true },
112
- ]), `${exact}/${index}`));
127
+ node.forEach((item, index) => walk(reading, item, { ...at, tail: `${at.tail}.${index}`, exact: `${at.exact}/${index}` }));
113
128
  return;
114
129
  }
115
130
  if (!plainObject(node))
116
131
  return;
117
132
  for (const [key, value] of Object.entries(node)) {
118
133
  const segment = escapePointer(key);
119
- walk(reading, value, forms.flatMap((form) => form.pending && ARRAY_INDEX.test(key)
120
- ? []
121
- : [{ text: `${form.text}/${segment}`, through: form.through, pending: false }]), `${exact}/${segment}`);
134
+ const exact = `${at.exact}/${segment}`;
135
+ walk(reading, value, ARRAY_INDEX.test(segment)
136
+ ? { ...at, head: `${at.head}${at.tail.replaceAll('.', ':')}:${segment}`, tail: '', exact }
137
+ : { keys: `${at.keys}/${segment}`, done: placesOf(at), head: '', tail: '', exact });
122
138
  }
123
139
  }
124
140
  function bodyTargets(path, content) {
@@ -128,7 +144,7 @@ function bodyTargets(path, content) {
128
144
  if (seen.has(reached))
129
145
  continue;
130
146
  seen.add(reached);
131
- found.push({ kind: 'body', form: '', target: reached, field: '' });
147
+ found.push({ kind: 'body', keys: '', places: '', target: reached, field: '' });
132
148
  }
133
149
  return found;
134
150
  }
@@ -138,49 +154,61 @@ function typedRows(path, content, document, composition) {
138
154
  path,
139
155
  references: new Set(definition === undefined ? [] : references(document, definition).map((one) => one.pointer)),
140
156
  values: [],
141
- reached: new Map(),
142
- targets: new Map(),
157
+ links: [],
143
158
  };
144
159
  for (const [name, value] of Object.entries(document.fields)) {
145
160
  const segment = escapePointer(name);
146
- walk(reading, value, [{ text: `/${segment}`, through: false, pending: false }], `/${segment}`);
147
- }
148
- const links = [];
149
- for (const { field, target: reached, forms } of reading.targets.values()) {
150
- for (const form of [...forms].sort()) {
151
- links.push({ kind: 'field', form, target: reached, field });
152
- }
161
+ walk(reading, value, {
162
+ keys: `/${segment}`,
163
+ done: '',
164
+ head: '',
165
+ tail: '',
166
+ exact: `/${segment}`,
167
+ });
153
168
  }
169
+ const links = reading.links;
154
170
  if (definition !== undefined) {
155
171
  const sectioned = new Set();
156
172
  for (const { target: reached } of sectionReferences(path, content, definition)) {
157
173
  if (reached === null || sectioned.has(reached))
158
174
  continue;
159
175
  sectioned.add(reached);
160
- links.push({ kind: 'section', form: '', target: reached, field: '' });
176
+ links.push({ kind: 'section', keys: '', places: '', target: reached, field: '' });
161
177
  }
162
178
  }
163
179
  return { values: reading.values, links: [...links, ...bodyTargets(path, content)] };
164
180
  }
165
- export function derived(path, content, composition) {
181
+ function read(path, content) {
166
182
  const folder = folderOf(path);
167
- const unread = { values: [], links: [], fields: null, folder, type: null };
168
- if (content === null)
169
- return { ...unread, declared: null, queried: true };
170
- const read = parseFrontmatter(content, path);
171
- const declared = read.ok ? (read.frontmatter.type ?? 'any') : null;
172
- if (!markdownPath(path)) {
173
- return { ...unread, declared, queried: true, links: bodyTargets(path, content) };
183
+ const unread = { fields: null, folder, type: null };
184
+ if (content === null) {
185
+ return { described: { ...unread, declared: null, queried: true }, document: null };
174
186
  }
175
- if (!read.ok)
176
- return { ...unread, declared, queried: false };
177
- const document = read.frontmatter;
187
+ const parsed = parseFrontmatter(content, path);
188
+ const declared = parsed.ok ? (parsed.frontmatter.type ?? 'any') : null;
189
+ if (!markdownPath(path) || !parsed.ok) {
190
+ return { described: { ...unread, declared, queried: !markdownPath(path) }, document: null };
191
+ }
192
+ const document = parsed.frontmatter;
178
193
  return {
179
- type: document.type ?? 'any',
180
- declared,
181
- queried: true,
182
- folder,
183
- fields: JSON.stringify(document.fields),
184
- ...typedRows(path, content, document, composition),
194
+ described: {
195
+ type: document.type ?? 'any',
196
+ declared,
197
+ queried: true,
198
+ folder,
199
+ fields: JSON.stringify(document.fields),
200
+ },
201
+ document,
185
202
  };
186
203
  }
204
+ export function described(path, content) {
205
+ return read(path, content).described;
206
+ }
207
+ export function derived(path, content, composition) {
208
+ const { described: columns, document } = read(path, content);
209
+ if (document !== null) {
210
+ return { ...columns, ...typedRows(path, content, document, composition) };
211
+ }
212
+ const links = content === null || markdownPath(path) ? [] : bodyTargets(path, content);
213
+ return { ...columns, values: [], links };
214
+ }
package/dist/save.d.ts CHANGED
@@ -21,6 +21,7 @@ export type SaveInput = {
21
21
  providerOwnedPaths: readonly string[];
22
22
  providerLimits: readonly ProviderLimit[];
23
23
  visible: VisibleLayer;
24
+ folders: ReadonlySet<string>;
24
25
  handle: string;
25
26
  changes: readonly Change[];
26
27
  bases: readonly Precondition[];
@@ -75,6 +76,7 @@ export type MoveSide = {
75
76
  operations: OperationScopes;
76
77
  providerOwnedPaths: readonly string[];
77
78
  visible: VisibleLayer;
79
+ folders: ReadonlySet<string>;
78
80
  queued: ReadonlySet<string>;
79
81
  unmodeled: boolean;
80
82
  validate: Validator;
@@ -1 +1 @@
1
- {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../src/save.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../src/save.ts"],"names":[],"mappings":"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"}
package/dist/save.js CHANGED
@@ -4,7 +4,7 @@ import { immutable, leaving, queuedFile, departure, } from './change.js';
4
4
  import { collectionOf, documentsOf, governing, } from './collection.js';
5
5
  import { changeBatchIdentity } from './identity.js';
6
6
  import { overlaying } from './overlay.js';
7
- import { covered, normalize } from './paths.js';
7
+ import { ancestors, covered, normalize } from './paths.js';
8
8
  import { sorting } from './shared.js';
9
9
  import { paced, ROW_WEIGHT, stepped } from './turn.js';
10
10
  import { validatedCollection } from './validation.js';
@@ -329,6 +329,7 @@ function guard(changes, input, removing) {
329
329
  add: (path) => void overridden.set(path, true),
330
330
  delete: (path) => void overridden.set(path, false),
331
331
  };
332
+ const occupied = (path) => input.folders.has(path) ? path : (ancestors(path).find((one) => existing.has(one)) ?? null);
332
333
  for (const [index, change] of changes.entries()) {
333
334
  for (const path of affected(change)) {
334
335
  const normalized = normalize(path);
@@ -342,8 +343,9 @@ function guard(changes, input, removing) {
342
343
  return refuse(`${operation}-grant`, normalized);
343
344
  }
344
345
  if (change.kind === 'create' || change.kind === 'arrival') {
345
- if (existing.has(change.path))
346
- return refuse('path-collision', change.path);
346
+ const taken = existing.has(change.path) ? change.path : occupied(change.path);
347
+ if (taken !== null)
348
+ return refuse('path-collision', taken);
347
349
  existing.add(change.path);
348
350
  continue;
349
351
  }
@@ -353,6 +355,9 @@ function guard(changes, input, removing) {
353
355
  input.bases.some((base) => base.kind === 'absent' && base.path === change.path))) {
354
356
  return refuse('path-collision', change.path);
355
357
  }
358
+ const taken = occupied(change.path);
359
+ if (taken !== null)
360
+ return refuse('path-collision', taken);
356
361
  if (!input.local &&
357
362
  existing.has(change.path) &&
358
363
  input.visible.revisions[departure(changes, index)] === undefined) {
@@ -364,8 +369,9 @@ function guard(changes, input, removing) {
364
369
  if (change.kind === 'move') {
365
370
  if (!existing.has(change.path))
366
371
  return refuse('path-absent', change.path);
367
- if (existing.has(change.to))
368
- return refuse('path-collision', change.to);
372
+ const taken = existing.has(change.to) ? change.to : occupied(change.to);
373
+ if (taken !== null)
374
+ return refuse('path-collision', taken);
369
375
  if (unrevised(input, change.path)) {
370
376
  return refuse('unknown-revision', change.path);
371
377
  }
package/dist/status.d.ts CHANGED
@@ -9,11 +9,16 @@ export type AttentionEntry = {
9
9
  room: string;
10
10
  refusal: ProviderRefusal;
11
11
  };
12
+ export type UnsentChange = {
13
+ room: string;
14
+ path: string;
15
+ };
12
16
  export type SyncStatus = {
13
17
  state: Open<'pending' | 'syncing' | 'synced'>;
14
18
  lastCompleted: string | null;
15
19
  providerUnreachable: boolean;
16
20
  attentionRequired: readonly AttentionEntry[];
21
+ unsent: readonly UnsentChange[];
17
22
  reset: string | null;
18
23
  };
19
24
  export type CycleProgress = {
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,UAMtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAErD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAQhE"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,UAOtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAErD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAShE"}
package/dist/status.js CHANGED
@@ -3,6 +3,7 @@ export const STARTING = {
3
3
  lastCompleted: null,
4
4
  providerUnreachable: false,
5
5
  attentionRequired: [],
6
+ unsent: [],
6
7
  reset: null,
7
8
  };
8
9
  export function transferring(status) {
@@ -16,5 +17,6 @@ export function same(one, other) {
16
17
  one.lastCompleted === other.lastCompleted &&
17
18
  one.providerUnreachable === other.providerUnreachable &&
18
19
  one.reset === other.reset &&
19
- JSON.stringify(one.attentionRequired) === JSON.stringify(other.attentionRequired));
20
+ JSON.stringify(one.attentionRequired) === JSON.stringify(other.attentionRequired) &&
21
+ JSON.stringify(one.unsent) === JSON.stringify(other.unsent));
20
22
  }
package/dist/store.d.ts CHANGED
@@ -1,34 +1,29 @@
1
- import type { BootstrapInventory, Capability, KeptReceipt, Member, ProviderLimit } from './adapter.js';
1
+ import type { BootstrapInventory, Capability, KeptReceipt, ListedConversation, Member, ProviderLimit } from './adapter.js';
2
2
  import type { ChangeBatch } from './change.js';
3
- import type { Composition } from './collection.js';
3
+ import { type Composition } from './collection.js';
4
4
  import type { Plan } from './query.js';
5
5
  import type { ReplicaRecord } from './replica.js';
6
6
  import type { Submission } from './outcome.js';
7
7
  import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
8
- import type { ModelState } from './model.js';
8
+ import type { ModelState, StoredModel } from './model.js';
9
9
  import type { SearchWindow } from './search.js';
10
10
  import type { CommittedWrite, ConversationWrite, CountedRoom, HeldConversation, HeldEntry, MessageWindow, QueryAnswer, QueryRoom, Referrer, RoomCommit, RuntimeDatabase, SearchAsk, StoredEntry, StoredFile, TypedEntry, View, Walked } from './tables.js';
11
11
  export type { ConversationWrite, HeldConversation, MessageWindow } from './tables.js';
12
- export type TransferWriting = {
13
- readonly token: string | null;
14
- readonly written: number;
15
- };
16
12
  export type TransferRecord = {
17
13
  readonly locator: string;
18
14
  readonly transfer: string;
19
15
  readonly selection: string;
20
16
  readonly from: string;
21
17
  readonly last: string;
22
- readonly pageToken: string | null;
23
- readonly writing: TransferWriting | null;
24
- readonly inventory: BootstrapInventory | null;
25
18
  readonly done: BootstrapInventory;
26
19
  readonly models: {
27
20
  readonly collection: ModelState;
28
- readonly selection: ModelState;
29
21
  };
30
22
  readonly key: number | null;
31
23
  };
24
+ export type StoredReplica = Omit<ReplicaRecord, 'model'> & {
25
+ readonly model: StoredModel;
26
+ };
32
27
  export type PendingState = {
33
28
  readonly drafts: readonly SavedDraft[];
34
29
  readonly submission: Submission;
@@ -88,8 +83,7 @@ export type RefreshedPage = StagedPage & {
88
83
  readonly folderRemovals: readonly string[];
89
84
  };
90
85
  export type Opened = {
91
- readonly rooms: ReadonlyMap<string, ReplicaRecord>;
92
- readonly transfers: ReadonlyMap<string, TransferRecord>;
86
+ readonly rooms: ReadonlyMap<string, StoredReplica>;
93
87
  readonly unindexed: ReadonlySet<number>;
94
88
  readonly overlaid: ReadonlyMap<number, ReadonlySet<string>>;
95
89
  readonly erasing: boolean;
@@ -100,6 +94,7 @@ export type Opened = {
100
94
  readonly member: Member | null;
101
95
  readonly targets: Readonly<Record<string, TargetRecord>>;
102
96
  readonly presentation: readonly PresentationRecord[];
97
+ readonly conversationList: readonly ListedConversation[] | null;
103
98
  };
104
99
  export type Commit = {
105
100
  readonly rooms: readonly RoomCommit[];
@@ -121,19 +116,21 @@ export type RuntimeStore = {
121
116
  readonly path: string;
122
117
  readonly revision: string;
123
118
  }[]>;
119
+ folders(key: number, view: View, paths: readonly string[]): Promise<readonly string[]>;
124
120
  typedWithin(key: number, view: View, roots: readonly string[], within: boolean): Promise<boolean>;
125
121
  search(ask: SearchAsk): Promise<SearchWindow>;
126
- stage(record: TransferRecord, composition: Composition, page: StagedPage, written?: string): Promise<number | null>;
127
- transferPart(locator: string, token: string): Promise<Uint8Array | null>;
128
- keepPart(locator: string, token: string, part: Uint8Array): Promise<void>;
129
- refresh(key: number, page: RefreshedPage): Promise<void>;
122
+ stage(record: TransferRecord, composition: Composition, page: StagedPage): Promise<number | null>;
123
+ refresh(key: number, composition: Composition, page: RefreshedPage): Promise<void>;
130
124
  unrefresh(key: number): Promise<void>;
131
125
  commit(commit: Commit): Promise<CommittedWrite>;
132
126
  fence(locators: readonly string[]): Promise<void>;
133
127
  erase(locator: string | null, limit: number): Promise<boolean>;
134
- abandon(locator: string, kept?: boolean): Promise<number | null>;
128
+ abandon(locator: string): Promise<void>;
135
129
  release(key: number): Promise<void>;
136
- rederive(key: number, limit: number): Promise<boolean>;
130
+ rederive(key: number, composition: Composition, bytes: number, ms: number, floor: number): Promise<{
131
+ readonly done: boolean;
132
+ readonly text: number;
133
+ }>;
137
134
  fact(name: string, value: unknown): Promise<void>;
138
135
  queues(): Promise<readonly QueueRecord[]>;
139
136
  submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { composedOf } from './collection.js';
1
2
  import { binaryLocalId } from './identity.js';
2
3
  const FILE = '\u0000file';
3
4
  function batchFiles(batch) {
@@ -120,7 +121,7 @@ export function openRuntimeStore(fenced, authored) {
120
121
  return {
121
122
  async opened() {
122
123
  const held = await authored.ask({ kind: 'replica.open' });
123
- const unindexed = new Set(held.keys.flatMap(({ key, rederiving }) => (rederiving === null ? [] : [key])));
124
+ const unindexed = new Set(held.keys.flatMap(({ key, rederiving, searching }) => rederiving === null && searching === null ? [] : [key]));
124
125
  const overlaid = new Map();
125
126
  for (const { key, path } of held.overlaid) {
126
127
  const paths = overlaid.get(key) ?? new Set();
@@ -134,12 +135,6 @@ export function openRuntimeStore(fenced, authored) {
134
135
  locator,
135
136
  { ...JSON.parse(record), key },
136
137
  ])),
137
- transfers: new Map(held.transfers
138
- .filter(({ locator }) => !fenced(locator))
139
- .map(({ locator, key, record }) => [
140
- locator,
141
- { ...JSON.parse(record), key },
142
- ])),
143
138
  unindexed,
144
139
  overlaid,
145
140
  erasing: held.erasing.length > 0,
@@ -153,6 +148,7 @@ export function openRuntimeStore(fenced, authored) {
153
148
  app,
154
149
  value: JSON.parse(value),
155
150
  })),
151
+ conversationList: json(held.facts.conversationList, null),
156
152
  };
157
153
  },
158
154
  counts(rooms) {
@@ -179,42 +175,33 @@ export function openRuntimeStore(fenced, authored) {
179
175
  files(key, view, after, limit) {
180
176
  return authored.ask({ kind: 'replica.files', key, view, after, limit });
181
177
  },
178
+ folders(key, view, paths) {
179
+ return authored.ask({ kind: 'replica.folders', key, view, paths });
180
+ },
182
181
  typedWithin(key, view, roots, within) {
183
182
  return authored.ask({ kind: 'replica.typedWithin', key, view, roots, within });
184
183
  },
185
184
  search(ask) {
186
185
  return authored.ask({ kind: 'replica.search', ...ask });
187
186
  },
188
- async stage(record, composition, page, written) {
187
+ async stage(record, composition, page) {
189
188
  if (fenced(record.locator))
190
189
  return null;
191
- const { key, ...kept } = record;
192
190
  return authored.ask({
193
191
  kind: 'replica.stage',
194
192
  locator: record.locator,
195
193
  transfer: record.transfer,
196
- record: JSON.stringify(kept),
197
- key,
198
- composition,
194
+ key: record.key,
195
+ fingerprint: composedOf(composition).fingerprint,
199
196
  entries: page.entries,
200
197
  folders: page.folders,
201
- ...(written === undefined ? {} : { written }),
202
198
  });
203
199
  },
204
- async transferPart(locator, token) {
205
- if (fenced(locator))
206
- return null;
207
- return authored.ask({ kind: 'replica.transferPart', locator, token });
208
- },
209
- async keepPart(locator, token, part) {
210
- if (fenced(locator))
211
- return;
212
- await authored.ask({ kind: 'replica.keepPart', locator, token, part });
213
- },
214
- async refresh(key, page) {
200
+ async refresh(key, composition, page) {
215
201
  await authored.ask({
216
202
  kind: 'replica.refresh',
217
203
  key,
204
+ composed: composedOf(composition),
218
205
  entries: page.entries,
219
206
  removals: page.removals,
220
207
  folders: page.folders,
@@ -253,17 +240,24 @@ export function openRuntimeStore(fenced, authored) {
253
240
  async erase(locator, limit) {
254
241
  return (await authored.ask({ kind: 'replica.erase', locator, limit })).remaining;
255
242
  },
256
- async abandon(locator, kept = false) {
243
+ async abandon(locator) {
257
244
  if (fenced(locator))
258
- return null;
259
- return authored.ask({ kind: 'replica.abandon', locator, kept });
245
+ return;
246
+ await authored.ask({ kind: 'replica.abandon', locator });
260
247
  },
261
248
  async release(key) {
262
249
  await authored.ask({ kind: 'replica.release', key });
263
250
  },
264
- async rederive(key, limit) {
251
+ async rederive(key, composition, bytes, ms, floor) {
265
252
  change(key);
266
- return (await authored.ask({ kind: 'replica.rederive', key, limit })).done;
253
+ return authored.ask({
254
+ kind: 'replica.rederive',
255
+ key,
256
+ composed: composedOf(composition),
257
+ bytes,
258
+ ms,
259
+ floor,
260
+ });
267
261
  },
268
262
  async fact(name, value) {
269
263
  await authored.ask({ kind: 'replica.fact', name, value: JSON.stringify(value) });