@agentshouse/mdruntime 0.1.0-cacb4c3f6734e → 0.1.0-cae97ad2e9142

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 (179) hide show
  1. package/README.md +23 -10
  2. package/dist/adapter.d.ts +126 -30
  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 +36 -6
  7. package/dist/attempt.d.ts +16 -0
  8. package/dist/attempt.d.ts.map +1 -0
  9. package/dist/attempt.js +70 -0
  10. package/dist/binary.d.ts +18 -0
  11. package/dist/binary.d.ts.map +1 -0
  12. package/dist/binary.js +8 -0
  13. package/dist/bootstrap.d.ts +40 -6
  14. package/dist/bootstrap.d.ts.map +1 -1
  15. package/dist/bootstrap.js +186 -45
  16. package/dist/chain.d.ts +11 -0
  17. package/dist/chain.d.ts.map +1 -0
  18. package/dist/chain.js +64 -0
  19. package/dist/change-set.d.ts +9 -14
  20. package/dist/change-set.d.ts.map +1 -1
  21. package/dist/change-set.js +11 -56
  22. package/dist/change.d.ts +45 -0
  23. package/dist/change.d.ts.map +1 -1
  24. package/dist/change.js +34 -0
  25. package/dist/client.d.ts +35 -14
  26. package/dist/client.d.ts.map +1 -1
  27. package/dist/client.js +107 -17
  28. package/dist/collection.d.ts +9 -13
  29. package/dist/collection.d.ts.map +1 -1
  30. package/dist/collection.js +46 -56
  31. package/dist/compile.d.ts +16 -0
  32. package/dist/compile.d.ts.map +1 -0
  33. package/dist/compile.js +767 -0
  34. package/dist/connection.d.ts +58 -19
  35. package/dist/connection.d.ts.map +1 -1
  36. package/dist/connection.js +3659 -726
  37. package/dist/conversation.d.ts +41 -12
  38. package/dist/conversation.d.ts.map +1 -1
  39. package/dist/conversation.js +588 -180
  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 +5 -1
  44. package/dist/durability.d.ts.map +1 -1
  45. package/dist/durability.js +5 -0
  46. package/dist/entry.d.ts +19 -0
  47. package/dist/entry.d.ts.map +1 -0
  48. package/dist/entry.js +151 -0
  49. package/dist/expectation.d.ts +21 -0
  50. package/dist/expectation.d.ts.map +1 -0
  51. package/dist/expectation.js +70 -0
  52. package/dist/failure.d.ts +13 -0
  53. package/dist/failure.d.ts.map +1 -0
  54. package/dist/failure.js +19 -0
  55. package/dist/fence.d.ts +6 -0
  56. package/dist/fence.d.ts.map +1 -0
  57. package/dist/fence.js +10 -0
  58. package/dist/file.d.ts +2 -10
  59. package/dist/file.d.ts.map +1 -1
  60. package/dist/file.js +3 -120
  61. package/dist/fulltext.d.ts +27 -0
  62. package/dist/fulltext.d.ts.map +1 -0
  63. package/dist/fulltext.js +368 -0
  64. package/dist/host.d.ts +15 -2
  65. package/dist/host.d.ts.map +1 -1
  66. package/dist/host.js +132 -21
  67. package/dist/identity.d.ts +4 -0
  68. package/dist/identity.d.ts.map +1 -1
  69. package/dist/identity.js +16 -1
  70. package/dist/index.d.ts +20 -9
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +8 -0
  73. package/dist/live.d.ts +22 -0
  74. package/dist/live.d.ts.map +1 -0
  75. package/dist/live.js +124 -0
  76. package/dist/memory.d.ts +13 -5
  77. package/dist/memory.d.ts.map +1 -1
  78. package/dist/memory.js +99 -31
  79. package/dist/messages.d.ts +28 -0
  80. package/dist/messages.d.ts.map +1 -0
  81. package/dist/messages.js +90 -0
  82. package/dist/model.d.ts +14 -4
  83. package/dist/model.d.ts.map +1 -1
  84. package/dist/model.js +13 -2
  85. package/dist/name.d.ts +4 -0
  86. package/dist/name.d.ts.map +1 -0
  87. package/dist/name.js +122 -0
  88. package/dist/observation.d.ts +19 -2
  89. package/dist/observation.d.ts.map +1 -1
  90. package/dist/observation.js +113 -12
  91. package/dist/open.d.ts +2 -0
  92. package/dist/open.d.ts.map +1 -0
  93. package/dist/open.js +1 -0
  94. package/dist/opened.d.ts +22 -0
  95. package/dist/opened.d.ts.map +1 -0
  96. package/dist/opened.js +107 -0
  97. package/dist/outcome.d.ts +62 -3
  98. package/dist/outcome.d.ts.map +1 -1
  99. package/dist/outcome.js +67 -1
  100. package/dist/overlay.d.ts +15 -5
  101. package/dist/overlay.d.ts.map +1 -1
  102. package/dist/overlay.js +136 -180
  103. package/dist/query.d.ts +70 -4
  104. package/dist/query.d.ts.map +1 -1
  105. package/dist/query.js +53 -38
  106. package/dist/reach.d.ts +17 -4
  107. package/dist/reach.d.ts.map +1 -1
  108. package/dist/reach.js +226 -65
  109. package/dist/react.d.ts +31 -20
  110. package/dist/react.d.ts.map +1 -1
  111. package/dist/react.js +13 -21
  112. package/dist/readiness.d.ts +64 -0
  113. package/dist/readiness.d.ts.map +1 -0
  114. package/dist/readiness.js +33 -0
  115. package/dist/reads.d.ts +11 -0
  116. package/dist/reads.d.ts.map +1 -0
  117. package/dist/reads.js +100 -0
  118. package/dist/recovery.d.ts +25 -0
  119. package/dist/recovery.d.ts.map +1 -0
  120. package/dist/recovery.js +198 -0
  121. package/dist/refresh.d.ts +19 -8
  122. package/dist/refresh.d.ts.map +1 -1
  123. package/dist/refresh.js +125 -57
  124. package/dist/replica.d.ts +59 -33
  125. package/dist/replica.d.ts.map +1 -1
  126. package/dist/replica.js +321 -155
  127. package/dist/room-draft.d.ts +41 -9
  128. package/dist/room-draft.d.ts.map +1 -1
  129. package/dist/room-draft.js +186 -37
  130. package/dist/rows.d.ts +37 -35
  131. package/dist/rows.d.ts.map +1 -1
  132. package/dist/rows.js +168 -100
  133. package/dist/save.d.ts +71 -4
  134. package/dist/save.d.ts.map +1 -1
  135. package/dist/save.js +815 -146
  136. package/dist/search.d.ts +41 -29
  137. package/dist/search.d.ts.map +1 -1
  138. package/dist/search.js +37 -105
  139. package/dist/seed.d.ts +16 -0
  140. package/dist/seed.d.ts.map +1 -0
  141. package/dist/seed.js +75 -0
  142. package/dist/shared.d.ts +16 -0
  143. package/dist/shared.d.ts.map +1 -0
  144. package/dist/shared.js +431 -0
  145. package/dist/status.d.ts +6 -2
  146. package/dist/status.d.ts.map +1 -1
  147. package/dist/status.js +0 -8
  148. package/dist/store.d.ts +124 -58
  149. package/dist/store.d.ts.map +1 -1
  150. package/dist/store.js +362 -344
  151. package/dist/stored.d.ts +150 -0
  152. package/dist/stored.d.ts.map +1 -0
  153. package/dist/stored.js +564 -0
  154. package/dist/tables.d.ts +354 -0
  155. package/dist/tables.d.ts.map +1 -0
  156. package/dist/tables.js +624 -0
  157. package/dist/turn.d.ts +9 -0
  158. package/dist/turn.d.ts.map +1 -0
  159. package/dist/turn.js +75 -0
  160. package/dist/validation.d.ts +30 -0
  161. package/dist/validation.d.ts.map +1 -0
  162. package/dist/validation.js +162 -0
  163. package/dist/windows.d.ts +22 -0
  164. package/dist/windows.d.ts.map +1 -0
  165. package/dist/windows.js +89 -0
  166. package/dist/wire.d.ts +169 -33
  167. package/dist/wire.d.ts.map +1 -1
  168. package/dist/wire.js +68 -31
  169. package/dist/words.d.ts +19 -0
  170. package/dist/words.d.ts.map +1 -0
  171. package/dist/words.js +150 -0
  172. package/package.json +26 -15
  173. package/AGENTS.md +0 -244
  174. package/dist/attachment.d.ts +0 -3
  175. package/dist/attachment.d.ts.map +0 -1
  176. package/dist/attachment.js +0 -8
  177. package/dist/read-side.d.ts +0 -18
  178. package/dist/read-side.d.ts.map +0 -1
  179. package/dist/read-side.js +0 -433
package/dist/rows.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ARRAY_INDEX, escapePointer, references, target, } from '@agentshouse/mdmodel';
1
+ import { ARRAY_INDEX, bodyAfterFrontmatter, bodyLinks, escapePointer, parseFrontmatter, references, sectionReferences, target, } from '@agentshouse/mdmodel';
2
2
  import { governing } from './collection.js';
3
3
  import { definitionOf } from './model.js';
4
4
  function keyOf(...parts) {
@@ -7,6 +7,56 @@ function keyOf(...parts) {
7
7
  export function documentKey(room, path) {
8
8
  return keyOf('d', room, path);
9
9
  }
10
+ export function roomOfKey(key) {
11
+ return key.split('\u0000')[1];
12
+ }
13
+ export function pathOfKey(key) {
14
+ return key.split('\u0000')[2];
15
+ }
16
+ export function markdownPath(path) {
17
+ return path.endsWith('.md');
18
+ }
19
+ export function settingsTextPath(path) {
20
+ return /^settings\/.+\.ya?ml$/u.test(path);
21
+ }
22
+ export function folderOf(path) {
23
+ return path.slice(0, Math.max(path.lastIndexOf('/'), 0));
24
+ }
25
+ export function placedOf(pointer, reach) {
26
+ const [first = '', ...rest] = pointer.split('/').slice(1);
27
+ const keys = [first];
28
+ const gaps = [[]];
29
+ for (const segment of rest) {
30
+ if (ARRAY_INDEX.test(segment)) {
31
+ gaps.at(-1).push(segment);
32
+ continue;
33
+ }
34
+ keys.push(segment);
35
+ gaps.push([]);
36
+ }
37
+ const places = gaps
38
+ .map((gap, at) => {
39
+ const open = at < gaps.length - 1 ? reach !== 'exact' : reach === 'link';
40
+ return `/${gap.map((number) => `[.:]${number}`).join('')}.${open ? '*' : ''}`;
41
+ })
42
+ .join('');
43
+ return {
44
+ keys: keys.map((key) => `/${key}`).join(''),
45
+ places,
46
+ glob: /[[*]/u.test(places),
47
+ };
48
+ }
49
+ function placesOf({ done, head, tail }) {
50
+ return `${done}/${head}${tail}.`;
51
+ }
52
+ function throughOf(keys, places) {
53
+ const gaps = places.split('/').slice(1);
54
+ return keys
55
+ .split('/')
56
+ .slice(1)
57
+ .map((key, at) => `/${key}${gaps[at].replace(/\.\d*/gu, '').replaceAll(':', '/')}`)
58
+ .join('');
59
+ }
10
60
  function plainObject(value) {
11
61
  return typeof value === 'object' && value !== null && !Array.isArray(value);
12
62
  }
@@ -15,123 +65,141 @@ function compared(reading, exact, value) {
15
65
  return value;
16
66
  return (typeof value === 'string' ? target(reading.path, value) : null) ?? undefined;
17
67
  }
18
- function record(reading, node, forms, exact) {
19
- const value = Array.isArray(node)
20
- ? node.map((item, index) => compared(reading, `${exact}/${index}`, item))
21
- : compared(reading, exact, node);
22
- for (const form of forms) {
23
- if (form.pending)
24
- continue;
25
- (reading.reached[form.text] ??= []).push(value);
26
- if (!form.through && value !== undefined && !plainObject(value)) {
27
- reading.values[form.text] = value;
28
- }
29
- }
30
- if (Array.isArray(node) || plainObject(node) || !reading.references.has(exact))
68
+ export function kindOf(value) {
69
+ if (value === undefined)
70
+ return 'undefined';
71
+ if (value === null)
72
+ return 'null';
73
+ if (Array.isArray(value))
74
+ return 'array';
75
+ if (typeof value === 'object')
76
+ return 'object';
77
+ return typeof value;
78
+ }
79
+ function scalarOf(value) {
80
+ if (typeof value === 'string' || typeof value === 'number')
81
+ return value;
82
+ if (typeof value === 'boolean')
83
+ return value ? 1 : 0;
84
+ if (Array.isArray(value))
85
+ return JSON.stringify(value);
86
+ return null;
87
+ }
88
+ function held(reading, keys, places, value) {
89
+ reading.values.push({
90
+ keys,
91
+ places,
92
+ item: -1,
93
+ kind: kindOf(value),
94
+ value: scalarOf(value),
95
+ size: Array.isArray(value) ? value.length : null,
96
+ });
97
+ if (!Array.isArray(value))
31
98
  return;
32
- const found = compared(reading, exact, node);
33
- if (typeof found !== 'string')
99
+ value.forEach((item, index) => {
100
+ const itemKind = kindOf(item);
101
+ reading.values.push({
102
+ keys,
103
+ places,
104
+ item: index,
105
+ kind: itemKind,
106
+ value: itemKind === 'array' ? null : scalarOf(item),
107
+ size: null,
108
+ });
109
+ });
110
+ }
111
+ function record(reading, node, at) {
112
+ const value = Array.isArray(node)
113
+ ? node.map((item, index) => compared(reading, `${at.exact}/${index}`, item))
114
+ : compared(reading, at.exact, node);
115
+ const places = placesOf(at);
116
+ held(reading, at.keys, places, value);
117
+ if (typeof value !== 'string' || !reading.references.has(at.exact))
34
118
  return;
35
- const field = forms
36
- .map((form) => form.text)
37
- .reduce((left, right) => (right.length < left.length ? right : left));
38
- const known = reading.targets.get(`${field}\u0000${found}`);
39
- const kept = known ?? { field, target: found, forms: new Set() };
40
- for (const form of forms)
41
- kept.forms.add(form.text);
42
- reading.targets.set(`${field}\u0000${found}`, kept);
43
- }
44
- function walk(reading, node, forms, exact) {
45
- record(reading, node, forms, exact);
119
+ reading.links.push({
120
+ kind: 'field',
121
+ keys: at.keys,
122
+ places,
123
+ target: value,
124
+ field: throughOf(at.keys, places),
125
+ });
126
+ }
127
+ function walk(reading, node, at) {
128
+ record(reading, node, at);
46
129
  if (Array.isArray(node)) {
47
- node.forEach((item, index) => walk(reading, item, forms.flatMap((form) => [
48
- ...(form.pending
49
- ? []
50
- : [{ text: `${form.text}/${index}`, through: form.through, pending: false }]),
51
- { text: form.text, through: true, pending: true },
52
- ]), `${exact}/${index}`));
130
+ node.forEach((item, index) => walk(reading, item, { ...at, tail: `${at.tail}.${index}`, exact: `${at.exact}/${index}` }));
53
131
  return;
54
132
  }
55
133
  if (!plainObject(node))
56
134
  return;
57
135
  for (const [key, value] of Object.entries(node)) {
58
136
  const segment = escapePointer(key);
59
- walk(reading, value, forms.flatMap((form) => form.pending && ARRAY_INDEX.test(key)
60
- ? []
61
- : [{ text: `${form.text}/${segment}`, through: form.through, pending: false }]), `${exact}/${segment}`);
137
+ const exact = `${at.exact}/${segment}`;
138
+ walk(reading, value, ARRAY_INDEX.test(segment)
139
+ ? { ...at, head: `${at.head}${at.tail.replaceAll('.', ':')}:${segment}`, tail: '', exact }
140
+ : { keys: `${at.keys}/${segment}`, done: placesOf(at), head: '', tail: '', exact });
62
141
  }
63
142
  }
64
- function directoriesOf(path) {
65
- const parts = path.split('/').slice(0, -1);
66
- return ['', ...parts.map((_, index) => parts.slice(0, index + 1).join('/'))];
67
- }
68
- export function rowsOf(room, path, document, composition, change) {
69
- const key = documentKey(room, path);
70
- const body = keyOf('b', room, path);
71
- if (document === null || !path.endsWith('.md')) {
72
- return [
73
- {
74
- key,
75
- kind: 'document',
76
- room,
77
- path,
78
- type: null,
79
- fields: {},
80
- values: {},
81
- reached: {},
82
- directories: directoriesOf(path),
83
- body,
84
- change,
85
- },
86
- ];
143
+ function bodyTargets(path, content) {
144
+ const seen = new Set();
145
+ const found = [];
146
+ for (const { target: reached } of bodyLinks(bodyAfterFrontmatter(content), path)) {
147
+ if (seen.has(reached))
148
+ continue;
149
+ seen.add(reached);
150
+ found.push({ kind: 'body', keys: '', places: '', target: reached, field: '' });
87
151
  }
88
- const type = document.type ?? 'any';
152
+ return found;
153
+ }
154
+ function typedRows(path, content, document, composition) {
89
155
  const definition = definitionOf(governing(composition, path), document.type);
90
156
  const reading = {
91
157
  path,
92
158
  references: new Set(definition === undefined ? [] : references(document, definition).map((one) => one.pointer)),
93
- values: {},
94
- reached: {},
95
- targets: new Map(),
159
+ values: [],
160
+ links: [],
96
161
  };
97
162
  for (const [name, value] of Object.entries(document.fields)) {
98
163
  const segment = escapePointer(name);
99
- walk(reading, value, [{ text: `/${segment}`, through: false, pending: false }], `/${segment}`);
164
+ walk(reading, value, {
165
+ keys: `/${segment}`,
166
+ done: '',
167
+ head: '',
168
+ tail: '',
169
+ exact: `/${segment}`,
170
+ });
171
+ }
172
+ const links = reading.links;
173
+ if (definition !== undefined) {
174
+ const sectioned = new Set();
175
+ for (const { target: reached } of sectionReferences(path, content, definition)) {
176
+ if (reached === null || sectioned.has(reached))
177
+ continue;
178
+ sectioned.add(reached);
179
+ links.push({ kind: 'section', keys: '', places: '', target: reached, field: '' });
180
+ }
100
181
  }
101
- const { values, reached } = reading;
102
- return [
103
- {
104
- key,
105
- kind: 'document',
106
- room,
107
- path,
108
- type,
109
- fields: document.fields,
110
- values,
111
- reached,
112
- directories: directoriesOf(path),
113
- body,
114
- change,
115
- },
116
- {
117
- key: body,
118
- kind: 'body',
119
- room,
120
- path,
121
- preamble: document.preamble,
122
- sections: document.sections,
123
- markdown: document.content,
124
- },
125
- ...[...reading.targets.values()].map(({ field, target: found, forms }) => ({
126
- key: keyOf('r', room, path, field, found),
127
- kind: 'reference',
128
- room,
129
- source: key,
130
- target: documentKey(room, found),
131
- field,
132
- forms: [...forms].sort(),
133
- path,
134
- type,
135
- })),
136
- ];
182
+ return { values: reading.values, links: [...links, ...bodyTargets(path, content)] };
183
+ }
184
+ export function derived(path, content, composition) {
185
+ const folder = folderOf(path);
186
+ const unread = { values: [], links: [], fields: null, folder, type: null };
187
+ if (content === null)
188
+ return { ...unread, declared: null, queried: true };
189
+ const read = parseFrontmatter(content, path);
190
+ const declared = read.ok ? (read.frontmatter.type ?? 'any') : null;
191
+ if (!markdownPath(path)) {
192
+ return { ...unread, declared, queried: true, links: bodyTargets(path, content) };
193
+ }
194
+ if (!read.ok)
195
+ return { ...unread, declared, queried: false };
196
+ const document = read.frontmatter;
197
+ return {
198
+ type: document.type ?? 'any',
199
+ declared,
200
+ queried: true,
201
+ folder,
202
+ fields: JSON.stringify(document.fields),
203
+ ...typedRows(path, content, document, composition),
204
+ };
137
205
  }
package/dist/save.d.ts CHANGED
@@ -1,16 +1,20 @@
1
- import type { ProviderLimit } from './adapter.js';
1
+ import { type Validation } from '@agentshouse/mdmodel';
2
+ import type { OperationScopes, ProviderLimit } from './adapter.js';
2
3
  import { type Change, type ChangeBatch, type Precondition, type WrittenBy } from './change.js';
3
4
  import { type Composition } from './collection.js';
5
+ import { type Layer } from './overlay.js';
4
6
  import type { VisibleLayer } from './replica.js';
5
7
  import type { ChangedPart } from './room-draft.js';
6
8
  export type SaveRefusal = {
7
- rule: string;
9
+ code: string;
10
+ retryable: boolean;
8
11
  file?: string;
9
12
  location?: string;
10
13
  referrers?: readonly string[];
11
14
  parts?: readonly ChangedPart[];
12
15
  };
13
16
  export type SaveInput = {
17
+ local: boolean;
14
18
  composition: Composition;
15
19
  baseRoomVersion: string;
16
20
  operations: import('./adapter.js').OperationScopes;
@@ -20,15 +24,78 @@ export type SaveInput = {
20
24
  handle: string;
21
25
  changes: readonly Change[];
22
26
  bases: readonly Precondition[];
27
+ queued?: ReadonlySet<string>;
23
28
  writtenBy?: WrittenBy;
29
+ unmodeled: boolean;
30
+ validate: Validator;
31
+ };
32
+ export type Validator = (resulting: Layer, touched: readonly string[]) => Promise<Validation>;
33
+ type Refusing = {
34
+ kind: 'refused';
35
+ refusal: SaveRefusal;
24
36
  };
25
37
  export type BatchResult = {
26
38
  kind: 'batch';
27
39
  batch: ChangeBatch;
40
+ } | Refusing;
41
+ export declare function providerRewritten(batch: ChangeBatch, visible: VisibleLayer): Generator<number, ChangeBatch, void>;
42
+ export declare function leavingRewritten(batch: ChangeBatch, visible: VisibleLayer): Generator<number, ChangeBatch, void>;
43
+ export declare function rewriting(batch: ChangeBatch, locator: string): boolean;
44
+ export declare function effectiveIn(batch: ChangeBatch, locator: string, visible: VisibleLayer): Generator<number, ChangeBatch, void>;
45
+ export declare function queuedDocuments(queue: readonly ChangeBatch[]): ReadonlySet<string>;
46
+ export type Requeued = {
47
+ kind: 'requeued';
48
+ queue: readonly ChangeBatch[];
49
+ changes: readonly Change[];
50
+ queued: ReadonlySet<string>;
51
+ withdrawn: ReadonlyMap<string, ChangeBatch | null>;
52
+ owners: ReadonlySet<string>;
53
+ } | {
54
+ kind: 'refused';
55
+ refusal: SaveRefusal;
56
+ };
57
+ export type Joining = {
58
+ kind: 'joined';
59
+ batch: ChangeBatch;
60
+ queue: readonly ChangeBatch[];
28
61
  } | {
29
62
  kind: 'refused';
30
63
  refusal: SaveRefusal;
31
64
  };
32
- export declare function providerRewritten(batch: ChangeBatch, visible: VisibleLayer): ChangeBatch;
33
- export declare function buildBatch(input: SaveInput): BatchResult;
65
+ type VisibleOver = (queue: readonly ChangeBatch[]) => Generator<number, VisibleLayer, void>;
66
+ export declare function requeuing(queue: readonly ChangeBatch[], changes: readonly Change[], visible: VisibleLayer, changeable: (batch: ChangeBatch) => boolean, state: VisibleOver): Generator<number, Requeued, void>;
67
+ export declare function joined(queue: readonly ChangeBatch[], owner: ChangeBatch, extra: ChangeBatch): Joining;
68
+ export declare function limiting(queue: readonly ChangeBatch[], batch: ChangeBatch, limits: readonly ProviderLimit[], state: VisibleOver): Generator<number, SaveRefusal | null, void>;
69
+ export declare const MOVE_DOCUMENTS = "move-documents";
70
+ export type MoveSide = {
71
+ room: string;
72
+ handle: string;
73
+ baseRoomVersion: string;
74
+ composition: Composition;
75
+ operations: OperationScopes;
76
+ providerOwnedPaths: readonly string[];
77
+ visible: VisibleLayer;
78
+ queued: ReadonlySet<string>;
79
+ unmodeled: boolean;
80
+ validate: Validator;
81
+ };
82
+ export type MoveInput = {
83
+ source: MoveSide;
84
+ destination: MoveSide;
85
+ moves: readonly {
86
+ readonly path: string;
87
+ readonly to: string;
88
+ }[];
89
+ providerLimits: readonly ProviderLimit[];
90
+ local: boolean;
91
+ writtenBy?: WrittenBy;
92
+ };
93
+ export type MoveResult = {
94
+ kind: 'moved';
95
+ leaving: ChangeBatch;
96
+ arriving: ChangeBatch;
97
+ } | Refusing;
98
+ export declare function buildMove(input: MoveInput): Promise<MoveResult>;
99
+ export declare function buildBatch(input: SaveInput): Promise<BatchResult>;
100
+ export {};
34
101
  //# sourceMappingURL=save.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../src/save.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,cAAc,EAAE,eAAe,CAAC;IACnD,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AA+K9C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,CAOxF;AAsQD,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,CAyFxD"}
1
+ {"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../src/save.ts"],"names":[],"mappings":"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"}