@agentshouse/mdruntime 0.1.0-alpha.31 → 0.1.0-alpha.32

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.
package/dist/replica.d.ts CHANGED
@@ -3,7 +3,7 @@ import { type Collection, type Composition } from './collection.js';
3
3
  import { type Layer } from './overlay.js';
4
4
  import { type Rewriting } from './save.js';
5
5
  import type { ReplicaRecord } from './store.js';
6
- import { type Refused, type Unconfirmed } from './transfer.js';
6
+ import type { Refused, Unconfirmed } from './transfer.js';
7
7
  export type ConfirmedLayer = {
8
8
  record: ReplicaRecord;
9
9
  collection: Collection;
@@ -29,10 +29,11 @@ type ReplayStep = {
29
29
  collection?: Collection;
30
30
  };
31
31
  export declare function compositionOf(record: ReplicaRecord): Composition;
32
- export declare function readConfirmed(record: ReplicaRecord, previous?: ConfirmedLayer): ConfirmedLayer | null;
32
+ export declare function readConfirmed(record: ReplicaRecord, previous?: ConfirmedLayer): Staged;
33
33
  export declare function readStaged(record: ReplicaRecord, previous?: ConfirmedLayer): Staged;
34
34
  export declare function applyReturned(confirmed: ConfirmedLayer, documents: Readonly<Record<string, string>>, revisions: Readonly<Record<string, string>>, removals: readonly string[], roomVersion: string): Staged;
35
35
  export declare function replicaOf(confirmed: ConfirmedLayer, queue: readonly ChangeBatch[], rewriting: Rewriting, previous?: Replica): Replica;
36
+ export declare function landed(batch: ChangeBatch, confirmed: ConfirmedLayer): boolean;
36
37
  export declare function withdrawals(confirmed: ConfirmedLayer, queue: readonly ChangeBatch[], withdrawable: (batch: ChangeBatch) => boolean, rewriting: Rewriting): readonly ChangeBatch[];
37
38
  export {};
38
39
  //# sourceMappingURL=replica.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replica.d.ts","sourceRoot":"","sources":["../src/replica.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,WAAW,EAAqB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAe,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3F,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAShE;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,QAAQ,CAAC,EAAE,cAAc,GACxB,cAAc,GAAG,IAAI,CASvB;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CAmBnF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3C,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,MAAM,CAmBR;AAuDD,wBAAgB,SAAS,CACvB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CA2CT;AAyCD,wBAAgB,WAAW,CACzB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,EAC7C,SAAS,EAAE,SAAS,GACnB,SAAS,WAAW,EAAE,CAoBxB"}
1
+ {"version":3,"file":"replica.d.ts","sourceRoot":"","sources":["../src/replica.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,WAAW,EAAqB,MAAM,aAAa,CAAC;AAC1F,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GAAG,OAAO,GAAG,WAAW,CAAC;AAE3F,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAShE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CAWtF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CAkBnF;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC3C,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,MAAM,CAmBR;AAuDD,wBAAgB,SAAS,CACvB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CA2CT;AAkFD,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAa7E;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,YAAY,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,EAC7C,SAAS,EAAE,SAAS,GACnB,SAAS,WAAW,EAAE,CAoBxB"}
package/dist/replica.js CHANGED
@@ -4,7 +4,6 @@ import { parseCollection, readCollection, validateCollection } from './collectio
4
4
  import { overlay, overlayChanged, sameLayerText } from './overlay.js';
5
5
  import { providerRewritten } from './save.js';
6
6
  import { equalValue } from './room-draft.js';
7
- import { unconfirmed } from './transfer.js';
8
7
  export function compositionOf(record) {
9
8
  return {
10
9
  collectionRoot: record.collectionRoot,
@@ -16,14 +15,17 @@ export function compositionOf(record) {
16
15
  };
17
16
  }
18
17
  export function readConfirmed(record, previous) {
19
- const collection = readCollection(record.documents, compositionOf(record), previous === undefined ? undefined : {
18
+ const read = readCollection(record.documents, compositionOf(record), previous === undefined ? undefined : {
20
19
  text: previous.record.documents,
21
20
  collection: previous.collection
22
21
  });
23
- return collection === null ? null : {
24
- record,
25
- collection
26
- };
22
+ return read.kind === 'read' ? {
23
+ kind: 'staged',
24
+ confirmed: {
25
+ record,
26
+ collection: read.collection
27
+ }
28
+ } : read;
27
29
  }
28
30
  export function readStaged(record, previous) {
29
31
  if ((record.model.status === 'current' || record.selectionModel.status === 'current') && (previous === undefined || !sameLayerText(record, previous.record) || record.model !== previous.record.model || record.selectionModel !== previous.record.selectionModel)) {
@@ -35,11 +37,7 @@ export function readStaged(record, previous) {
35
37
  };
36
38
  }
37
39
  }
38
- const confirmed = readConfirmed(record, previous);
39
- return confirmed === null ? unconfirmed : {
40
- kind: 'staged',
41
- confirmed
42
- };
40
+ return readConfirmed(record, previous);
43
41
  }
44
42
  export function applyReturned(confirmed, documents, revisions, removals, roomVersion) {
45
43
  const nextDocuments = {
@@ -174,6 +172,82 @@ function holds(layer, preconditions) {
174
172
  return document.preamble === precondition.value;
175
173
  });
176
174
  }
175
+ function effects(change) {
176
+ const path = change.path;
177
+ if (change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble') {
178
+ return [
179
+ change
180
+ ];
181
+ }
182
+ if (change.kind === 'create' && !('content' in change)) {
183
+ return [
184
+ {
185
+ kind: 'present',
186
+ path
187
+ },
188
+ ...Object.entries(change.fields).map(([name, value])=>({
189
+ kind: 'field',
190
+ path,
191
+ name,
192
+ value
193
+ })),
194
+ ...Object.entries(change.sections).map(([name, value])=>({
195
+ kind: 'section',
196
+ path,
197
+ name,
198
+ value
199
+ }))
200
+ ];
201
+ }
202
+ if (change.kind === 'move') {
203
+ return [
204
+ {
205
+ kind: 'absent',
206
+ path
207
+ },
208
+ {
209
+ kind: 'present',
210
+ path: change.to
211
+ }
212
+ ];
213
+ }
214
+ return [
215
+ {
216
+ kind: 'absent',
217
+ path
218
+ }
219
+ ];
220
+ }
221
+ function after(changes, index, path) {
222
+ let at = path;
223
+ for (const change of changes.slice(index + 1)){
224
+ if (change.path !== at) continue;
225
+ if (change.kind === 'remove') return null;
226
+ if (change.kind === 'move') at = change.to;
227
+ }
228
+ return at;
229
+ }
230
+ export function landed(batch, confirmed) {
231
+ const layer = confirmed.record;
232
+ return batch.changes.every((change, index)=>{
233
+ if (change.kind === 'replace' || change.kind === 'create' && 'content' in change) {
234
+ const at = after(batch.changes, index, change.path);
235
+ return at === null || layer.documents[at] === change.content;
236
+ }
237
+ return effects(change).every((effect)=>{
238
+ if (effect.kind === 'absent') return holds(layer, [
239
+ effect
240
+ ]);
241
+ const at = after(batch.changes, index, effect.path);
242
+ return at === null || holds(layer, [
243
+ {
244
+ ...effect,
245
+ path: at
246
+ }
247
+ ]);
248
+ });
249
+ });
250
+ }
177
251
  export function withdrawals(confirmed, queue, withdrawable, rewriting) {
178
252
  if (!queue.some(withdrawable)) return [];
179
253
  const composition = compositionOf(confirmed.record);
@@ -1 +1 @@
1
- {"version":3,"sources":["/workspace/packages/mdruntime/src/replica.ts"],"sourcesContent":["import { parse, type Document } from '@agentshouse/mdmodel';\nimport { immutable, type ChangeBatch, type Precondition } from './change.js';\nimport {\n parseCollection,\n readCollection,\n validateCollection,\n type Collection,\n type Composition,\n} from './collection.js';\nimport { overlay, overlayChanged, sameLayerText, type Layer } from './overlay.js';\nimport { providerRewritten, type Rewriting } from './save.js';\nimport { equalValue } from './room-draft.js';\nimport type { ReplicaRecord } from './store.js';\nimport { unconfirmed, type Refused, type Unconfirmed } from './transfer.js';\n\nexport type ConfirmedLayer = {\n record: ReplicaRecord;\n collection: Collection;\n};\n\nexport type VisibleLayer = Layer & {\n collection: Collection;\n};\n\nexport type Staged = { kind: 'staged'; confirmed: ConfirmedLayer } | Refused | Unconfirmed;\n\nexport type Replica = {\n confirmed: ConfirmedLayer;\n queue: readonly ChangeBatch[];\n visible: VisibleLayer;\n replay: readonly ReplayStep[];\n};\n\ntype ReplayStep = {\n id: string;\n before: Layer;\n after: Layer;\n effective: ChangeBatch;\n collection?: Collection;\n};\n\nexport function compositionOf(record: ReplicaRecord): Composition {\n return {\n collectionRoot: record.collectionRoot,\n model: record.model,\n selection:\n record.typedSelection === null\n ? null\n : { roots: record.typedSelection.roots, model: record.selectionModel },\n };\n}\n\nexport function readConfirmed(\n record: ReplicaRecord,\n previous?: ConfirmedLayer,\n): ConfirmedLayer | null {\n const collection = readCollection(\n record.documents,\n compositionOf(record),\n previous === undefined\n ? undefined\n : { text: previous.record.documents, collection: previous.collection },\n );\n return collection === null ? null : { record, collection };\n}\n\nexport function readStaged(record: ReplicaRecord, previous?: ConfirmedLayer): Staged {\n if (\n (record.model.status === 'current' || record.selectionModel.status === 'current') &&\n (previous === undefined ||\n !sameLayerText(record, previous.record) ||\n record.model !== previous.record.model ||\n record.selectionModel !== previous.record.selectionModel)\n ) {\n const verdict = validateCollection(\n record.documents,\n record.binaryTargets,\n compositionOf(record),\n );\n if (verdict.verdict === 'refuse' && verdict.rule !== 'model-unavailable') {\n return { kind: 'refused', refusal: verdict };\n }\n }\n const confirmed = readConfirmed(record, previous);\n return confirmed === null ? unconfirmed : { kind: 'staged', confirmed };\n}\n\nexport function applyReturned(\n confirmed: ConfirmedLayer,\n documents: Readonly<Record<string, string>>,\n revisions: Readonly<Record<string, string>>,\n removals: readonly string[],\n roomVersion: string,\n): Staged {\n const nextDocuments = { ...confirmed.record.documents, ...documents };\n const nextRevisions = { ...confirmed.record.revisions, ...revisions };\n const binaryTargets = new Set(confirmed.record.binaryTargets);\n for (const path of removals) {\n delete nextDocuments[path];\n delete nextRevisions[path];\n binaryTargets.delete(path);\n }\n return readStaged(\n {\n ...confirmed.record,\n roomVersion,\n documents: nextDocuments,\n revisions: nextRevisions,\n binaryTargets: [...binaryTargets].sort(),\n },\n confirmed,\n );\n}\n\nfunction predicted(\n confirmed: ConfirmedLayer,\n batches: readonly ChangeBatch[],\n previous?: Replica,\n): { layer: Layer; replay: readonly ReplayStep[] } {\n const composition = compositionOf(confirmed.record);\n let layer: Layer = confirmed.record;\n const replay: ReplayStep[] = [];\n const prior = new Map(previous?.replay.map((step) => [step.id, step]) ?? []);\n for (const batch of batches) {\n const before = layer;\n const old = prior.get(batch.id);\n const hasMove = batch.changes.some((change) => change.kind === 'move');\n const reuseRewrite =\n old?.collection !== undefined &&\n sameLayerText(before, old.before) &&\n old.collection.composition.collectionRoot === composition.collectionRoot &&\n old.collection.composition.model === composition.model &&\n old.collection.composition.selection?.model === composition.selection?.model &&\n JSON.stringify(old.collection.composition.selection?.roots) ===\n JSON.stringify(composition.selection?.roots);\n const collection = hasMove\n ? reuseRewrite\n ? old.collection\n : parseCollection(\n before.documents,\n composition,\n old?.collection === undefined\n ? { text: confirmed.record.documents, collection: confirmed.collection }\n : { text: old.before.documents, collection: old.collection },\n )\n : undefined;\n const effective =\n collection === undefined\n ? batch\n : reuseRewrite\n ? old.effective\n : providerRewritten(batch, { ...before, collection });\n layer =\n old === undefined\n ? overlay(before, [effective])\n : overlayChanged(before, [effective], old.before, [old.effective], old.after);\n replay.push({\n id: batch.id,\n before,\n after: layer,\n effective,\n ...(collection === undefined ? {} : { collection }),\n });\n }\n return { layer, replay };\n}\n\nexport function replicaOf(\n confirmed: ConfirmedLayer,\n queue: readonly ChangeBatch[],\n rewriting: Rewriting,\n previous?: Replica,\n): Replica {\n const batches = Object.freeze(queue.map(immutable));\n if (batches.length === 0) {\n return {\n confirmed,\n queue: batches,\n visible: {\n documents: confirmed.record.documents,\n binaryTargets: confirmed.record.binaryTargets,\n revisions: confirmed.record.revisions,\n collection: confirmed.collection,\n },\n replay: [],\n };\n }\n const predictedState = rewriting === 'provider' ? predicted(confirmed, batches, previous) : null;\n const layer =\n rewriting === 'provider'\n ? predictedState!.layer\n : previous === undefined\n ? overlay(confirmed.record, batches)\n : overlayChanged(\n confirmed.record,\n batches,\n previous.confirmed.record,\n previous.queue,\n previous.visible,\n );\n return {\n confirmed,\n queue: batches,\n replay: predictedState?.replay ?? [],\n visible: {\n ...layer,\n collection: parseCollection(\n layer.documents,\n compositionOf(confirmed.record),\n previous === undefined\n ? undefined\n : { text: previous.visible.documents, collection: previous.visible.collection },\n ),\n },\n };\n}\n\nfunction present(layer: Layer, path: string): boolean {\n return layer.documents[path] !== undefined || layer.binaryTargets.includes(path);\n}\n\nfunction holds(layer: Layer, preconditions: readonly Precondition[]): boolean {\n const parsed = new Map<string, Document | null>();\n const documentAt = (path: string) => {\n if (!parsed.has(path)) {\n const text = layer.documents[path];\n const opened = text === undefined ? null : parse(text, path);\n parsed.set(path, opened?.ok === true ? opened.document : null);\n }\n return parsed.get(path) ?? null;\n };\n return preconditions.every((precondition) => {\n const path = precondition.path;\n if (precondition.kind === 'absent') return !present(layer, path);\n if (precondition.kind === 'present') return present(layer, path);\n if (precondition.kind === 'revision') {\n return present(layer, path) && layer.revisions[path] === precondition.revision;\n }\n const document = documentAt(path);\n if (document === null) return false;\n if (precondition.kind === 'field') {\n const value = Object.hasOwn(document.fields, precondition.name)\n ? document.fields[precondition.name]\n : undefined;\n return equalValue(value, precondition.value);\n }\n if (precondition.kind === 'section') {\n return (\n Object.hasOwn(document.sections, precondition.name) &&\n document.sections[precondition.name] === precondition.value\n );\n }\n return document.preamble === precondition.value;\n });\n}\n\nexport function withdrawals(\n confirmed: ConfirmedLayer,\n queue: readonly ChangeBatch[],\n withdrawable: (batch: ChangeBatch) => boolean,\n rewriting: Rewriting,\n): readonly ChangeBatch[] {\n if (!queue.some(withdrawable)) return [];\n const composition = compositionOf(confirmed.record);\n let layer: Layer = confirmed.record;\n const withdrawn: ChangeBatch[] = [];\n for (const batch of queue) {\n if (withdrawable(batch) && !holds(layer, batch.preconditions)) {\n withdrawn.push(batch);\n continue;\n }\n const effective =\n rewriting === 'provider' && batch.changes.some((change) => change.kind === 'move')\n ? providerRewritten(batch, {\n ...layer,\n collection: parseCollection(layer.documents, composition),\n })\n : batch;\n layer = overlay(layer, [effective]);\n }\n return withdrawn;\n}\n"],"names":["parse","immutable","parseCollection","readCollection","validateCollection","overlay","overlayChanged","sameLayerText","providerRewritten","equalValue","unconfirmed","compositionOf","record","collectionRoot","model","selection","typedSelection","roots","selectionModel","readConfirmed","previous","collection","documents","undefined","text","readStaged","status","verdict","binaryTargets","rule","kind","refusal","confirmed","applyReturned","revisions","removals","roomVersion","nextDocuments","nextRevisions","Set","path","delete","sort","predicted","batches","composition","layer","replay","prior","Map","map","step","id","batch","before","old","get","hasMove","changes","some","change","reuseRewrite","JSON","stringify","effective","after","push","replicaOf","queue","rewriting","Object","freeze","length","visible","predictedState","present","includes","holds","preconditions","parsed","documentAt","has","opened","set","ok","document","every","precondition","revision","value","hasOwn","fields","name","sections","preamble","withdrawals","withdrawable","withdrawn"],"mappings":"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"}
1
+ {"version":3,"sources":["/workspace/packages/mdruntime/src/replica.ts"],"sourcesContent":["import { parse, type Document } from '@agentshouse/mdmodel';\nimport { immutable, type Change, type ChangeBatch, type Precondition } from './change.js';\nimport {\n parseCollection,\n readCollection,\n validateCollection,\n type Collection,\n type Composition,\n} from './collection.js';\nimport { overlay, overlayChanged, sameLayerText, type Layer } from './overlay.js';\nimport { providerRewritten, type Rewriting } from './save.js';\nimport { equalValue } from './room-draft.js';\nimport type { ReplicaRecord } from './store.js';\nimport type { Refused, Unconfirmed } from './transfer.js';\n\nexport type ConfirmedLayer = {\n record: ReplicaRecord;\n collection: Collection;\n};\n\nexport type VisibleLayer = Layer & {\n collection: Collection;\n};\n\nexport type Staged = { kind: 'staged'; confirmed: ConfirmedLayer } | Refused | Unconfirmed;\n\nexport type Replica = {\n confirmed: ConfirmedLayer;\n queue: readonly ChangeBatch[];\n visible: VisibleLayer;\n replay: readonly ReplayStep[];\n};\n\ntype ReplayStep = {\n id: string;\n before: Layer;\n after: Layer;\n effective: ChangeBatch;\n collection?: Collection;\n};\n\nexport function compositionOf(record: ReplicaRecord): Composition {\n return {\n collectionRoot: record.collectionRoot,\n model: record.model,\n selection:\n record.typedSelection === null\n ? null\n : { roots: record.typedSelection.roots, model: record.selectionModel },\n };\n}\n\nexport function readConfirmed(record: ReplicaRecord, previous?: ConfirmedLayer): Staged {\n const read = readCollection(\n record.documents,\n compositionOf(record),\n previous === undefined\n ? undefined\n : { text: previous.record.documents, collection: previous.collection },\n );\n return read.kind === 'read'\n ? { kind: 'staged', confirmed: { record, collection: read.collection } }\n : read;\n}\n\nexport function readStaged(record: ReplicaRecord, previous?: ConfirmedLayer): Staged {\n if (\n (record.model.status === 'current' || record.selectionModel.status === 'current') &&\n (previous === undefined ||\n !sameLayerText(record, previous.record) ||\n record.model !== previous.record.model ||\n record.selectionModel !== previous.record.selectionModel)\n ) {\n const verdict = validateCollection(\n record.documents,\n record.binaryTargets,\n compositionOf(record),\n );\n if (verdict.verdict === 'refuse' && verdict.rule !== 'model-unavailable') {\n return { kind: 'refused', refusal: verdict };\n }\n }\n return readConfirmed(record, previous);\n}\n\nexport function applyReturned(\n confirmed: ConfirmedLayer,\n documents: Readonly<Record<string, string>>,\n revisions: Readonly<Record<string, string>>,\n removals: readonly string[],\n roomVersion: string,\n): Staged {\n const nextDocuments = { ...confirmed.record.documents, ...documents };\n const nextRevisions = { ...confirmed.record.revisions, ...revisions };\n const binaryTargets = new Set(confirmed.record.binaryTargets);\n for (const path of removals) {\n delete nextDocuments[path];\n delete nextRevisions[path];\n binaryTargets.delete(path);\n }\n return readStaged(\n {\n ...confirmed.record,\n roomVersion,\n documents: nextDocuments,\n revisions: nextRevisions,\n binaryTargets: [...binaryTargets].sort(),\n },\n confirmed,\n );\n}\n\nfunction predicted(\n confirmed: ConfirmedLayer,\n batches: readonly ChangeBatch[],\n previous?: Replica,\n): { layer: Layer; replay: readonly ReplayStep[] } {\n const composition = compositionOf(confirmed.record);\n let layer: Layer = confirmed.record;\n const replay: ReplayStep[] = [];\n const prior = new Map(previous?.replay.map((step) => [step.id, step]) ?? []);\n for (const batch of batches) {\n const before = layer;\n const old = prior.get(batch.id);\n const hasMove = batch.changes.some((change) => change.kind === 'move');\n const reuseRewrite =\n old?.collection !== undefined &&\n sameLayerText(before, old.before) &&\n old.collection.composition.collectionRoot === composition.collectionRoot &&\n old.collection.composition.model === composition.model &&\n old.collection.composition.selection?.model === composition.selection?.model &&\n JSON.stringify(old.collection.composition.selection?.roots) ===\n JSON.stringify(composition.selection?.roots);\n const collection = hasMove\n ? reuseRewrite\n ? old.collection\n : parseCollection(\n before.documents,\n composition,\n old?.collection === undefined\n ? { text: confirmed.record.documents, collection: confirmed.collection }\n : { text: old.before.documents, collection: old.collection },\n )\n : undefined;\n const effective =\n collection === undefined\n ? batch\n : reuseRewrite\n ? old.effective\n : providerRewritten(batch, { ...before, collection });\n layer =\n old === undefined\n ? overlay(before, [effective])\n : overlayChanged(before, [effective], old.before, [old.effective], old.after);\n replay.push({\n id: batch.id,\n before,\n after: layer,\n effective,\n ...(collection === undefined ? {} : { collection }),\n });\n }\n return { layer, replay };\n}\n\nexport function replicaOf(\n confirmed: ConfirmedLayer,\n queue: readonly ChangeBatch[],\n rewriting: Rewriting,\n previous?: Replica,\n): Replica {\n const batches = Object.freeze(queue.map(immutable));\n if (batches.length === 0) {\n return {\n confirmed,\n queue: batches,\n visible: {\n documents: confirmed.record.documents,\n binaryTargets: confirmed.record.binaryTargets,\n revisions: confirmed.record.revisions,\n collection: confirmed.collection,\n },\n replay: [],\n };\n }\n const predictedState = rewriting === 'provider' ? predicted(confirmed, batches, previous) : null;\n const layer =\n rewriting === 'provider'\n ? predictedState!.layer\n : previous === undefined\n ? overlay(confirmed.record, batches)\n : overlayChanged(\n confirmed.record,\n batches,\n previous.confirmed.record,\n previous.queue,\n previous.visible,\n );\n return {\n confirmed,\n queue: batches,\n replay: predictedState?.replay ?? [],\n visible: {\n ...layer,\n collection: parseCollection(\n layer.documents,\n compositionOf(confirmed.record),\n previous === undefined\n ? undefined\n : { text: previous.visible.documents, collection: previous.visible.collection },\n ),\n },\n };\n}\n\nfunction present(layer: Layer, path: string): boolean {\n return layer.documents[path] !== undefined || layer.binaryTargets.includes(path);\n}\n\nfunction holds(layer: Layer, preconditions: readonly Precondition[]): boolean {\n const parsed = new Map<string, Document | null>();\n const documentAt = (path: string) => {\n if (!parsed.has(path)) {\n const text = layer.documents[path];\n const opened = text === undefined ? null : parse(text, path);\n parsed.set(path, opened?.ok === true ? opened.document : null);\n }\n return parsed.get(path) ?? null;\n };\n return preconditions.every((precondition) => {\n const path = precondition.path;\n if (precondition.kind === 'absent') return !present(layer, path);\n if (precondition.kind === 'present') return present(layer, path);\n if (precondition.kind === 'revision') {\n return present(layer, path) && layer.revisions[path] === precondition.revision;\n }\n const document = documentAt(path);\n if (document === null) return false;\n if (precondition.kind === 'field') {\n const value = Object.hasOwn(document.fields, precondition.name)\n ? document.fields[precondition.name]\n : undefined;\n return equalValue(value, precondition.value);\n }\n if (precondition.kind === 'section') {\n return (\n Object.hasOwn(document.sections, precondition.name) &&\n document.sections[precondition.name] === precondition.value\n );\n }\n return document.preamble === precondition.value;\n });\n}\n\nfunction effects(change: Change): readonly Precondition[] {\n const path = change.path;\n if (change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble') {\n return [change];\n }\n if (change.kind === 'create' && !('content' in change)) {\n return [\n { kind: 'present', path },\n ...Object.entries(change.fields).map(([name, value]): Precondition => ({\n kind: 'field',\n path,\n name,\n value,\n })),\n ...Object.entries(change.sections).map(([name, value]): Precondition => ({\n kind: 'section',\n path,\n name,\n value,\n })),\n ];\n }\n if (change.kind === 'move') {\n return [\n { kind: 'absent', path },\n { kind: 'present', path: change.to },\n ];\n }\n return [{ kind: 'absent', path }];\n}\n\nfunction after(changes: readonly Change[], index: number, path: string): string | null {\n let at = path;\n for (const change of changes.slice(index + 1)) {\n if (change.path !== at) continue;\n if (change.kind === 'remove') return null;\n if (change.kind === 'move') at = change.to;\n }\n return at;\n}\n\nexport function landed(batch: ChangeBatch, confirmed: ConfirmedLayer): boolean {\n const layer = confirmed.record;\n return batch.changes.every((change, index) => {\n if (change.kind === 'replace' || (change.kind === 'create' && 'content' in change)) {\n const at = after(batch.changes, index, change.path);\n return at === null || layer.documents[at] === change.content;\n }\n return effects(change).every((effect) => {\n if (effect.kind === 'absent') return holds(layer, [effect]);\n const at = after(batch.changes, index, effect.path);\n return at === null || holds(layer, [{ ...effect, path: at }]);\n });\n });\n}\n\nexport function withdrawals(\n confirmed: ConfirmedLayer,\n queue: readonly ChangeBatch[],\n withdrawable: (batch: ChangeBatch) => boolean,\n rewriting: Rewriting,\n): readonly ChangeBatch[] {\n if (!queue.some(withdrawable)) return [];\n const composition = compositionOf(confirmed.record);\n let layer: Layer = confirmed.record;\n const withdrawn: ChangeBatch[] = [];\n for (const batch of queue) {\n if (withdrawable(batch) && !holds(layer, batch.preconditions)) {\n withdrawn.push(batch);\n continue;\n }\n const effective =\n rewriting === 'provider' && batch.changes.some((change) => change.kind === 'move')\n ? providerRewritten(batch, {\n ...layer,\n collection: parseCollection(layer.documents, composition),\n })\n : batch;\n layer = overlay(layer, [effective]);\n }\n return withdrawn;\n}\n"],"names":["parse","immutable","parseCollection","readCollection","validateCollection","overlay","overlayChanged","sameLayerText","providerRewritten","equalValue","compositionOf","record","collectionRoot","model","selection","typedSelection","roots","selectionModel","readConfirmed","previous","read","documents","undefined","text","collection","kind","confirmed","readStaged","status","verdict","binaryTargets","rule","refusal","applyReturned","revisions","removals","roomVersion","nextDocuments","nextRevisions","Set","path","delete","sort","predicted","batches","composition","layer","replay","prior","Map","map","step","id","batch","before","old","get","hasMove","changes","some","change","reuseRewrite","JSON","stringify","effective","after","push","replicaOf","queue","rewriting","Object","freeze","length","visible","predictedState","present","includes","holds","preconditions","parsed","documentAt","has","opened","set","ok","document","every","precondition","revision","value","hasOwn","fields","name","sections","preamble","effects","entries","to","index","at","slice","landed","content","effect","withdrawals","withdrawable","withdrawn"],"mappings":"AAAA,SAASA,KAAK,QAAuB,uBAAuB;AAC5D,SAASC,SAAS,QAA0D,cAAc;AAC1F,SACEC,eAAe,EACfC,cAAc,EACdC,kBAAkB,QAGb,kBAAkB;AACzB,SAASC,OAAO,EAAEC,cAAc,EAAEC,aAAa,QAAoB,eAAe;AAClF,SAASC,iBAAiB,QAAwB,YAAY;AAC9D,SAASC,UAAU,QAAQ,kBAAkB;AA8B7C,OAAO,SAASC,cAAcC,MAAqB;IACjD,OAAO;QACLC,gBAAgBD,OAAOC,cAAc;QACrCC,OAAOF,OAAOE,KAAK;QACnBC,WACEH,OAAOI,cAAc,KAAK,OACtB,OACA;YAAEC,OAAOL,OAAOI,cAAc,CAACC,KAAK;YAAEH,OAAOF,OAAOM,cAAc;QAAC;IAC3E;AACF;AAEA,OAAO,SAASC,cAAcP,MAAqB,EAAEQ,QAAyB;IAC5E,MAAMC,OAAOjB,eACXQ,OAAOU,SAAS,EAChBX,cAAcC,SACdQ,aAAaG,YACTA,YACA;QAAEC,MAAMJ,SAASR,MAAM,CAACU,SAAS;QAAEG,YAAYL,SAASK,UAAU;IAAC;IAEzE,OAAOJ,KAAKK,IAAI,KAAK,SACjB;QAAEA,MAAM;QAAUC,WAAW;YAAEf;YAAQa,YAAYJ,KAAKI,UAAU;QAAC;IAAE,IACrEJ;AACN;AAEA,OAAO,SAASO,WAAWhB,MAAqB,EAAEQ,QAAyB;IACzE,IACE,AAACR,CAAAA,OAAOE,KAAK,CAACe,MAAM,KAAK,aAAajB,OAAOM,cAAc,CAACW,MAAM,KAAK,SAAQ,KAC9ET,CAAAA,aAAaG,aACZ,CAACf,cAAcI,QAAQQ,SAASR,MAAM,KACtCA,OAAOE,KAAK,KAAKM,SAASR,MAAM,CAACE,KAAK,IACtCF,OAAOM,cAAc,KAAKE,SAASR,MAAM,CAACM,cAAc,AAAD,GACzD;QACA,MAAMY,UAAUzB,mBACdO,OAAOU,SAAS,EAChBV,OAAOmB,aAAa,EACpBpB,cAAcC;QAEhB,IAAIkB,QAAQA,OAAO,KAAK,YAAYA,QAAQE,IAAI,KAAK,qBAAqB;YACxE,OAAO;gBAAEN,MAAM;gBAAWO,SAASH;YAAQ;QAC7C;IACF;IACA,OAAOX,cAAcP,QAAQQ;AAC/B;AAEA,OAAO,SAASc,cACdP,SAAyB,EACzBL,SAA2C,EAC3Ca,SAA2C,EAC3CC,QAA2B,EAC3BC,WAAmB;IAEnB,MAAMC,gBAAgB;QAAE,GAAGX,UAAUf,MAAM,CAACU,SAAS;QAAE,GAAGA,SAAS;IAAC;IACpE,MAAMiB,gBAAgB;QAAE,GAAGZ,UAAUf,MAAM,CAACuB,SAAS;QAAE,GAAGA,SAAS;IAAC;IACpE,MAAMJ,gBAAgB,IAAIS,IAAIb,UAAUf,MAAM,CAACmB,aAAa;IAC5D,KAAK,MAAMU,QAAQL,SAAU;QAC3B,OAAOE,aAAa,CAACG,KAAK;QAC1B,OAAOF,aAAa,CAACE,KAAK;QAC1BV,cAAcW,MAAM,CAACD;IACvB;IACA,OAAOb,WACL;QACE,GAAGD,UAAUf,MAAM;QACnByB;QACAf,WAAWgB;QACXH,WAAWI;QACXR,eAAe;eAAIA;SAAc,CAACY,IAAI;IACxC,GACAhB;AAEJ;AAEA,SAASiB,UACPjB,SAAyB,EACzBkB,OAA+B,EAC/BzB,QAAkB;IAElB,MAAM0B,cAAcnC,cAAcgB,UAAUf,MAAM;IAClD,IAAImC,QAAepB,UAAUf,MAAM;IACnC,MAAMoC,SAAuB,EAAE;IAC/B,MAAMC,QAAQ,IAAIC,IAAI9B,UAAU4B,OAAOG,IAAI,CAACC,OAAS;YAACA,KAAKC,EAAE;YAAED;SAAK,KAAK,EAAE;IAC3E,KAAK,MAAME,SAAST,QAAS;QAC3B,MAAMU,SAASR;QACf,MAAMS,MAAMP,MAAMQ,GAAG,CAACH,MAAMD,EAAE;QAC9B,MAAMK,UAAUJ,MAAMK,OAAO,CAACC,IAAI,CAAC,CAACC,SAAWA,OAAOnC,IAAI,KAAK;QAC/D,MAAMoC,eACJN,KAAK/B,eAAeF,aACpBf,cAAc+C,QAAQC,IAAID,MAAM,KAChCC,IAAI/B,UAAU,CAACqB,WAAW,CAACjC,cAAc,KAAKiC,YAAYjC,cAAc,IACxE2C,IAAI/B,UAAU,CAACqB,WAAW,CAAChC,KAAK,KAAKgC,YAAYhC,KAAK,IACtD0C,IAAI/B,UAAU,CAACqB,WAAW,CAAC/B,SAAS,EAAED,UAAUgC,YAAY/B,SAAS,EAAED,SACvEiD,KAAKC,SAAS,CAACR,IAAI/B,UAAU,CAACqB,WAAW,CAAC/B,SAAS,EAAEE,WACnD8C,KAAKC,SAAS,CAAClB,YAAY/B,SAAS,EAAEE;QAC1C,MAAMQ,aAAaiC,UACfI,eACEN,IAAI/B,UAAU,GACdtB,gBACEoD,OAAOjC,SAAS,EAChBwB,aACAU,KAAK/B,eAAeF,YAChB;YAAEC,MAAMG,UAAUf,MAAM,CAACU,SAAS;YAAEG,YAAYE,UAAUF,UAAU;QAAC,IACrE;YAAED,MAAMgC,IAAID,MAAM,CAACjC,SAAS;YAAEG,YAAY+B,IAAI/B,UAAU;QAAC,KAEjEF;QACJ,MAAM0C,YACJxC,eAAeF,YACX+B,QACAQ,eACEN,IAAIS,SAAS,GACbxD,kBAAkB6C,OAAO;YAAE,GAAGC,MAAM;YAAE9B;QAAW;QACzDsB,QACES,QAAQjC,YACJjB,QAAQiD,QAAQ;YAACU;SAAU,IAC3B1D,eAAegD,QAAQ;YAACU;SAAU,EAAET,IAAID,MAAM,EAAE;YAACC,IAAIS,SAAS;SAAC,EAAET,IAAIU,KAAK;QAChFlB,OAAOmB,IAAI,CAAC;YACVd,IAAIC,MAAMD,EAAE;YACZE;YACAW,OAAOnB;YACPkB;YACA,GAAIxC,eAAeF,YAAY,CAAC,IAAI;gBAAEE;YAAW,CAAC;QACpD;IACF;IACA,OAAO;QAAEsB;QAAOC;IAAO;AACzB;AAEA,OAAO,SAASoB,UACdzC,SAAyB,EACzB0C,KAA6B,EAC7BC,SAAoB,EACpBlD,QAAkB;IAElB,MAAMyB,UAAU0B,OAAOC,MAAM,CAACH,MAAMlB,GAAG,CAACjD;IACxC,IAAI2C,QAAQ4B,MAAM,KAAK,GAAG;QACxB,OAAO;YACL9C;YACA0C,OAAOxB;YACP6B,SAAS;gBACPpD,WAAWK,UAAUf,MAAM,CAACU,SAAS;gBACrCS,eAAeJ,UAAUf,MAAM,CAACmB,aAAa;gBAC7CI,WAAWR,UAAUf,MAAM,CAACuB,SAAS;gBACrCV,YAAYE,UAAUF,UAAU;YAClC;YACAuB,QAAQ,EAAE;QACZ;IACF;IACA,MAAM2B,iBAAiBL,cAAc,aAAa1B,UAAUjB,WAAWkB,SAASzB,YAAY;IAC5F,MAAM2B,QACJuB,cAAc,aACVK,eAAgB5B,KAAK,GACrB3B,aAAaG,YACXjB,QAAQqB,UAAUf,MAAM,EAAEiC,WAC1BtC,eACEoB,UAAUf,MAAM,EAChBiC,SACAzB,SAASO,SAAS,CAACf,MAAM,EACzBQ,SAASiD,KAAK,EACdjD,SAASsD,OAAO;IAE1B,OAAO;QACL/C;QACA0C,OAAOxB;QACPG,QAAQ2B,gBAAgB3B,UAAU,EAAE;QACpC0B,SAAS;YACP,GAAG3B,KAAK;YACRtB,YAAYtB,gBACV4C,MAAMzB,SAAS,EACfX,cAAcgB,UAAUf,MAAM,GAC9BQ,aAAaG,YACTA,YACA;gBAAEC,MAAMJ,SAASsD,OAAO,CAACpD,SAAS;gBAAEG,YAAYL,SAASsD,OAAO,CAACjD,UAAU;YAAC;QAEpF;IACF;AACF;AAEA,SAASmD,QAAQ7B,KAAY,EAAEN,IAAY;IACzC,OAAOM,MAAMzB,SAAS,CAACmB,KAAK,KAAKlB,aAAawB,MAAMhB,aAAa,CAAC8C,QAAQ,CAACpC;AAC7E;AAEA,SAASqC,MAAM/B,KAAY,EAAEgC,aAAsC;IACjE,MAAMC,SAAS,IAAI9B;IACnB,MAAM+B,aAAa,CAACxC;QAClB,IAAI,CAACuC,OAAOE,GAAG,CAACzC,OAAO;YACrB,MAAMjB,OAAOuB,MAAMzB,SAAS,CAACmB,KAAK;YAClC,MAAM0C,SAAS3D,SAASD,YAAY,OAAOtB,MAAMuB,MAAMiB;YACvDuC,OAAOI,GAAG,CAAC3C,MAAM0C,QAAQE,OAAO,OAAOF,OAAOG,QAAQ,GAAG;QAC3D;QACA,OAAON,OAAOvB,GAAG,CAAChB,SAAS;IAC7B;IACA,OAAOsC,cAAcQ,KAAK,CAAC,CAACC;QAC1B,MAAM/C,OAAO+C,aAAa/C,IAAI;QAC9B,IAAI+C,aAAa9D,IAAI,KAAK,UAAU,OAAO,CAACkD,QAAQ7B,OAAON;QAC3D,IAAI+C,aAAa9D,IAAI,KAAK,WAAW,OAAOkD,QAAQ7B,OAAON;QAC3D,IAAI+C,aAAa9D,IAAI,KAAK,YAAY;YACpC,OAAOkD,QAAQ7B,OAAON,SAASM,MAAMZ,SAAS,CAACM,KAAK,KAAK+C,aAAaC,QAAQ;QAChF;QACA,MAAMH,WAAWL,WAAWxC;QAC5B,IAAI6C,aAAa,MAAM,OAAO;QAC9B,IAAIE,aAAa9D,IAAI,KAAK,SAAS;YACjC,MAAMgE,QAAQnB,OAAOoB,MAAM,CAACL,SAASM,MAAM,EAAEJ,aAAaK,IAAI,IAC1DP,SAASM,MAAM,CAACJ,aAAaK,IAAI,CAAC,GAClCtE;YACJ,OAAOb,WAAWgF,OAAOF,aAAaE,KAAK;QAC7C;QACA,IAAIF,aAAa9D,IAAI,KAAK,WAAW;YACnC,OACE6C,OAAOoB,MAAM,CAACL,SAASQ,QAAQ,EAAEN,aAAaK,IAAI,KAClDP,SAASQ,QAAQ,CAACN,aAAaK,IAAI,CAAC,KAAKL,aAAaE,KAAK;QAE/D;QACA,OAAOJ,SAASS,QAAQ,KAAKP,aAAaE,KAAK;IACjD;AACF;AAEA,SAASM,QAAQnC,MAAc;IAC7B,MAAMpB,OAAOoB,OAAOpB,IAAI;IACxB,IAAIoB,OAAOnC,IAAI,KAAK,WAAWmC,OAAOnC,IAAI,KAAK,aAAamC,OAAOnC,IAAI,KAAK,YAAY;QACtF,OAAO;YAACmC;SAAO;IACjB;IACA,IAAIA,OAAOnC,IAAI,KAAK,YAAY,CAAE,CAAA,aAAamC,MAAK,GAAI;QACtD,OAAO;YACL;gBAAEnC,MAAM;gBAAWe;YAAK;eACrB8B,OAAO0B,OAAO,CAACpC,OAAO+B,MAAM,EAAEzC,GAAG,CAAC,CAAC,CAAC0C,MAAMH,MAAM,GAAoB,CAAA;oBACrEhE,MAAM;oBACNe;oBACAoD;oBACAH;gBACF,CAAA;eACGnB,OAAO0B,OAAO,CAACpC,OAAOiC,QAAQ,EAAE3C,GAAG,CAAC,CAAC,CAAC0C,MAAMH,MAAM,GAAoB,CAAA;oBACvEhE,MAAM;oBACNe;oBACAoD;oBACAH;gBACF,CAAA;SACD;IACH;IACA,IAAI7B,OAAOnC,IAAI,KAAK,QAAQ;QAC1B,OAAO;YACL;gBAAEA,MAAM;gBAAUe;YAAK;YACvB;gBAAEf,MAAM;gBAAWe,MAAMoB,OAAOqC,EAAE;YAAC;SACpC;IACH;IACA,OAAO;QAAC;YAAExE,MAAM;YAAUe;QAAK;KAAE;AACnC;AAEA,SAASyB,MAAMP,OAA0B,EAAEwC,KAAa,EAAE1D,IAAY;IACpE,IAAI2D,KAAK3D;IACT,KAAK,MAAMoB,UAAUF,QAAQ0C,KAAK,CAACF,QAAQ,GAAI;QAC7C,IAAItC,OAAOpB,IAAI,KAAK2D,IAAI;QACxB,IAAIvC,OAAOnC,IAAI,KAAK,UAAU,OAAO;QACrC,IAAImC,OAAOnC,IAAI,KAAK,QAAQ0E,KAAKvC,OAAOqC,EAAE;IAC5C;IACA,OAAOE;AACT;AAEA,OAAO,SAASE,OAAOhD,KAAkB,EAAE3B,SAAyB;IAClE,MAAMoB,QAAQpB,UAAUf,MAAM;IAC9B,OAAO0C,MAAMK,OAAO,CAAC4B,KAAK,CAAC,CAAC1B,QAAQsC;QAClC,IAAItC,OAAOnC,IAAI,KAAK,aAAcmC,OAAOnC,IAAI,KAAK,YAAY,aAAamC,QAAS;YAClF,MAAMuC,KAAKlC,MAAMZ,MAAMK,OAAO,EAAEwC,OAAOtC,OAAOpB,IAAI;YAClD,OAAO2D,OAAO,QAAQrD,MAAMzB,SAAS,CAAC8E,GAAG,KAAKvC,OAAO0C,OAAO;QAC9D;QACA,OAAOP,QAAQnC,QAAQ0B,KAAK,CAAC,CAACiB;YAC5B,IAAIA,OAAO9E,IAAI,KAAK,UAAU,OAAOoD,MAAM/B,OAAO;gBAACyD;aAAO;YAC1D,MAAMJ,KAAKlC,MAAMZ,MAAMK,OAAO,EAAEwC,OAAOK,OAAO/D,IAAI;YAClD,OAAO2D,OAAO,QAAQtB,MAAM/B,OAAO;gBAAC;oBAAE,GAAGyD,MAAM;oBAAE/D,MAAM2D;gBAAG;aAAE;QAC9D;IACF;AACF;AAEA,OAAO,SAASK,YACd9E,SAAyB,EACzB0C,KAA6B,EAC7BqC,YAA6C,EAC7CpC,SAAoB;IAEpB,IAAI,CAACD,MAAMT,IAAI,CAAC8C,eAAe,OAAO,EAAE;IACxC,MAAM5D,cAAcnC,cAAcgB,UAAUf,MAAM;IAClD,IAAImC,QAAepB,UAAUf,MAAM;IACnC,MAAM+F,YAA2B,EAAE;IACnC,KAAK,MAAMrD,SAASe,MAAO;QACzB,IAAIqC,aAAapD,UAAU,CAACwB,MAAM/B,OAAOO,MAAMyB,aAAa,GAAG;YAC7D4B,UAAUxC,IAAI,CAACb;YACf;QACF;QACA,MAAMW,YACJK,cAAc,cAAchB,MAAMK,OAAO,CAACC,IAAI,CAAC,CAACC,SAAWA,OAAOnC,IAAI,KAAK,UACvEjB,kBAAkB6C,OAAO;YACvB,GAAGP,KAAK;YACRtB,YAAYtB,gBAAgB4C,MAAMzB,SAAS,EAAEwB;QAC/C,KACAQ;QACNP,QAAQzC,QAAQyC,OAAO;YAACkB;SAAU;IACpC;IACA,OAAO0C;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentshouse/mdruntime",
3
- "version": "0.1.0-alpha.31",
3
+ "version": "0.1.0-alpha.32",
4
4
  "description": "The headless core of MD App",
5
5
  "license": "MIT",
6
6
  "type": "module",