@agentshouse/mdruntime 0.1.0-alpha.9 → 0.1.0-c1954630fadb6
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/AGENTS.md +227 -0
- package/README.md +44 -0
- package/dist/adapter.d.ts +184 -34
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +1 -10
- package/dist/attached-model.d.ts +11 -0
- package/dist/attached-model.d.ts.map +1 -0
- package/dist/attached-model.js +34 -0
- package/dist/attachment.d.ts +3 -0
- package/dist/attachment.d.ts.map +1 -0
- package/dist/attachment.js +8 -0
- package/dist/bootstrap.d.ts +7 -9
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +29 -28
- package/dist/change-set.d.ts +33 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/change-set.js +83 -0
- package/dist/change.d.ts +9 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +6 -5
- package/dist/client.d.ts +38 -32
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +114 -183
- package/dist/collection.d.ts +13 -16
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +45 -88
- package/dist/connection.d.ts +47 -44
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1542 -1158
- package/dist/conversation.d.ts +44 -22
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +540 -328
- package/dist/durability.js +6 -6
- package/dist/file.d.ts +2 -2
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +48 -71
- package/dist/host.d.ts +12 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +97 -119
- package/dist/identity.d.ts +1 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +10 -9
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/log.js +5 -6
- package/dist/memory.d.ts +15 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +255 -220
- package/dist/model.d.ts +10 -29
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +18 -21
- package/dist/observation.d.ts +27 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/observation.js +95 -0
- package/dist/outcome.d.ts +10 -29
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +1 -23
- package/dist/overlay.d.ts +9 -2
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +187 -43
- package/dist/paths.d.ts +0 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +12 -19
- package/dist/query.d.ts +215 -10
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +421 -15
- package/dist/reach.d.ts +40 -0
- package/dist/reach.d.ts.map +1 -0
- package/dist/reach.js +277 -0
- package/dist/react.d.ts +30 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +62 -0
- package/dist/read-side.d.ts +18 -0
- package/dist/read-side.d.ts.map +1 -0
- package/dist/read-side.js +377 -0
- package/dist/refresh.d.ts +5 -5
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +49 -30
- package/dist/replica.d.ts +25 -5
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +227 -38
- package/dist/room-draft.d.ts +127 -0
- package/dist/room-draft.d.ts.map +1 -0
- package/dist/room-draft.js +329 -0
- package/dist/rows.d.ts +41 -0
- package/dist/rows.d.ts.map +1 -0
- package/dist/rows.js +100 -0
- package/dist/save.d.ts +6 -4
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +262 -350
- package/dist/search.d.ts +61 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +125 -0
- package/dist/status.d.ts +4 -6
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +9 -13
- package/dist/store.d.ts +59 -32
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +338 -134
- package/dist/transfer.d.ts +5 -0
- package/dist/transfer.d.ts.map +1 -1
- package/dist/transfer.js +1 -5
- package/dist/wire.d.ts +51 -16
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +77 -108
- package/package.json +17 -11
- package/dist/adapter.js.map +0 -1
- package/dist/bootstrap.js.map +0 -1
- package/dist/change.js.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/collection.js.map +0 -1
- package/dist/connection.js.map +0 -1
- package/dist/conversation.js.map +0 -1
- package/dist/durability.js.map +0 -1
- package/dist/file.js.map +0 -1
- package/dist/host.js.map +0 -1
- package/dist/identity.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/log.js.map +0 -1
- package/dist/memory.js.map +0 -1
- package/dist/model.js.map +0 -1
- package/dist/outcome.js.map +0 -1
- package/dist/overlay.js.map +0 -1
- package/dist/paths.js.map +0 -1
- package/dist/query.js.map +0 -1
- package/dist/refresh.js.map +0 -1
- package/dist/replica.js.map +0 -1
- package/dist/save.js.map +0 -1
- package/dist/status.js.map +0 -1
- package/dist/store.js.map +0 -1
- package/dist/transfer.js.map +0 -1
- package/dist/wire.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ModelResult, type ModelState } from './model.js';
|
|
2
|
+
export type AttachedModel = {
|
|
3
|
+
state: ModelState;
|
|
4
|
+
refused: {
|
|
5
|
+
identity: string;
|
|
6
|
+
rule: string;
|
|
7
|
+
location?: string;
|
|
8
|
+
} | null;
|
|
9
|
+
};
|
|
10
|
+
export declare function attachedModel(answer: ModelResult, previous: ModelState): AttachedModel;
|
|
11
|
+
//# sourceMappingURL=attached-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attached-model.d.ts","sourceRoot":"","sources":["../src/attached-model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAI1E,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACvE,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,GAAG,aAAa,CA+BtF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { verify } from '@agentshouse/mdmodel';
|
|
2
|
+
import { MD_MODEL } from './collection.js';
|
|
3
|
+
import { sameModel } from './model.js';
|
|
4
|
+
const EMPTY_SCHEMA = { verdict: 'accept', model: { types: {} } };
|
|
5
|
+
export function attachedModel(answer, previous) {
|
|
6
|
+
if (answer.kind === 'model-unavailable') {
|
|
7
|
+
return { state: { status: 'unavailable', reason: answer.reason }, refused: null };
|
|
8
|
+
}
|
|
9
|
+
if (previous.status !== 'unavailable' &&
|
|
10
|
+
sameModel(previous.snapshot, answer.snapshot) &&
|
|
11
|
+
previous.snapshot.schema !== answer.snapshot.schema) {
|
|
12
|
+
return { state: { status: 'unavailable', reason: 'invalid' }, refused: null };
|
|
13
|
+
}
|
|
14
|
+
const verified = answer.snapshot.schema === null ? EMPTY_SCHEMA : verify(answer.snapshot.schema);
|
|
15
|
+
if (verified.verdict === 'refuse') {
|
|
16
|
+
return {
|
|
17
|
+
state: { status: 'unavailable', reason: 'invalid' },
|
|
18
|
+
refused: {
|
|
19
|
+
identity: answer.snapshot.identity,
|
|
20
|
+
rule: verified.rule,
|
|
21
|
+
...(verified.location === undefined ? {} : { location: verified.location }),
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
state: {
|
|
27
|
+
status: 'current',
|
|
28
|
+
snapshot: structuredClone(answer.snapshot),
|
|
29
|
+
verifiedWith: MD_MODEL,
|
|
30
|
+
types: verified.model.types,
|
|
31
|
+
},
|
|
32
|
+
refused: null,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../src/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,CAAC,SAAS,cAAc,EAAE,CAAC,EAAE,GAC5C,SAAS,cAAc,EAAE,CAQ3B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function declaredAttachments(pages) {
|
|
2
|
+
const byReference = new Map();
|
|
3
|
+
for (const page of pages) {
|
|
4
|
+
for (const attachment of page)
|
|
5
|
+
byReference.set(attachment.reference, attachment);
|
|
6
|
+
}
|
|
7
|
+
return [...byReference.values()].sort((left, right) => left.reference < right.reference ? -1 : left.reference > right.reference ? 1 : 0);
|
|
8
|
+
}
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import type { AttachedModelBinding } from './model.js';
|
|
2
1
|
import type { ModelState } from './model.js';
|
|
3
|
-
import type { Adapter, AdapterFailure, Authorization, DiscoveredRoom } from './adapter.js';
|
|
4
|
-
import { type
|
|
2
|
+
import type { Adapter, AdapterFailure, Authorization, DiscoveredRoom, RoomModels } from './adapter.js';
|
|
3
|
+
import { type Staged } from './replica.js';
|
|
5
4
|
import { type Unconfirmed } from './transfer.js';
|
|
6
|
-
export type BootstrapOutcome =
|
|
7
|
-
|
|
8
|
-
confirmed: ConfirmedLayer;
|
|
9
|
-
} | Unconfirmed | AdapterFailure;
|
|
10
|
-
export declare function bootstrapRoom(adapter: Adapter, authorization: Authorization, room: DiscoveredRoom, models: {
|
|
5
|
+
export type BootstrapOutcome = Staged | Unconfirmed | AdapterFailure;
|
|
6
|
+
export type HeldModels = {
|
|
11
7
|
collection: ModelState;
|
|
12
8
|
selection: ModelState;
|
|
13
|
-
}
|
|
9
|
+
};
|
|
10
|
+
export type Remodel = (models: RoomModels | undefined, held: HeldModels) => HeldModels;
|
|
11
|
+
export declare function bootstrapRoom(adapter: Adapter, authorization: Authorization, room: DiscoveredRoom, held: HeldModels, remodel: Remodel, continuing: () => boolean): Promise<BootstrapOutcome>;
|
|
14
12
|
//# sourceMappingURL=bootstrap.d.ts.map
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EAGd,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,CAAC;AAErE,MAAM,MAAM,UAAU,GAAG;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC;AAEvF,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,OAAO,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA+C3B"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,55 +1,56 @@
|
|
|
1
|
+
import { declaredAttachments } from './attachment.js';
|
|
1
2
|
import { readStaged } from './replica.js';
|
|
2
3
|
import { unconfirmed } from './transfer.js';
|
|
3
|
-
export async function bootstrapRoom(adapter, authorization, room,
|
|
4
|
+
export async function bootstrapRoom(adapter, authorization, room, held, remodel, continuing) {
|
|
4
5
|
const first = await adapter.bootstrap(authorization, {
|
|
5
6
|
locator: room.locator,
|
|
6
|
-
selection: room.replica.selection
|
|
7
|
+
selection: room.replica.selection,
|
|
7
8
|
});
|
|
8
|
-
if (first.kind !== 'bootstrap')
|
|
9
|
+
if (first.kind !== 'bootstrap')
|
|
10
|
+
return first;
|
|
9
11
|
const roomVersion = first.roomVersion;
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
const
|
|
14
|
-
...first.revisions
|
|
15
|
-
};
|
|
12
|
+
const models = remodel(first.models, held);
|
|
13
|
+
const documents = { ...first.documents };
|
|
14
|
+
const revisions = { ...first.revisions };
|
|
15
|
+
const changes = { ...first.changes };
|
|
16
16
|
const binaryTargets = new Set(first.binaryTargets);
|
|
17
|
+
const attachments = [first.attachments ?? []];
|
|
17
18
|
let pageToken = first.pageToken;
|
|
18
|
-
while(pageToken !== undefined){
|
|
19
|
+
while (pageToken !== undefined) {
|
|
20
|
+
if (!continuing())
|
|
21
|
+
return unconfirmed;
|
|
19
22
|
const page = await adapter.bootstrap(authorization, {
|
|
20
23
|
locator: room.locator,
|
|
21
24
|
selection: room.replica.selection,
|
|
22
|
-
pageToken
|
|
25
|
+
pageToken,
|
|
23
26
|
});
|
|
24
|
-
if (page.kind !== 'bootstrap')
|
|
25
|
-
|
|
27
|
+
if (page.kind !== 'bootstrap')
|
|
28
|
+
return page;
|
|
29
|
+
if (page.roomVersion !== roomVersion)
|
|
30
|
+
return unconfirmed;
|
|
26
31
|
Object.assign(documents, page.documents);
|
|
27
32
|
Object.assign(revisions, page.revisions);
|
|
28
|
-
|
|
33
|
+
Object.assign(changes, page.changes);
|
|
34
|
+
for (const target of page.binaryTargets)
|
|
35
|
+
binaryTargets.add(target);
|
|
36
|
+
attachments.push(page.attachments ?? []);
|
|
29
37
|
pageToken = page.pageToken;
|
|
30
38
|
}
|
|
31
|
-
|
|
39
|
+
return readStaged({
|
|
32
40
|
locator: room.locator,
|
|
33
|
-
collectionRoot: room.collectionRoot,
|
|
34
41
|
name: room.name,
|
|
35
42
|
operations: room.operations,
|
|
36
43
|
replica: room.replica,
|
|
37
|
-
attachedModel: room.attachedModel,
|
|
38
44
|
model: models.collection,
|
|
39
45
|
typedSelection: room.typedSelection ?? null,
|
|
40
46
|
selectionModel: models.selection,
|
|
41
47
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
42
48
|
roomVersion,
|
|
43
49
|
documents,
|
|
44
|
-
binaryTargets: [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
kind: 'staged',
|
|
51
|
-
confirmed
|
|
52
|
-
};
|
|
50
|
+
binaryTargets: [...binaryTargets].sort(),
|
|
51
|
+
revisions,
|
|
52
|
+
changes,
|
|
53
|
+
written: Object.fromEntries(Object.keys(documents).map((path) => [path, roomVersion])),
|
|
54
|
+
attachments: declaredAttachments(attachments),
|
|
55
|
+
});
|
|
53
56
|
}
|
|
54
|
-
|
|
55
|
-
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Replica } from './replica.js';
|
|
2
|
+
import { type Row } from './rows.js';
|
|
3
|
+
export type DocumentChange = {
|
|
4
|
+
locator: string;
|
|
5
|
+
path: string;
|
|
6
|
+
before: readonly Row[];
|
|
7
|
+
after: readonly Row[];
|
|
8
|
+
};
|
|
9
|
+
export type MessageChange = {
|
|
10
|
+
conversation: string;
|
|
11
|
+
identity: string;
|
|
12
|
+
};
|
|
13
|
+
export type ChangeSet = {
|
|
14
|
+
documents: readonly DocumentChange[];
|
|
15
|
+
drafts: readonly {
|
|
16
|
+
locator: string;
|
|
17
|
+
path: string;
|
|
18
|
+
}[];
|
|
19
|
+
rooms: readonly string[];
|
|
20
|
+
queues: readonly string[];
|
|
21
|
+
presentations: readonly string[];
|
|
22
|
+
messages: readonly MessageChange[];
|
|
23
|
+
conversations: readonly string[];
|
|
24
|
+
};
|
|
25
|
+
export declare function changeSet(locator: string, before: Replica | null, after: Replica | null, changed?: {
|
|
26
|
+
drafts?: readonly string[];
|
|
27
|
+
room?: boolean;
|
|
28
|
+
queue?: boolean;
|
|
29
|
+
presentation?: string;
|
|
30
|
+
}): ChangeSet;
|
|
31
|
+
export declare function conversationChangeSet(messages: readonly MessageChange[], conversations: readonly string[]): ChangeSet;
|
|
32
|
+
export declare function mergeChangeSets(sets: readonly ChangeSet[]): ChangeSet;
|
|
33
|
+
//# sourceMappingURL=change-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;IACvB,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAqBF,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,KAAK,EAAE,OAAO,GAAG,IAAI,EACrB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,SAAS,CAiDX;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,SAAS,CAUX;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAUrE"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { sameChange } from './overlay.js';
|
|
2
|
+
import { beneath } from './paths.js';
|
|
3
|
+
import { compositionOf, sameMembership } from './replica.js';
|
|
4
|
+
import { rowsOf } from './rows.js';
|
|
5
|
+
function rowsAt(locator, replica, path) {
|
|
6
|
+
if (replica === null)
|
|
7
|
+
return [];
|
|
8
|
+
const document = replica.visible.collection.documents[path];
|
|
9
|
+
if (document === undefined && !replica.visible.binaryTargets.includes(path)) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
return rowsOf(locator, path, document ?? null, compositionOf(replica.confirmed.record), replica.visible.changes[path] ?? null);
|
|
13
|
+
}
|
|
14
|
+
function modelShape(model) {
|
|
15
|
+
return model.status === 'unavailable' ? 'unavailable' : JSON.stringify(model.types);
|
|
16
|
+
}
|
|
17
|
+
export function changeSet(locator, before, after, changed = {}) {
|
|
18
|
+
const paths = new Set([
|
|
19
|
+
...Object.keys(before?.visible.documents ?? {}),
|
|
20
|
+
...Object.keys(after?.visible.documents ?? {}),
|
|
21
|
+
...(before?.visible.binaryTargets ?? []),
|
|
22
|
+
...(after?.visible.binaryTargets ?? []),
|
|
23
|
+
]);
|
|
24
|
+
const documents = [];
|
|
25
|
+
const oldRoom = before?.confirmed.record;
|
|
26
|
+
const newRoom = after?.confirmed.record;
|
|
27
|
+
const collectionChanged = oldRoom !== undefined &&
|
|
28
|
+
newRoom !== undefined &&
|
|
29
|
+
modelShape(oldRoom.model) !== modelShape(newRoom.model);
|
|
30
|
+
const selectionChanged = oldRoom !== undefined &&
|
|
31
|
+
newRoom !== undefined &&
|
|
32
|
+
modelShape(oldRoom.selectionModel) !== modelShape(newRoom.selectionModel);
|
|
33
|
+
const reclassified = oldRoom !== undefined && newRoom !== undefined && !sameMembership(oldRoom, newRoom);
|
|
34
|
+
for (const path of paths) {
|
|
35
|
+
const selected = newRoom?.typedSelection?.roots.some((root) => beneath(root, path)) ?? false;
|
|
36
|
+
const retyped = selected ? selectionChanged : collectionChanged;
|
|
37
|
+
if (before?.visible.documents[path] === after?.visible.documents[path] &&
|
|
38
|
+
before?.visible.binaryTargets.includes(path) ===
|
|
39
|
+
after?.visible.binaryTargets.includes(path) &&
|
|
40
|
+
before?.visible.revisions[path] === after?.visible.revisions[path] &&
|
|
41
|
+
sameChange(before?.visible.changes[path], after?.visible.changes[path]) &&
|
|
42
|
+
!retyped &&
|
|
43
|
+
!reclassified)
|
|
44
|
+
continue;
|
|
45
|
+
documents.push({
|
|
46
|
+
locator,
|
|
47
|
+
path,
|
|
48
|
+
before: rowsAt(locator, before, path),
|
|
49
|
+
after: rowsAt(locator, after, path),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
documents,
|
|
54
|
+
drafts: (changed.drafts ?? []).map((path) => ({ locator, path })),
|
|
55
|
+
rooms: changed.room ? [locator] : [],
|
|
56
|
+
queues: changed.queue ? [locator] : [],
|
|
57
|
+
presentations: changed.presentation === undefined ? [] : [changed.presentation],
|
|
58
|
+
messages: [],
|
|
59
|
+
conversations: [],
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function conversationChangeSet(messages, conversations) {
|
|
63
|
+
return {
|
|
64
|
+
documents: [],
|
|
65
|
+
drafts: [],
|
|
66
|
+
rooms: [],
|
|
67
|
+
queues: [],
|
|
68
|
+
presentations: [],
|
|
69
|
+
messages,
|
|
70
|
+
conversations: [...new Set(conversations)],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export function mergeChangeSets(sets) {
|
|
74
|
+
return {
|
|
75
|
+
documents: sets.flatMap((set) => set.documents),
|
|
76
|
+
drafts: sets.flatMap((set) => set.drafts),
|
|
77
|
+
rooms: [...new Set(sets.flatMap((set) => set.rooms))],
|
|
78
|
+
queues: [...new Set(sets.flatMap((set) => set.queues))],
|
|
79
|
+
presentations: [...new Set(sets.flatMap((set) => set.presentations))],
|
|
80
|
+
messages: sets.flatMap((set) => set.messages),
|
|
81
|
+
conversations: [...new Set(sets.flatMap((set) => set.conversations))],
|
|
82
|
+
};
|
|
83
|
+
}
|
package/dist/change.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export type Change = {
|
|
|
17
17
|
readonly path: string;
|
|
18
18
|
readonly fields: Readonly<Record<string, unknown>>;
|
|
19
19
|
readonly sections: Readonly<Record<string, string>>;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'create';
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly content: string;
|
|
20
24
|
} | {
|
|
21
25
|
readonly kind: 'replace';
|
|
22
26
|
readonly path: string;
|
|
@@ -54,12 +58,17 @@ export type Precondition = {
|
|
|
54
58
|
readonly kind: 'absent';
|
|
55
59
|
readonly path: string;
|
|
56
60
|
};
|
|
61
|
+
export type WrittenBy = {
|
|
62
|
+
readonly app: string;
|
|
63
|
+
readonly release: string;
|
|
64
|
+
};
|
|
57
65
|
export type ChangeBatch = {
|
|
58
66
|
validation?: import('./model.js').ValidationReceipt;
|
|
59
67
|
readonly id: string;
|
|
60
68
|
readonly baseRoomVersion: string;
|
|
61
69
|
readonly changes: readonly Change[];
|
|
62
70
|
readonly preconditions: readonly Precondition[];
|
|
71
|
+
readonly writtenBy?: WrittenBy;
|
|
63
72
|
};
|
|
64
73
|
export declare function immutable(batch: ChangeBatch): ChangeBatch;
|
|
65
74
|
//# sourceMappingURL=change.d.ts.map
|
package/dist/change.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../src/change.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,YAAY,GACpB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CAAC,EAAE,OAAO,YAAY,EAAE,iBAAiB,CAAC;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../src/change.ts"],"names":[],"mappings":"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"}
|
package/dist/change.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
function frozen(value) {
|
|
2
|
-
if (Array.isArray(value))
|
|
3
|
-
|
|
2
|
+
if (Array.isArray(value))
|
|
3
|
+
return Object.freeze(value.map((item) => frozen(item)));
|
|
4
|
+
if (value === null || typeof value !== 'object')
|
|
5
|
+
return value;
|
|
4
6
|
const copy = {};
|
|
5
|
-
for (const [name, item] of Object.entries(value))
|
|
7
|
+
for (const [name, item] of Object.entries(value))
|
|
8
|
+
copy[name] = frozen(item);
|
|
6
9
|
return Object.freeze(copy);
|
|
7
10
|
}
|
|
8
11
|
export function immutable(batch) {
|
|
9
12
|
return frozen(batch);
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=change.js.map
|
package/dist/client.d.ts
CHANGED
|
@@ -1,37 +1,35 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
1
|
+
import type { AppRoom, ConnectionRefusal, HistoryQuery, RoomTypes, SavedRoomDraft, SaveResult } from './connection.js';
|
|
2
|
+
import type { HistoryResult, ServiceMode } from './adapter.js';
|
|
3
|
+
import type { ChatDraft, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
|
|
4
|
+
import { type Observation } from './observation.js';
|
|
5
|
+
import type { CallResult, QueueEntry } from './outcome.js';
|
|
6
|
+
import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult } from './query.js';
|
|
7
|
+
import type { RoomDraft, RoomDraftParts, RoomDraftWrite } from './room-draft.js';
|
|
8
|
+
import type { SearchRequest, SearchResult } from './search.js';
|
|
7
9
|
import type { SyncStatus } from './status.js';
|
|
8
10
|
import { type RuntimePort } from './wire.js';
|
|
9
11
|
export type MdRuntimeClient = {
|
|
10
12
|
rooms(): Promise<readonly AppRoom[]>;
|
|
11
|
-
query
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
draft: {
|
|
15
|
-
list(): Promise<readonly DraftEntry[]>;
|
|
16
|
-
read(locator: string, path: string): Promise<unknown>;
|
|
17
|
-
replace(locator: string, path: string, content: unknown): Promise<void>;
|
|
18
|
-
discard(locator: string, path: string): Promise<void>;
|
|
13
|
+
query: {
|
|
14
|
+
(query: DocumentQuery): Promise<DocumentResult>;
|
|
15
|
+
(query: GroupQuery): Promise<GroupResult>;
|
|
19
16
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
search(request: SearchRequest): Promise<SearchResult>;
|
|
18
|
+
types(locator: string): Promise<RoomTypes>;
|
|
19
|
+
roomDraft: {
|
|
20
|
+
list(): Promise<readonly RoomDraft[]>;
|
|
21
|
+
read(room: string, path: string): Promise<RoomDraft | null>;
|
|
22
|
+
write(room: string, path: string, revision: string | null, parts: RoomDraftParts): Promise<RoomDraftWrite>;
|
|
23
|
+
discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
|
|
24
24
|
};
|
|
25
|
+
save(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;
|
|
25
26
|
presentation: {
|
|
26
27
|
read(): Promise<unknown>;
|
|
27
28
|
write(value: unknown): Promise<void>;
|
|
28
29
|
};
|
|
29
30
|
conversation: {
|
|
30
31
|
list(): Promise<readonly ConversationEntry[]>;
|
|
31
|
-
read(conversation: string): Promise<ConversationView>;
|
|
32
|
-
older(conversation: string): Promise<CallResult | null>;
|
|
33
|
-
compose(conversation: string, instruction: UnsentInstruction): Promise<void>;
|
|
34
|
-
discard(conversation: string): Promise<void>;
|
|
32
|
+
read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;
|
|
35
33
|
create(input: unknown): Promise<CallResult>;
|
|
36
34
|
send(conversation: string): Promise<CallResult>;
|
|
37
35
|
answer(conversation: string, answer: unknown): Promise<CallResult>;
|
|
@@ -40,24 +38,32 @@ export type MdRuntimeClient = {
|
|
|
40
38
|
cancel(conversation: string, turn: string): Promise<CallResult>;
|
|
41
39
|
delete(conversation: string): Promise<CallResult>;
|
|
42
40
|
};
|
|
41
|
+
chatDraft: {
|
|
42
|
+
write(conversation: string, draft: ChatDraft): Promise<void>;
|
|
43
|
+
discard(conversation: string): Promise<void>;
|
|
44
|
+
};
|
|
43
45
|
history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryResult>;
|
|
44
46
|
call(name: string, input: unknown): Promise<CallResult>;
|
|
47
|
+
reached(locator: string, roomVersion: string, path?: string): Promise<boolean>;
|
|
45
48
|
log(): Promise<string>;
|
|
46
|
-
storageLoss(): Promise<string | null>;
|
|
47
49
|
persistence(): Promise<boolean>;
|
|
48
50
|
observe: {
|
|
49
|
-
(topic: '
|
|
50
|
-
(topic: '
|
|
51
|
-
(topic: '
|
|
52
|
-
(topic: '
|
|
53
|
-
(topic: '
|
|
54
|
-
(topic: '
|
|
55
|
-
(topic: '
|
|
56
|
-
(topic: '
|
|
57
|
-
(topic: '
|
|
51
|
+
(topic: 'deployment-facts'): Promise<Observation<unknown>>;
|
|
52
|
+
(topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
|
|
53
|
+
(topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
|
|
54
|
+
(topic: 'storage-loss'): Promise<Observation<string | null>>;
|
|
55
|
+
(topic: 'sync-status'): Promise<Observation<SyncStatus>>;
|
|
56
|
+
(topic: 'service-mode'): Promise<Observation<ServiceMode>>;
|
|
57
|
+
(topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult>>;
|
|
58
|
+
(topic: 'query', query: GroupQuery): Promise<Observation<GroupResult>>;
|
|
59
|
+
(topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
|
|
60
|
+
(topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
|
|
61
|
+
(topic: 'presentation'): Promise<Observation<unknown>>;
|
|
62
|
+
(topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
|
|
58
63
|
};
|
|
59
64
|
reauthorize(): Promise<void>;
|
|
60
65
|
};
|
|
61
66
|
export declare function connectMdRuntime(port: RuntimePort): MdRuntimeClient;
|
|
67
|
+
export type { Observation } from './observation.js';
|
|
62
68
|
export type { RuntimePort } from './wire.js';
|
|
63
69
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|