@agentshouse/mdruntime 0.1.0-c2c52158b7381 → 0.1.0-c2ef9303a058d
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/README.md +11 -9
- package/dist/adapter.d.ts +107 -70
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +5 -11
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +36 -47
- package/dist/binary.d.ts +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +26 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +177 -130
- package/dist/chain.d.ts +12 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +6 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +11 -90
- package/dist/client.d.ts +16 -12
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +57 -8
- package/dist/collection.d.ts +10 -21
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +39 -372
- package/dist/compile.d.ts +11 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +586 -0
- package/dist/connection.d.ts +16 -14
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +2331 -1524
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{chat/context.js → context.js} +1 -4
- package/dist/conversation.d.ts +18 -15
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +271 -174
- package/dist/durability.d.ts +6 -4
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +5 -3
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +32 -29
- package/dist/file.d.ts +2 -11
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +6 -4
- package/dist/host.d.ts +3 -7
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +55 -38
- package/dist/identity.d.ts +0 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -6
- package/dist/index.d.ts +15 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/job.d.ts +14 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +28 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +127 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +13 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +221 -101
- package/dist/messages.d.ts +28 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +89 -0
- package/dist/model.d.ts +8 -8
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +7 -13
- package/dist/observation.d.ts +15 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +91 -2
- package/dist/outcome.d.ts +13 -6
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +16 -5
- package/dist/overlay.d.ts +0 -3
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +2 -152
- package/dist/paths.d.ts +1 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +4 -0
- package/dist/query.d.ts +10 -206
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -494
- package/dist/reach.d.ts +14 -9
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +99 -107
- package/dist/react.d.ts +3 -1
- package/dist/react.d.ts.map +1 -1
- package/dist/readiness.d.ts +14 -17
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +2 -8
- package/dist/recovery.d.ts +1 -0
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +26 -0
- package/dist/refresh.d.ts +18 -15
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +139 -77
- package/dist/replica.d.ts +58 -38
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +291 -217
- package/dist/room-draft.d.ts +22 -5
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +131 -51
- package/dist/rows.d.ts +31 -31
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +59 -123
- package/dist/save.d.ts +11 -10
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +72 -64
- package/dist/search.d.ts +12 -95
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -317
- package/dist/shared.d.ts +0 -4
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +1 -41
- package/dist/status.d.ts +4 -3
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -1
- package/dist/store.d.ts +77 -97
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +142 -547
- package/dist/stored.d.ts +129 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +524 -0
- package/dist/tables.d.ts +255 -170
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +204 -23
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +1 -1
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +28 -20
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +1 -11
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -70
- package/dist/wire.d.ts +14 -9
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +5 -3
- package/package.json +14 -19
- package/AGENTS.md +0 -308
- package/dist/chat/acts.d.ts +0 -33
- package/dist/chat/acts.d.ts.map +0 -1
- package/dist/chat/acts.js +0 -36
- package/dist/chat/context.d.ts +0 -3
- package/dist/chat/context.d.ts.map +0 -1
- package/dist/chat/earlier.d.ts +0 -10
- package/dist/chat/earlier.d.ts.map +0 -1
- package/dist/chat/earlier.js +0 -54
- package/dist/chat/house.d.ts +0 -25
- package/dist/chat/house.d.ts.map +0 -1
- package/dist/chat/house.js +0 -38
- package/dist/chat/input.d.ts +0 -11
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -92
- package/dist/chat/kit.d.ts +0 -61
- package/dist/chat/kit.d.ts.map +0 -1
- package/dist/chat/kit.js +0 -123
- package/dist/chat/lasting.d.ts +0 -6
- package/dist/chat/lasting.d.ts.map +0 -1
- package/dist/chat/lasting.js +0 -19
- package/dist/chat/list.d.ts +0 -28
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -103
- package/dist/chat/markdown.d.ts +0 -21
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -246
- package/dist/chat/message.d.ts +0 -7
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -237
- package/dist/chat/messages.d.ts +0 -29
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -190
- package/dist/chat/name.d.ts +0 -7
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -12
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -19
- package/dist/chat/overlay.d.ts +0 -32
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -103
- package/dist/chat/parts.d.ts +0 -58
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -120
- package/dist/chat/pieces.d.ts +0 -62
- package/dist/chat/pieces.d.ts.map +0 -1
- package/dist/chat/pieces.js +0 -1110
- package/dist/chat/process.d.ts +0 -20
- package/dist/chat/process.d.ts.map +0 -1
- package/dist/chat/process.js +0 -32
- package/dist/chat/provider.d.ts +0 -68
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -619
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -69
- package/dist/chat/questions.d.ts +0 -31
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/questions.js +0 -111
- package/dist/chat/read.d.ts +0 -5
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/read.js +0 -13
- package/dist/chat/ready.d.ts +0 -37
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -93
- package/dist/chat/room-file.d.ts +0 -8
- package/dist/chat/room-file.d.ts.map +0 -1
- package/dist/chat/room-file.js +0 -72
- package/dist/chat/steady.d.ts +0 -3
- package/dist/chat/steady.d.ts.map +0 -1
- package/dist/chat/steady.js +0 -26
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -306
- package/dist/chat.d.ts +0 -15
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
- package/dist/read-side.d.ts +0 -27
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -1179
- package/dist/reads.d.ts +0 -11
- package/dist/reads.d.ts.map +0 -1
- package/dist/reads.js +0 -98
package/dist/bootstrap.d.ts
CHANGED
|
@@ -1,25 +1,40 @@
|
|
|
1
1
|
import type { ModelState } from './model.js';
|
|
2
|
-
import type { Adapter, AdapterFailure, Authorization, DiscoveredRoom, HeldContent, RetryableRefusal, RoomModels } from './adapter.js';
|
|
3
|
-
import {
|
|
4
|
-
import type {
|
|
5
|
-
import { type
|
|
2
|
+
import type { Adapter, TypedPath, AdapterFailure, Authorization, DiscoveredRoom, HeldContent, RetryableRefusal, RoomModels } from './adapter.js';
|
|
3
|
+
import type { Composition } from './collection.js';
|
|
4
|
+
import type { InstallationStep } from './readiness.js';
|
|
5
|
+
import { type Refreshing } from './refresh.js';
|
|
6
|
+
import type { ReplicaRecord } from './replica.js';
|
|
7
|
+
import type { StagedPage, TransferRecord } from './store.js';
|
|
8
|
+
import { type Unconfirmed } from './transfer.js';
|
|
6
9
|
export type Bootstrapped = {
|
|
7
10
|
kind: 'staged';
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
record: ReplicaRecord;
|
|
12
|
+
refreshed: boolean;
|
|
10
13
|
};
|
|
11
|
-
export type BootstrapOutcome = Bootstrapped |
|
|
14
|
+
export type BootstrapOutcome = Bootstrapped | Unconfirmed | RetryableRefusal | AdapterFailure;
|
|
12
15
|
export type HeldModels = {
|
|
13
16
|
collection: ModelState;
|
|
14
|
-
selection: ModelState;
|
|
15
17
|
};
|
|
16
18
|
export type Remodel = (models: RoomModels | undefined, held: HeldModels) => HeldModels;
|
|
17
19
|
export type Reads = Pick<Adapter, 'bootstrap' | 'refresh' | 'reached'>;
|
|
20
|
+
export type Arriving = {
|
|
21
|
+
at(bytes: number): void;
|
|
22
|
+
end(): void;
|
|
23
|
+
};
|
|
18
24
|
export type Staging = {
|
|
19
25
|
held(locator: string): TransferRecord | null;
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
turn(locator: string, step: InstallationStep): Promise<() => void>;
|
|
27
|
+
unqueued(): Promise<void>;
|
|
28
|
+
queued(text: number): () => void;
|
|
29
|
+
arriving(locator: string): Arriving;
|
|
30
|
+
readonly streamed: boolean;
|
|
31
|
+
stage(record: TransferRecord, page: StagedPage, composition: Composition): Promise<TransferRecord | null>;
|
|
32
|
+
derive(locator: string, key: number, composition: Composition): Promise<boolean>;
|
|
33
|
+
refreshing(locator: string, key: number, composition: Composition): Promise<Refreshing>;
|
|
22
34
|
abandon(locator: string): Promise<void>;
|
|
35
|
+
setAside(locator: string): Promise<void>;
|
|
36
|
+
release(key: number): Promise<void>;
|
|
37
|
+
content(key: number): HeldContent;
|
|
23
38
|
};
|
|
24
|
-
export declare function bootstrapRoom(adapter: Reads, authorization: Authorization, room: DiscoveredRoom, held: HeldModels, remodel: Remodel, continuing: () => boolean, staging: Staging, reuse: HeldContent | null): Promise<BootstrapOutcome>;
|
|
39
|
+
export declare function bootstrapRoom(adapter: Reads, authorization: Authorization, room: DiscoveredRoom, held: HeldModels, builtIn: ModelState, typedPaths: readonly TypedPath[], remodel: Remodel, continuing: () => boolean, staging: Staging, reuse: HeldContent | null): Promise<BootstrapOutcome>;
|
|
25
40
|
//# 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,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,164 +1,211 @@
|
|
|
1
1
|
import { transferIdentity } from './identity.js';
|
|
2
|
-
import { advancement } from './refresh.js';
|
|
3
|
-
import {
|
|
4
|
-
import { readStaged } from './replica.js';
|
|
2
|
+
import { advancement, pageEntries } from './refresh.js';
|
|
3
|
+
import { entriesIn } from './shared.js';
|
|
5
4
|
import { unconfirmed } from './transfer.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
const written = {};
|
|
15
|
-
for (const [path] of entriesIn(page.documents)) {
|
|
16
|
-
written[path] = page.roomVersion;
|
|
17
|
-
yield ROW_WEIGHT;
|
|
18
|
-
}
|
|
19
|
-
const binaries = {};
|
|
20
|
-
for (const [path, binary] of acceptedBinaries(page.binaryFiles)) {
|
|
21
|
-
binaries[path] = binary;
|
|
22
|
-
yield ROW_WEIGHT;
|
|
23
|
-
}
|
|
5
|
+
const NOTHING_PRIOR = () => Promise.resolve(new Map());
|
|
6
|
+
function textOf(page) {
|
|
7
|
+
let text = 0;
|
|
8
|
+
for (const [, content] of entriesIn(page.documents))
|
|
9
|
+
text += content.length;
|
|
10
|
+
return text;
|
|
11
|
+
}
|
|
12
|
+
async function pageOf(page) {
|
|
24
13
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
fileIds: page.fileIds ?? {},
|
|
28
|
-
changes: page.changes,
|
|
29
|
-
written,
|
|
30
|
-
binaries,
|
|
14
|
+
entries: await pageEntries(page, [], page.roomVersion, NOTHING_PRIOR),
|
|
15
|
+
folders: page.folders ?? [],
|
|
31
16
|
};
|
|
32
17
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return;
|
|
37
|
-
for (const name of LAYER) {
|
|
38
|
-
for (const [path, value] of entriesIn(layer[name])) {
|
|
39
|
-
into[name].set(path, value);
|
|
40
|
-
yield ROW_WEIGHT;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function* heldContent(gathered) {
|
|
18
|
+
function heldTogether(first, second) {
|
|
19
|
+
if (first === null)
|
|
20
|
+
return second;
|
|
45
21
|
return {
|
|
46
|
-
|
|
47
|
-
|
|
22
|
+
async files(after, limit) {
|
|
23
|
+
const [left, right] = await Promise.all([
|
|
24
|
+
first.files(after, limit),
|
|
25
|
+
second.files(after, limit),
|
|
26
|
+
]);
|
|
27
|
+
const merged = new Map([...left, ...right].map((file) => [file.path, file]));
|
|
28
|
+
return [...merged.values()]
|
|
29
|
+
.sort((one, other) => (one.path < other.path ? -1 : one.path > other.path ? 1 : 0))
|
|
30
|
+
.slice(0, limit);
|
|
31
|
+
},
|
|
32
|
+
async contents(paths) {
|
|
33
|
+
const [left, right] = await Promise.all([first.contents(paths), second.contents(paths)]);
|
|
34
|
+
return new Map([...left, ...right]);
|
|
35
|
+
},
|
|
48
36
|
};
|
|
49
37
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
38
|
+
const NO_CONTENT = {
|
|
39
|
+
files: () => Promise.resolve([]),
|
|
40
|
+
contents: () => Promise.resolve(new Map()),
|
|
41
|
+
};
|
|
42
|
+
export async function bootstrapRoom(adapter, authorization, room, held, builtIn, typedPaths, remodel, continuing, staging, reuse) {
|
|
43
|
+
if (staging.held(room.locator) !== null)
|
|
44
|
+
await staging.abandon(room.locator);
|
|
45
|
+
const begun = (pool) => started(adapter, authorization, room, held, builtIn, typedPaths, remodel, continuing, staging, pool);
|
|
46
|
+
const first = await begun(reuse);
|
|
47
|
+
if (first.kind !== 'expired')
|
|
48
|
+
return first;
|
|
49
|
+
await staging.setAside(room.locator);
|
|
50
|
+
try {
|
|
51
|
+
const replacement = await begun(heldTogether(reuse, first.held));
|
|
52
|
+
if (replacement.kind !== 'expired')
|
|
53
|
+
return replacement;
|
|
54
|
+
await staging.abandon(room.locator);
|
|
55
|
+
return unconfirmed;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
finally {
|
|
58
|
+
if (first.key !== null)
|
|
59
|
+
await staging.release(first.key);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function dropped(ahead) {
|
|
63
|
+
void ahead?.fetched.then(({ next, written }) => {
|
|
64
|
+
written();
|
|
65
|
+
dropped(next);
|
|
66
|
+
}, () => { });
|
|
59
67
|
}
|
|
60
|
-
function
|
|
61
|
-
if (pool === null)
|
|
62
|
-
return layer;
|
|
68
|
+
function compositionFor(room, models, builtIn, typedPaths) {
|
|
63
69
|
return {
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
model: models.collection,
|
|
71
|
+
selection: room.typedSelection === undefined
|
|
72
|
+
? null
|
|
73
|
+
: { roots: room.typedSelection.roots, model: builtIn },
|
|
74
|
+
typedPaths,
|
|
66
75
|
};
|
|
67
76
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
async function started(adapter, authorization, room, held, builtIn, typedPaths, remodel, continuing, staging, pool) {
|
|
78
|
+
let outcome;
|
|
79
|
+
try {
|
|
80
|
+
outcome = await bundle(adapter, authorization, room, held, builtIn, typedPaths, remodel, continuing, staging, pool);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
await staging.abandon(room.locator).catch(() => { });
|
|
84
|
+
throw error;
|
|
85
|
+
}
|
|
86
|
+
if (outcome.kind !== 'staged' && outcome.kind !== 'expired') {
|
|
87
|
+
await staging.abandon(room.locator);
|
|
88
|
+
}
|
|
89
|
+
return outcome;
|
|
79
90
|
}
|
|
80
|
-
async function bundle(adapter, authorization, room, held, remodel, continuing, staging,
|
|
91
|
+
async function bundle(adapter, authorization, room, held, builtIn, typedPaths, remodel, continuing, staging, pool) {
|
|
81
92
|
const locator = room.locator;
|
|
82
93
|
const selection = room.replica.selection;
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
const ending = new AbortController();
|
|
95
|
+
const arriving = staging.arriving(locator);
|
|
96
|
+
const downloaded = await staging.turn(locator, 'downloading');
|
|
97
|
+
const asking = (token) => adapter.bootstrap(authorization, {
|
|
98
|
+
locator,
|
|
99
|
+
selection,
|
|
100
|
+
signal: ending.signal,
|
|
101
|
+
...(token === null
|
|
102
|
+
? { arriving: (bytes) => arriving.at(bytes) }
|
|
103
|
+
: { pageToken: token }),
|
|
104
|
+
...(pool === null ? {} : { held: pool }),
|
|
105
|
+
});
|
|
106
|
+
const fetching = (token) => {
|
|
107
|
+
const fetched = (async () => {
|
|
108
|
+
await staging.unqueued();
|
|
109
|
+
const page = continuing() ? await asking(token) : unconfirmed;
|
|
110
|
+
if (page.kind !== 'bootstrap')
|
|
111
|
+
return { page, next: null, written: () => { } };
|
|
112
|
+
const written = staging.queued(textOf(page));
|
|
113
|
+
const later = page.pageToken;
|
|
114
|
+
if (later === undefined) {
|
|
115
|
+
downloaded();
|
|
116
|
+
arriving.end();
|
|
117
|
+
}
|
|
118
|
+
return { page, written, next: later === undefined || !continuing() ? null : fetching(later) };
|
|
119
|
+
})();
|
|
120
|
+
fetched.catch(() => { });
|
|
121
|
+
return { fetched };
|
|
90
122
|
};
|
|
91
|
-
|
|
92
|
-
let
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
let transfer = null;
|
|
124
|
+
let ahead = fetching(null);
|
|
125
|
+
try {
|
|
126
|
+
while (ahead !== null) {
|
|
127
|
+
if (!continuing())
|
|
128
|
+
return unconfirmed;
|
|
129
|
+
const fetched = await ahead.fetched;
|
|
130
|
+
ahead = fetched.next;
|
|
131
|
+
try {
|
|
132
|
+
if (!continuing())
|
|
133
|
+
return unconfirmed;
|
|
134
|
+
const page = fetched.page;
|
|
135
|
+
if (page.kind === 'beyond-horizon') {
|
|
136
|
+
const key = transfer?.key ?? null;
|
|
137
|
+
return { kind: 'expired', held: key === null ? NO_CONTENT : staging.content(key), key };
|
|
138
|
+
}
|
|
139
|
+
if (page.kind !== 'bootstrap')
|
|
140
|
+
return page;
|
|
141
|
+
const models = remodel(page.models, transfer?.models ?? held);
|
|
142
|
+
const staged = await staging.stage({
|
|
143
|
+
locator,
|
|
144
|
+
transfer: transfer?.transfer ?? transferIdentity(),
|
|
145
|
+
selection,
|
|
146
|
+
from: transfer !== null && adapter.reached(locator, page.roomVersion, transfer.from)
|
|
147
|
+
? transfer.from
|
|
148
|
+
: page.roomVersion,
|
|
149
|
+
last: transfer !== null && !adapter.reached(locator, page.roomVersion, transfer.last)
|
|
150
|
+
? transfer.last
|
|
151
|
+
: page.roomVersion,
|
|
152
|
+
done: { bytes: (transfer?.done.bytes ?? 0) + (page.bytes ?? 0) },
|
|
153
|
+
models,
|
|
154
|
+
key: transfer?.key ?? null,
|
|
155
|
+
}, await pageOf(page), compositionFor(room, models, builtIn, typedPaths));
|
|
156
|
+
if (staged === null)
|
|
157
|
+
return unconfirmed;
|
|
158
|
+
transfer = staged;
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
fetched.written();
|
|
162
|
+
}
|
|
109
163
|
}
|
|
110
|
-
transfer = {
|
|
111
|
-
locator,
|
|
112
|
-
transfer: transfer?.transfer ?? transferIdentity(),
|
|
113
|
-
selection,
|
|
114
|
-
from: transfer !== null && adapter.reached(locator, page.roomVersion, transfer.from)
|
|
115
|
-
? transfer.from
|
|
116
|
-
: page.roomVersion,
|
|
117
|
-
last: transfer !== null && !adapter.reached(locator, page.roomVersion, transfer.last)
|
|
118
|
-
? transfer.last
|
|
119
|
-
: page.roomVersion,
|
|
120
|
-
pageToken: page.pageToken ?? null,
|
|
121
|
-
models: remodel(page.models, transfer?.models ?? held),
|
|
122
|
-
};
|
|
123
|
-
const staged = await stepped(pageLayer(page));
|
|
124
|
-
if (!(await staging.stage(transfer, staged)))
|
|
125
|
-
return unconfirmed;
|
|
126
|
-
await stepped(gathering(gathered, staged));
|
|
127
164
|
}
|
|
165
|
+
finally {
|
|
166
|
+
ending.abort();
|
|
167
|
+
downloaded();
|
|
168
|
+
arriving.end();
|
|
169
|
+
dropped(ahead);
|
|
170
|
+
}
|
|
171
|
+
if (transfer === null)
|
|
172
|
+
return unconfirmed;
|
|
173
|
+
const installed = transfer;
|
|
174
|
+
const composition = compositionFor(room, installed.models, builtIn, typedPaths);
|
|
175
|
+
if (!(await staging.derive(locator, installed.key, composition)))
|
|
176
|
+
return unconfirmed;
|
|
177
|
+
await staging.turn(locator, 'replaying');
|
|
178
|
+
if (!continuing())
|
|
179
|
+
return unconfirmed;
|
|
128
180
|
const record = {
|
|
129
181
|
locator,
|
|
130
182
|
name: room.name,
|
|
131
183
|
handle: room.handle,
|
|
132
184
|
operations: room.operations,
|
|
133
185
|
replica: room.replica,
|
|
134
|
-
model:
|
|
186
|
+
model: installed.models.collection,
|
|
135
187
|
typedSelection: room.typedSelection ?? null,
|
|
136
|
-
selectionModel: transfer.models.selection,
|
|
137
188
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
138
|
-
roomVersion:
|
|
139
|
-
transfer:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
revisions: await stepped(patching({}, gathered.revisions)),
|
|
143
|
-
fileIds: await stepped(patching({}, gathered.fileIds)),
|
|
144
|
-
changes: await stepped(patching({}, gathered.changes)),
|
|
145
|
-
written: await stepped(patching({}, gathered.written)),
|
|
189
|
+
roomVersion: installed.from,
|
|
190
|
+
transfer: installed.transfer,
|
|
191
|
+
inventory: installed.done,
|
|
192
|
+
key: installed.key,
|
|
146
193
|
};
|
|
147
|
-
const
|
|
194
|
+
const last = installed.last;
|
|
195
|
+
const refresh = adapter.refresh;
|
|
196
|
+
const reconciled = last === installed.from &&
|
|
197
|
+
(staging.streamed || adapter.reached(locator, last, room.roomVersion))
|
|
148
198
|
? { kind: 'still-current' }
|
|
149
|
-
:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
return read;
|
|
155
|
-
}
|
|
156
|
-
return { kind: 'staged', confirmed: read.confirmed, stored: record };
|
|
199
|
+
: refresh === undefined
|
|
200
|
+
? unconfirmed
|
|
201
|
+
: await advancement(refresh, authorization, record, remodel, continuing, await staging.refreshing(locator, record.key, composition));
|
|
202
|
+
if (reconciled.kind === 'advanced') {
|
|
203
|
+
return { kind: 'staged', record: reconciled.record, refreshed: true };
|
|
157
204
|
}
|
|
205
|
+
if (reconciled.kind === 'still-current')
|
|
206
|
+
return { kind: 'staged', record, refreshed: false };
|
|
158
207
|
if (reconciled.kind === 'beyond-horizon') {
|
|
159
|
-
return { kind: 'expired', held:
|
|
208
|
+
return { kind: 'expired', held: staging.content(record.key), key: record.key };
|
|
160
209
|
}
|
|
161
|
-
if (!RESUMABLE.has(reconciled.kind))
|
|
162
|
-
await staging.abandon(locator);
|
|
163
210
|
return reconciled;
|
|
164
211
|
}
|
package/dist/chain.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DocumentQuery, GroupQuery } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { MdRuntimeClient } from './client.js';
|
|
3
|
+
import type { DocumentResult, GroupResult, PendingResult } from './query.js';
|
|
4
|
+
type Rows = DocumentResult | GroupResult;
|
|
5
|
+
export type WindowAnswer = Rows | PendingResult;
|
|
6
|
+
export type WindowChain = {
|
|
7
|
+
want(count: number): void;
|
|
8
|
+
close(): void;
|
|
9
|
+
};
|
|
10
|
+
export declare function chainedWindows(runtime: MdRuntimeClient, query: DocumentQuery | GroupQuery, count: number, publish: (answers: readonly (WindowAnswer | null)[], settled: boolean) => void): WindowChain;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,KAAK,IAAI,GAAG,cAAc,GAAG,WAAW,CAAC;AAEzC,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,aAAa,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAaF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,aAAa,GAAG,UAAU,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAC7E,WAAW,CAkEb"}
|
package/dist/chain.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
function answered(answer) {
|
|
2
|
+
return answer !== null && !('pending' in answer);
|
|
3
|
+
}
|
|
4
|
+
export function chainedWindows(runtime, query, count, publish) {
|
|
5
|
+
let links = [];
|
|
6
|
+
let wanted = count;
|
|
7
|
+
let closed = false;
|
|
8
|
+
const observe = runtime.observe;
|
|
9
|
+
const open = (after, shown) => {
|
|
10
|
+
const link = { after, observation: null, value: shown, fresh: false };
|
|
11
|
+
void observe('query', after === undefined ? query : { ...query, after }).then((observation) => {
|
|
12
|
+
if (closed || !links.includes(link)) {
|
|
13
|
+
observation.close();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
link.observation = observation;
|
|
17
|
+
const take = (value) => {
|
|
18
|
+
link.value = value;
|
|
19
|
+
link.fresh = true;
|
|
20
|
+
settle();
|
|
21
|
+
};
|
|
22
|
+
observation.subscribe(take);
|
|
23
|
+
take(observation.current());
|
|
24
|
+
}, () => { });
|
|
25
|
+
return link;
|
|
26
|
+
};
|
|
27
|
+
const settle = () => {
|
|
28
|
+
if (closed)
|
|
29
|
+
return;
|
|
30
|
+
const next = [];
|
|
31
|
+
for (let at = 0; at < wanted; at += 1) {
|
|
32
|
+
const before = next[at - 1];
|
|
33
|
+
if (before !== undefined && !before.fresh) {
|
|
34
|
+
next.push(...links.slice(at, wanted));
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
if (before !== undefined && (!answered(before.value) || before.value.next === undefined)) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
const after = before === undefined ? undefined : before.value.next;
|
|
41
|
+
const held = links[at];
|
|
42
|
+
next.push(held !== undefined && held.after === after ? held : open(after, held?.value ?? null));
|
|
43
|
+
}
|
|
44
|
+
for (const link of links)
|
|
45
|
+
if (!next.includes(link))
|
|
46
|
+
link.observation?.close();
|
|
47
|
+
links = next;
|
|
48
|
+
publish(links.map((link) => link.value), links.every((link) => link.fresh));
|
|
49
|
+
};
|
|
50
|
+
settle();
|
|
51
|
+
return {
|
|
52
|
+
want(count) {
|
|
53
|
+
if (count === wanted)
|
|
54
|
+
return;
|
|
55
|
+
wanted = count;
|
|
56
|
+
settle();
|
|
57
|
+
},
|
|
58
|
+
close() {
|
|
59
|
+
closed = true;
|
|
60
|
+
for (const link of links)
|
|
61
|
+
link.observation?.close();
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
package/dist/change-set.d.ts
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
|
-
import { type Replica } from './replica.js';
|
|
2
|
-
import { type Row } from './rows.js';
|
|
3
1
|
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
|
-
text: string | null;
|
|
2
|
+
readonly locator: string;
|
|
3
|
+
readonly path: string | null;
|
|
13
4
|
};
|
|
14
5
|
export type ChangeSet = {
|
|
15
6
|
documents: readonly DocumentChange[];
|
|
@@ -20,19 +11,18 @@ export type ChangeSet = {
|
|
|
20
11
|
rooms: readonly string[];
|
|
21
12
|
queues: readonly string[];
|
|
22
13
|
presentations: readonly string[];
|
|
23
|
-
messages: readonly MessageChange[];
|
|
24
14
|
conversations: readonly string[];
|
|
25
15
|
};
|
|
26
16
|
type Changed = {
|
|
17
|
+
documents?: readonly string[] | null;
|
|
27
18
|
drafts?: readonly string[];
|
|
28
19
|
room?: boolean;
|
|
29
20
|
queue?: boolean;
|
|
30
21
|
presentation?: string;
|
|
31
22
|
};
|
|
32
|
-
export declare function changeSet(locator: string,
|
|
33
|
-
export declare function
|
|
34
|
-
export declare function entering(locator: string, replica: Replica, paths: readonly string[]): ChangeSet;
|
|
35
|
-
export declare function conversationChangeSet(messages: readonly MessageChange[], conversations: readonly string[]): ChangeSet;
|
|
23
|
+
export declare function changeSet(locator: string, changed?: Changed): ChangeSet;
|
|
24
|
+
export declare function conversationChangeSet(conversations: readonly string[]): ChangeSet;
|
|
36
25
|
export declare function mergeChangeSets(sets: readonly ChangeSet[]): ChangeSet;
|
|
26
|
+
export declare function touches(set: ChangeSet, locator: string, path: string): boolean;
|
|
37
27
|
export {};
|
|
38
28
|
//# sourceMappingURL=change-set.d.ts.map
|
package/dist/change-set.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAExF,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,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,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;CACvB,CAAC;AAEF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,SAAS,CAe3E;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CASjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CASrE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9E"}
|