@agentshouse/mdruntime 0.1.0-cec6690d5712e → 0.1.0-cedd665dffa4c
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 +24 -19
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +299 -0
- package/dist/act-lanes.d.ts +30 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +225 -0
- package/dist/actions.d.ts +26 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +302 -0
- package/dist/adapter.d.ts +207 -94
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +6 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +35 -41
- package/dist/binary.d.ts +18 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +31 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +311 -92
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- 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 +13 -14
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -62
- package/dist/change.d.ts +46 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +39 -0
- package/dist/chat-types.d.ts +3 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +11 -0
- package/dist/client.d.ts +51 -27
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +133 -26
- package/dist/collection.d.ts +34 -9
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +55 -79
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +723 -0
- package/dist/connection.d.ts +8 -111
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +113 -2221
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{chat/context.js → context.js} +2 -5
- package/dist/conversation-live.d.ts +150 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +259 -0
- package/dist/conversation-row.d.ts +40 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +66 -0
- package/dist/conversation.d.ts +84 -45
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1118 -584
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +150 -0
- package/dist/durability.d.ts +23 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +9 -0
- package/dist/entry.d.ts +20 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +161 -0
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +49 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +199 -0
- package/dist/file.d.ts +2 -19
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +8 -122
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +29 -4
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +179 -25
- package/dist/identity.d.ts +1 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +3 -0
- package/dist/index.d.ts +42 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/install.d.ts +60 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +537 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +278 -0
- package/dist/listing.d.ts +52 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +152 -0
- package/dist/live.d.ts +25 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +206 -0
- package/dist/loaded.d.ts +5 -0
- package/dist/loaded.d.ts.map +1 -0
- package/dist/loaded.js +40 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +32 -0
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +49 -0
- package/dist/media.d.ts +13 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +269 -0
- package/dist/memory.d.ts +26 -8
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +307 -97
- package/dist/messages.d.ts +58 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +162 -0
- package/dist/model.d.ts +11 -12
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +7 -15
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +153 -0
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +42 -9
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +238 -33
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +53 -0
- package/dist/outcome.d.ts +63 -5
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +70 -0
- package/dist/overlay.d.ts +21 -6
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +163 -187
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +4 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +13 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +41 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +314 -0
- package/dist/presence.d.ts +58 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +231 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +308 -0
- package/dist/query.d.ts +51 -183
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -464
- package/dist/{chat/questions.d.ts → questions.d.ts} +5 -7
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +11 -7
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +480 -0
- package/dist/reach.d.ts +20 -5
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +357 -80
- package/dist/react.d.ts +23 -7
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +40 -18
- package/dist/{chat/read.d.ts → read.d.ts} +2 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/{chat/read.js → read.js} +4 -0
- package/dist/readiness.d.ts +55 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +25 -0
- package/dist/reads.d.ts +39 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +178 -0
- package/dist/recovery.d.ts +28 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +254 -0
- package/dist/refresh.d.ts +17 -14
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +145 -58
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +55 -0
- package/dist/replica.d.ts +53 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +349 -167
- package/dist/retried.d.ts +30 -0
- package/dist/retried.d.ts.map +1 -0
- package/dist/retried.js +72 -0
- package/dist/room-draft.d.ts +82 -11
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +490 -78
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +220 -0
- package/dist/rows.d.ts +31 -35
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -126
- package/dist/runtime.d.ts +34 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +45 -22
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +977 -215
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +426 -0
- package/dist/search.d.ts +15 -55
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -121
- package/dist/seed.d.ts +25 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +145 -0
- package/dist/shared.d.ts +10 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +339 -0
- package/dist/shown.d.ts +33 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +309 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +28 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +103 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/session.d.ts +38 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +67 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +164 -0
- package/dist/source.d.ts +59 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +93 -0
- package/dist/status.d.ts +5 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -7
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +40 -0
- package/dist/store/readiness.d.ts +11 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +68 -0
- package/dist/store/records.d.ts +217 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +464 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/rooms-shown.d.ts +8 -0
- package/dist/store/rooms-shown.d.ts.map +1 -0
- package/dist/store/rooms-shown.js +13 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +41 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +56 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +114 -116
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +164 -494
- package/dist/stored.d.ts +167 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +703 -0
- package/dist/surface.d.ts +89 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +222 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +535 -0
- package/dist/tables.d.ts +419 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +758 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +128 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +9 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +75 -0
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +98 -0
- package/dist/windows.d.ts +11 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +16 -0
- package/dist/wire.d.ts +221 -34
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +74 -31
- package/package.json +28 -24
- package/AGENTS.md +0 -299
- package/dist/attachment.d.ts +0 -3
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -8
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -57
- package/dist/chat/acts.d.ts +0 -34
- 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/input.d.ts +0 -9
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -99
- package/dist/chat/kit.d.ts +0 -60
- 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 -20
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -59
- package/dist/chat/markdown.d.ts +0 -19
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -187
- package/dist/chat/message.d.ts +0 -6
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -192
- package/dist/chat/messages.d.ts +0 -21
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -151
- package/dist/chat/name.d.ts +0 -6
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -11
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -17
- package/dist/chat/overlay.d.ts +0 -31
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -97
- package/dist/chat/parts.d.ts +0 -57
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -119
- 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 -63
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -645
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -80
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/ready.d.ts +0 -33
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -91
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -302
- package/dist/chat.d.ts +0 -14
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
- package/dist/log.d.ts +0 -5
- package/dist/log.d.ts.map +0 -1
- package/dist/log.js +0 -14
- package/dist/read-side.d.ts +0 -18
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -433
package/dist/outcome.js
CHANGED
|
@@ -1,3 +1,59 @@
|
|
|
1
|
+
import { MEDIA_TYPES } from '@agentshouse/mdmodel';
|
|
2
|
+
import { refusalError } from './failure.js';
|
|
3
|
+
export const UNREADABLE = {
|
|
4
|
+
kind: 'unreadable',
|
|
5
|
+
code: 'room-not-readable',
|
|
6
|
+
fields: {},
|
|
7
|
+
retryable: false,
|
|
8
|
+
};
|
|
9
|
+
export const LOCKED_UNREADABLE = {
|
|
10
|
+
kind: 'unreadable',
|
|
11
|
+
code: 'room-locked',
|
|
12
|
+
fields: {},
|
|
13
|
+
retryable: true,
|
|
14
|
+
};
|
|
15
|
+
export const ABSENT_TARGET = {
|
|
16
|
+
kind: 'absent',
|
|
17
|
+
code: 'reference-absent',
|
|
18
|
+
fields: {},
|
|
19
|
+
retryable: false,
|
|
20
|
+
};
|
|
21
|
+
export function absentBinary(path) {
|
|
22
|
+
return { kind: 'absent', code: 'binary-file-absent', fields: { path }, retryable: false };
|
|
23
|
+
}
|
|
24
|
+
export function declaredType(blob) {
|
|
25
|
+
return blob.type === '' ? MEDIA_TYPES.octetStream : blob.type;
|
|
26
|
+
}
|
|
27
|
+
export function blobOf(binary) {
|
|
28
|
+
return new Response(binary.stream, { headers: { 'content-type': binary.mediaType } }).blob();
|
|
29
|
+
}
|
|
30
|
+
export function binaryAnswer(result) {
|
|
31
|
+
return result.kind === 'binary' || result.kind === 'rejected' ? result : failure(result);
|
|
32
|
+
}
|
|
33
|
+
export function binaryLinkAnswer(result, held) {
|
|
34
|
+
if (result.kind === 'link') {
|
|
35
|
+
return {
|
|
36
|
+
kind: 'link',
|
|
37
|
+
url: result.url,
|
|
38
|
+
name: result.name,
|
|
39
|
+
mediaType: result.mediaType ?? held ?? MEDIA_TYPES.octetStream,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return result.kind === 'rejected' ? result : failure(result);
|
|
43
|
+
}
|
|
44
|
+
export function attachAnswer(result) {
|
|
45
|
+
if (result.kind === 'attached')
|
|
46
|
+
return { kind: 'attached', path: result.path };
|
|
47
|
+
return result.kind === 'rejected' ? result : failure(result);
|
|
48
|
+
}
|
|
49
|
+
export const ROOM_LOCKED = 'room-locked';
|
|
50
|
+
export function lockedRoom(locator) {
|
|
51
|
+
return { kind: ROOM_LOCKED, locator, code: ROOM_LOCKED, fields: {}, retryable: true };
|
|
52
|
+
}
|
|
53
|
+
export const OFFLINE = { kind: 'offline' };
|
|
54
|
+
export function answeredResult(value) {
|
|
55
|
+
return typeof value === 'object' && value !== null && !('pending' in value);
|
|
56
|
+
}
|
|
1
57
|
export const UNCERTAIN = {
|
|
2
58
|
kind: 'transport-uncertainty',
|
|
3
59
|
code: 'transport-uncertainty',
|
|
@@ -33,3 +89,17 @@ export function historyAnswer(result) {
|
|
|
33
89
|
? result
|
|
34
90
|
: failure(result);
|
|
35
91
|
}
|
|
92
|
+
export const UNANSWERED = { kind: 'transport-uncertainty' };
|
|
93
|
+
export function handedOutcome(retries, attempt, result) {
|
|
94
|
+
if (attempt !== undefined) {
|
|
95
|
+
const { step, instance } = attempt;
|
|
96
|
+
if (result.kind === 'action')
|
|
97
|
+
retries.succeeded(step, instance);
|
|
98
|
+
else if (result.kind === 'transport-uncertainty')
|
|
99
|
+
retries.uncertain(step, instance, result);
|
|
100
|
+
else if (result.kind === 'rejected' && result.retryable) {
|
|
101
|
+
retries.failed(step, instance, refusalError(result));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return calledResult(result);
|
|
105
|
+
}
|
package/dist/overlay.d.ts
CHANGED
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type {
|
|
1
|
+
import { type ApplyResult } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { BinaryFile, HeadChange } from './adapter.js';
|
|
3
|
+
import { type Composition } from './collection.js';
|
|
4
|
+
import { type ChangeBatch } from './change.js';
|
|
3
5
|
export type Heads = {
|
|
4
6
|
revisions: Readonly<Record<string, string>>;
|
|
7
|
+
fileIds: Readonly<Record<string, string>>;
|
|
8
|
+
created: Readonly<Record<string, string>>;
|
|
5
9
|
changes: Readonly<Record<string, HeadChange>>;
|
|
6
10
|
};
|
|
11
|
+
export type HeldBinary = ({
|
|
12
|
+
readonly state: 'accepted';
|
|
13
|
+
} & BinaryFile) | {
|
|
14
|
+
readonly state: 'pending';
|
|
15
|
+
readonly localId: string;
|
|
16
|
+
readonly byteLength: number;
|
|
17
|
+
readonly mediaType: string;
|
|
18
|
+
readonly sha256: string;
|
|
19
|
+
};
|
|
7
20
|
export type Layer = Heads & {
|
|
8
21
|
documents: Readonly<Record<string, string>>;
|
|
9
|
-
|
|
22
|
+
binaries: Readonly<Record<string, HeldBinary>>;
|
|
10
23
|
};
|
|
24
|
+
export declare function acceptedBinaries(files: Readonly<Record<string, BinaryFile>>): Generator<readonly [string, HeldBinary]>;
|
|
25
|
+
export declare function sameBinary(left: HeldBinary | undefined, right: HeldBinary | undefined): boolean;
|
|
11
26
|
export declare function sameChange(left: HeadChange | undefined, right: HeadChange | undefined): boolean;
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function
|
|
14
|
-
export declare function
|
|
27
|
+
export declare function composed(path: string, fields: Readonly<Record<string, unknown>>, sections: Readonly<Record<string, string>>, composition: Composition): ApplyResult;
|
|
28
|
+
export declare function compose(path: string, fields: Readonly<Record<string, unknown>>, sections: Readonly<Record<string, string>>, composition: Composition): string;
|
|
29
|
+
export declare function overlaying(base: Layer, queue: readonly ChangeBatch[], composition: Composition, unapplied?: () => void): Generator<number, Layer, void>;
|
|
15
30
|
//# sourceMappingURL=overlay.d.ts.map
|
package/dist/overlay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAC;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAAG,UAAU,CAAC,GAC7C;IACE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG;IAC1B,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CAChD,CAAC;AAEF,wBAAiB,gBAAgB,CAC/B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC1C,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAE1C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAW/F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAQ/F;AA+CD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,WAAW,EAAE,WAAW,GACvB,WAAW,CAqBb;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,WAAW,EAAE,WAAW,GACvB,MAAM,CAIR;AA8ID,wBAAiB,UAAU,CACzB,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAsChC"}
|
package/dist/overlay.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
import { apply, parse, serialize } from '@agentshouse/mdmodel';
|
|
1
|
+
import { apply, create, documentValue, parse, serialize, TYPE_FIELD, } from '@agentshouse/mdmodel';
|
|
2
|
+
import { definitionsAt } from './collection.js';
|
|
3
|
+
import { isPart, } from './change.js';
|
|
4
|
+
import { drafted, entriesIn, settling } from './shared.js';
|
|
5
|
+
import { ROW_WEIGHT } from './turn.js';
|
|
6
|
+
export function* acceptedBinaries(files) {
|
|
7
|
+
for (const [path, file] of entriesIn(files))
|
|
8
|
+
yield [path, { state: 'accepted', ...file }];
|
|
9
|
+
}
|
|
10
|
+
export function sameBinary(left, right) {
|
|
11
|
+
if (left === undefined || right === undefined)
|
|
12
|
+
return left === right;
|
|
13
|
+
return (left.state === right.state &&
|
|
14
|
+
left.byteLength === right.byteLength &&
|
|
15
|
+
left.mediaType === right.mediaType &&
|
|
16
|
+
left.sha256 === right.sha256 &&
|
|
17
|
+
(left.state === 'accepted'
|
|
18
|
+
? right.state === 'accepted'
|
|
19
|
+
: right.state === 'pending' && left.localId === right.localId));
|
|
20
|
+
}
|
|
2
21
|
export function sameChange(left, right) {
|
|
3
22
|
if (left === undefined || right === undefined)
|
|
4
23
|
return left === right;
|
|
@@ -7,11 +26,10 @@ export function sameChange(left, right) {
|
|
|
7
26
|
left.author?.id === right.author?.id &&
|
|
8
27
|
left.author?.name === right.author?.name);
|
|
9
28
|
}
|
|
10
|
-
const EMPTY_FRONTMATTER = '---\n---\n';
|
|
11
29
|
function at(path, name) {
|
|
12
30
|
return `${path} ${name}`;
|
|
13
31
|
}
|
|
14
|
-
function priorsOf(preconditions) {
|
|
32
|
+
function* priorsOf(preconditions) {
|
|
15
33
|
const fields = new Map();
|
|
16
34
|
const sections = new Map();
|
|
17
35
|
const preambles = new Map();
|
|
@@ -25,6 +43,7 @@ function priorsOf(preconditions) {
|
|
|
25
43
|
if (precondition.kind === 'preamble') {
|
|
26
44
|
preambles.set(precondition.path, precondition.value);
|
|
27
45
|
}
|
|
46
|
+
yield ROW_WEIGHT;
|
|
28
47
|
}
|
|
29
48
|
return {
|
|
30
49
|
field: (path, name) => fields.get(at(path, name)),
|
|
@@ -32,59 +51,71 @@ function priorsOf(preconditions) {
|
|
|
32
51
|
preamble: (path) => preambles.get(path) ?? '',
|
|
33
52
|
};
|
|
34
53
|
}
|
|
35
|
-
function
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
export function composed(path, fields, sections, composition) {
|
|
55
|
+
const declared = fields[TYPE_FIELD];
|
|
56
|
+
const type = typeof declared === 'string' && declared !== '' ? declared : undefined;
|
|
57
|
+
const definition = definitionsAt(composition, path)(type);
|
|
58
|
+
return apply(create(type, definition), [
|
|
59
|
+
...Object.entries(fields).flatMap(([name, value]) => (name !== TYPE_FIELD || type === undefined) && documentValue(value)
|
|
60
|
+
? [{ kind: 'field', name, value, prior: undefined }]
|
|
61
|
+
: []),
|
|
62
|
+
...Object.entries(sections).map(([name, value]) => ({
|
|
63
|
+
kind: 'section',
|
|
64
|
+
name,
|
|
65
|
+
value,
|
|
66
|
+
prior: undefined,
|
|
67
|
+
})),
|
|
68
|
+
], definition);
|
|
69
|
+
}
|
|
70
|
+
export function compose(path, fields, sections, composition) {
|
|
71
|
+
const next = composed(path, fields, sections, composition);
|
|
72
|
+
if (next.outcome !== 'applied')
|
|
73
|
+
throw new Error(`the creation of ${path} writes no document`);
|
|
74
|
+
return serialize(next.document);
|
|
50
75
|
}
|
|
51
|
-
function edited(
|
|
52
|
-
if (change.kind === 'field')
|
|
53
|
-
return
|
|
76
|
+
function edited(change, priors) {
|
|
77
|
+
if (change.kind === 'field')
|
|
78
|
+
return {
|
|
54
79
|
kind: 'field',
|
|
55
80
|
name: change.name,
|
|
56
81
|
value: change.value,
|
|
57
82
|
prior: priors.field(change.path, change.name),
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
kind: 'preamble',
|
|
63
|
-
value: change.value,
|
|
64
|
-
prior: priors.preamble(change.path),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
if (change.kind !== 'section')
|
|
68
|
-
return null;
|
|
69
|
-
return apply(document, {
|
|
83
|
+
};
|
|
84
|
+
if (change.kind === 'preamble')
|
|
85
|
+
return { kind: 'preamble', value: change.value, prior: priors.preamble(change.path) };
|
|
86
|
+
return {
|
|
70
87
|
kind: 'section',
|
|
71
88
|
name: change.name,
|
|
72
89
|
value: change.value,
|
|
73
90
|
prior: priors.section(change.path, change.name),
|
|
74
|
-
}
|
|
91
|
+
};
|
|
75
92
|
}
|
|
76
|
-
function edit(staged,
|
|
77
|
-
const
|
|
93
|
+
function edit(staged, changes, priors, composition) {
|
|
94
|
+
const path = changes[0].path;
|
|
95
|
+
delete staged.revisions[path];
|
|
96
|
+
const text = staged.documents[path];
|
|
78
97
|
if (text === undefined)
|
|
79
|
-
return
|
|
80
|
-
const
|
|
98
|
+
return changes.length;
|
|
99
|
+
const definitions = definitionsAt(composition, path);
|
|
100
|
+
const parsed = parse(text, path, definitions);
|
|
81
101
|
if (!parsed.ok)
|
|
82
|
-
return
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
102
|
+
return changes.length;
|
|
103
|
+
const definition = definitions(parsed.document.type);
|
|
104
|
+
const wanted = changes.map((change) => edited(change, priors));
|
|
105
|
+
const first = apply(parsed.document, wanted, definition);
|
|
106
|
+
if (first.outcome === 'refuse')
|
|
107
|
+
return changes.length;
|
|
108
|
+
if (first.outcome === 'applied') {
|
|
109
|
+
staged.documents[path] = serialize(first.document);
|
|
110
|
+
return 0;
|
|
111
|
+
}
|
|
112
|
+
const stale = new Set(first.stale);
|
|
113
|
+
const kept = wanted.filter((_, at) => !stale.has(at));
|
|
114
|
+
const rest = apply(parsed.document, kept, definition);
|
|
115
|
+
if (rest.outcome !== 'applied')
|
|
116
|
+
return changes.length;
|
|
117
|
+
staged.documents[path] = serialize(rest.document);
|
|
118
|
+
return first.stale.length;
|
|
88
119
|
}
|
|
89
120
|
function relocate(staged, from, to) {
|
|
90
121
|
const text = staged.documents[from];
|
|
@@ -92,8 +123,9 @@ function relocate(staged, from, to) {
|
|
|
92
123
|
delete staged.documents[from];
|
|
93
124
|
staged.documents[to] = text;
|
|
94
125
|
}
|
|
95
|
-
else if (staged.
|
|
96
|
-
staged.
|
|
126
|
+
else if (staged.binaries[from] !== undefined) {
|
|
127
|
+
staged.binaries[to] = staged.binaries[from];
|
|
128
|
+
delete staged.binaries[from];
|
|
97
129
|
}
|
|
98
130
|
else {
|
|
99
131
|
return false;
|
|
@@ -103,185 +135,129 @@ function relocate(staged, from, to) {
|
|
|
103
135
|
}
|
|
104
136
|
function moveHead(heads, from, to) {
|
|
105
137
|
const revision = heads.revisions[from];
|
|
138
|
+
const fileId = heads.fileIds[from];
|
|
139
|
+
const created = heads.created[from];
|
|
106
140
|
const change = heads.changes[from];
|
|
107
141
|
delete heads.revisions[from];
|
|
142
|
+
delete heads.fileIds[from];
|
|
143
|
+
delete heads.created[from];
|
|
108
144
|
delete heads.changes[from];
|
|
145
|
+
delete heads.fileIds[to];
|
|
146
|
+
delete heads.created[to];
|
|
109
147
|
delete heads.changes[to];
|
|
110
148
|
if (revision !== undefined)
|
|
111
149
|
heads.revisions[to] = revision;
|
|
150
|
+
if (fileId !== undefined)
|
|
151
|
+
heads.fileIds[to] = fileId;
|
|
152
|
+
if (created !== undefined)
|
|
153
|
+
heads.created[to] = created;
|
|
112
154
|
if (change !== undefined)
|
|
113
155
|
heads.changes[to] = change;
|
|
114
156
|
}
|
|
115
157
|
function erase(staged, path) {
|
|
116
158
|
delete staged.documents[path];
|
|
117
159
|
delete staged.revisions[path];
|
|
160
|
+
delete staged.fileIds[path];
|
|
161
|
+
delete staged.created[path];
|
|
118
162
|
delete staged.changes[path];
|
|
119
|
-
staged.
|
|
163
|
+
delete staged.binaries[path];
|
|
120
164
|
}
|
|
121
|
-
function stage(staged, change,
|
|
122
|
-
if (change.kind === 'field' || change.kind === 'section' || change.kind === 'preamble') {
|
|
123
|
-
return edit(staged, change, priors);
|
|
124
|
-
}
|
|
165
|
+
function stage(staged, change, composition) {
|
|
125
166
|
if (change.kind === 'create') {
|
|
126
167
|
staged.documents[change.path] =
|
|
127
|
-
'content' in change
|
|
168
|
+
'content' in change
|
|
169
|
+
? change.content
|
|
170
|
+
: compose(change.path, change.fields, change.sections, composition);
|
|
171
|
+
delete staged.fileIds[change.path];
|
|
172
|
+
delete staged.created[change.path];
|
|
128
173
|
delete staged.changes[change.path];
|
|
129
174
|
return true;
|
|
130
175
|
}
|
|
131
176
|
if (change.kind === 'replace') {
|
|
177
|
+
delete staged.revisions[change.path];
|
|
132
178
|
if (staged.documents[change.path] === undefined)
|
|
133
179
|
return false;
|
|
134
180
|
staged.documents[change.path] = change.content;
|
|
135
181
|
return true;
|
|
136
182
|
}
|
|
183
|
+
if (change.kind === 'binary') {
|
|
184
|
+
if (staged.documents[change.path] !== undefined)
|
|
185
|
+
return false;
|
|
186
|
+
staged.binaries[change.path] = {
|
|
187
|
+
state: 'pending',
|
|
188
|
+
localId: change.localId,
|
|
189
|
+
byteLength: change.byteLength,
|
|
190
|
+
mediaType: change.mediaType,
|
|
191
|
+
sha256: change.sha256,
|
|
192
|
+
};
|
|
193
|
+
delete staged.revisions[change.path];
|
|
194
|
+
delete staged.changes[change.path];
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
137
197
|
if (change.kind === 'move') {
|
|
138
198
|
return relocate(staged, change.path, change.to);
|
|
139
199
|
}
|
|
200
|
+
if (change.kind === 'arrival') {
|
|
201
|
+
erase(staged, change.path);
|
|
202
|
+
if ('content' in change)
|
|
203
|
+
staged.documents[change.path] = change.content;
|
|
204
|
+
else
|
|
205
|
+
staged.binaries[change.path] = { state: 'accepted', ...change.binary };
|
|
206
|
+
arrive(staged, change);
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
140
209
|
erase(staged, change.path);
|
|
141
210
|
return true;
|
|
142
211
|
}
|
|
143
|
-
|
|
212
|
+
function arrive(heads, change) {
|
|
213
|
+
if (change.revision !== undefined)
|
|
214
|
+
heads.revisions[change.path] = change.revision;
|
|
215
|
+
if (change.fileId !== undefined)
|
|
216
|
+
heads.fileIds[change.path] = change.fileId;
|
|
217
|
+
if (change.created !== undefined)
|
|
218
|
+
heads.created[change.path] = change.created;
|
|
219
|
+
if (change.change !== undefined)
|
|
220
|
+
heads.changes[change.path] = change.change;
|
|
221
|
+
}
|
|
222
|
+
export function* overlaying(base, queue, composition, unapplied) {
|
|
144
223
|
const staged = {
|
|
145
|
-
documents:
|
|
146
|
-
|
|
147
|
-
revisions:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const priors = priorsOf(batch.preconditions);
|
|
152
|
-
for (const change of batch.changes) {
|
|
153
|
-
if (!stage(staged, change, priors))
|
|
154
|
-
unapplied?.();
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return {
|
|
158
|
-
documents: staged.documents,
|
|
159
|
-
binaryTargets: [...staged.binaryTargets].sort(),
|
|
160
|
-
revisions: staged.revisions,
|
|
161
|
-
changes: staged.changes,
|
|
224
|
+
documents: drafted(base.documents),
|
|
225
|
+
binaries: drafted(base.binaries),
|
|
226
|
+
revisions: drafted(base.revisions),
|
|
227
|
+
fileIds: drafted(base.fileIds),
|
|
228
|
+
created: drafted(base.created),
|
|
229
|
+
changes: drafted(base.changes),
|
|
162
230
|
};
|
|
163
|
-
}
|
|
164
|
-
function pathsOf(batch) {
|
|
165
|
-
return batch.changes.flatMap((change) => change.kind === 'move' ? [change.path, change.to] : [change.path]);
|
|
166
|
-
}
|
|
167
|
-
export function sameLayerText(left, right) {
|
|
168
|
-
const paths = Object.keys(left.documents);
|
|
169
|
-
return (paths.length === Object.keys(right.documents).length &&
|
|
170
|
-
paths.every((path) => left.documents[path] === right.documents[path]) &&
|
|
171
|
-
left.binaryTargets.length === right.binaryTargets.length &&
|
|
172
|
-
left.binaryTargets.every((path) => right.binaryTargets.includes(path)));
|
|
173
|
-
}
|
|
174
|
-
function replayHeads(base, queue) {
|
|
175
|
-
const heads = { revisions: { ...base.revisions }, changes: { ...base.changes } };
|
|
176
231
|
for (const batch of queue) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
else if (change.kind === 'move') {
|
|
186
|
-
moveHead(heads, change.path, change.to);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return heads;
|
|
191
|
-
}
|
|
192
|
-
export function overlayChanged(base, queue, previousBase, previousQueue, previousVisible) {
|
|
193
|
-
const before = previousQueue.map((batch) => JSON.stringify(batch));
|
|
194
|
-
const after = queue.map((batch) => JSON.stringify(batch));
|
|
195
|
-
if (before.length === after.length &&
|
|
196
|
-
before.every((id, index) => id === after[index]) &&
|
|
197
|
-
sameLayerText(base, previousBase)) {
|
|
198
|
-
return {
|
|
199
|
-
documents: previousVisible.documents,
|
|
200
|
-
binaryTargets: previousVisible.binaryTargets,
|
|
201
|
-
...replayHeads(base, queue),
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
const affected = new Set();
|
|
205
|
-
const paths = new Set([
|
|
206
|
-
...Object.keys(base.documents),
|
|
207
|
-
...Object.keys(previousBase.documents),
|
|
208
|
-
...Object.keys(base.revisions),
|
|
209
|
-
...Object.keys(previousBase.revisions),
|
|
210
|
-
...Object.keys(base.changes),
|
|
211
|
-
...Object.keys(previousBase.changes),
|
|
212
|
-
...base.binaryTargets,
|
|
213
|
-
...previousBase.binaryTargets,
|
|
214
|
-
]);
|
|
215
|
-
for (const path of paths) {
|
|
216
|
-
if (base.documents[path] !== previousBase.documents[path] ||
|
|
217
|
-
base.revisions[path] !== previousBase.revisions[path] ||
|
|
218
|
-
!sameChange(base.changes[path], previousBase.changes[path]) ||
|
|
219
|
-
base.binaryTargets.includes(path) !== previousBase.binaryTargets.includes(path))
|
|
220
|
-
affected.add(path);
|
|
221
|
-
}
|
|
222
|
-
const oldIds = new Set(before);
|
|
223
|
-
const newIds = new Set(after);
|
|
224
|
-
for (const batch of previousQueue) {
|
|
225
|
-
if (!newIds.has(JSON.stringify(batch)))
|
|
226
|
-
for (const path of pathsOf(batch))
|
|
227
|
-
affected.add(path);
|
|
228
|
-
}
|
|
229
|
-
for (const batch of queue) {
|
|
230
|
-
if (!oldIds.has(JSON.stringify(batch)))
|
|
231
|
-
for (const path of pathsOf(batch))
|
|
232
|
-
affected.add(path);
|
|
233
|
-
}
|
|
234
|
-
let expanded = true;
|
|
235
|
-
while (expanded) {
|
|
236
|
-
expanded = false;
|
|
237
|
-
for (const batch of queue) {
|
|
238
|
-
const touched = pathsOf(batch);
|
|
239
|
-
if (!touched.some((path) => affected.has(path)))
|
|
232
|
+
const priors = yield* priorsOf(batch.preconditions);
|
|
233
|
+
for (let index = 0; index < batch.changes.length; index += 1) {
|
|
234
|
+
const change = batch.changes[index];
|
|
235
|
+
if (!isPart(change)) {
|
|
236
|
+
if (!stage(staged, change, composition))
|
|
237
|
+
unapplied?.();
|
|
238
|
+
yield ROW_WEIGHT;
|
|
240
239
|
continue;
|
|
241
|
-
for (const path of touched) {
|
|
242
|
-
if (affected.has(path))
|
|
243
|
-
continue;
|
|
244
|
-
affected.add(path);
|
|
245
|
-
expanded = true;
|
|
246
240
|
}
|
|
241
|
+
const run = [change];
|
|
242
|
+
while (index + 1 < batch.changes.length) {
|
|
243
|
+
const next = batch.changes[index + 1];
|
|
244
|
+
if (!isPart(next) || next.path !== change.path)
|
|
245
|
+
break;
|
|
246
|
+
run.push(next);
|
|
247
|
+
index += 1;
|
|
248
|
+
}
|
|
249
|
+
const text = staged.documents[change.path] ?? '';
|
|
250
|
+
for (let left = edit(staged, run, priors, composition); left > 0; left -= 1)
|
|
251
|
+
unapplied?.();
|
|
252
|
+
yield ROW_WEIGHT + text.length;
|
|
247
253
|
}
|
|
248
254
|
}
|
|
249
|
-
const documents = {};
|
|
250
|
-
const revisions = {};
|
|
251
|
-
const changes = {};
|
|
252
|
-
for (const path of affected) {
|
|
253
|
-
if (base.documents[path] !== undefined)
|
|
254
|
-
documents[path] = base.documents[path];
|
|
255
|
-
if (base.revisions[path] !== undefined)
|
|
256
|
-
revisions[path] = base.revisions[path];
|
|
257
|
-
if (base.changes[path] !== undefined)
|
|
258
|
-
changes[path] = base.changes[path];
|
|
259
|
-
}
|
|
260
|
-
const staged = overlay({
|
|
261
|
-
documents,
|
|
262
|
-
revisions,
|
|
263
|
-
changes,
|
|
264
|
-
binaryTargets: base.binaryTargets.filter((path) => affected.has(path)),
|
|
265
|
-
}, queue.filter((batch) => pathsOf(batch).some((path) => affected.has(path))));
|
|
266
|
-
const mergedDocuments = { ...previousVisible.documents };
|
|
267
|
-
const mergedRevisions = { ...previousVisible.revisions };
|
|
268
|
-
const mergedChanges = { ...previousVisible.changes };
|
|
269
|
-
const mergedTargets = new Set(previousVisible.binaryTargets);
|
|
270
|
-
for (const path of affected) {
|
|
271
|
-
delete mergedDocuments[path];
|
|
272
|
-
delete mergedRevisions[path];
|
|
273
|
-
delete mergedChanges[path];
|
|
274
|
-
mergedTargets.delete(path);
|
|
275
|
-
}
|
|
276
|
-
Object.assign(mergedDocuments, staged.documents);
|
|
277
|
-
Object.assign(mergedRevisions, staged.revisions);
|
|
278
|
-
Object.assign(mergedChanges, staged.changes);
|
|
279
|
-
for (const path of staged.binaryTargets)
|
|
280
|
-
mergedTargets.add(path);
|
|
281
255
|
return {
|
|
282
|
-
documents:
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
256
|
+
documents: yield* settling(staged.documents),
|
|
257
|
+
binaries: yield* settling(staged.binaries),
|
|
258
|
+
revisions: yield* settling(staged.revisions),
|
|
259
|
+
fileIds: yield* settling(staged.fileIds),
|
|
260
|
+
created: yield* settling(staged.created),
|
|
261
|
+
changes: yield* settling(staged.changes),
|
|
286
262
|
};
|
|
287
263
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const PAGE_METADATA_WORDS: {
|
|
2
|
+
readonly heading: 'Page metadata';
|
|
3
|
+
readonly app: 'App';
|
|
4
|
+
readonly address: 'Address';
|
|
5
|
+
readonly queries: 'Local Queries';
|
|
6
|
+
};
|
|
7
|
+
export declare function pageMetadataBlock(app: string, address: string, queries: readonly unknown[]): string;
|
|
8
|
+
//# sourceMappingURL=page-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-metadata.d.ts","sourceRoot":"","sources":["../src/page-metadata.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB;aAC9B,OAAO,EAAE,eAAe;aACxB,GAAG,EAAE,KAAK;aACV,OAAO,EAAE,SAAS;aAClB,OAAO,EAAE,eAAe;CAChB,CAAC;AAIX,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,OAAO,EAAE,GAC1B,MAAM,CAUR"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { queryKey } from '@agentshouse/mdmodel';
|
|
2
|
+
export const PAGE_METADATA_WORDS = {
|
|
3
|
+
heading: 'Page metadata',
|
|
4
|
+
app: 'App',
|
|
5
|
+
address: 'Address',
|
|
6
|
+
queries: 'Local Queries',
|
|
7
|
+
};
|
|
8
|
+
const PAGE_METADATA_QUERIES = 10;
|
|
9
|
+
export function pageMetadataBlock(app, address, queries) {
|
|
10
|
+
const held = [...new Set(queries.map(queryKey))];
|
|
11
|
+
return [
|
|
12
|
+
PAGE_METADATA_WORDS.heading,
|
|
13
|
+
`${PAGE_METADATA_WORDS.app}: ${app}`,
|
|
14
|
+
`${PAGE_METADATA_WORDS.address}: ${address}`,
|
|
15
|
+
...(held.length === 0 || held.length > PAGE_METADATA_QUERIES
|
|
16
|
+
? []
|
|
17
|
+
: [`${PAGE_METADATA_WORDS.queries}:`, ...held]),
|
|
18
|
+
].join('\n');
|
|
19
|
+
}
|
package/dist/parts.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGhE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,CAGjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,CAKjE"}
|
package/dist/parts.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isOwn } from '@agentshouse/session-content';
|
|
2
|
+
import { excerpt } from './read.js';
|
|
3
|
+
export function currentStep(parts) {
|
|
4
|
+
const call = [...parts].reverse().find((part) => part.type === 'call');
|
|
5
|
+
return call?.type === 'call' && call.line !== '' ? call.line : null;
|
|
6
|
+
}
|
|
7
|
+
export function runningLine(parts) {
|
|
8
|
+
const own = parts.filter(isOwn);
|
|
9
|
+
const note = [...own].reverse().find((part) => part.type === 'text' && part.text.trim() !== '');
|
|
10
|
+
if (note?.type === 'text')
|
|
11
|
+
return excerpt(note.text);
|
|
12
|
+
return currentStep(own);
|
|
13
|
+
}
|
package/dist/paths.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export declare function normalize(path: string): string | null;
|
|
2
2
|
export declare function beneath(prefix: string, path: string): boolean;
|
|
3
3
|
export declare function covered(prefixes: readonly string[], path: string): boolean;
|
|
4
|
+
export declare function authoredAt(patterns: readonly string[], path: string): boolean;
|
|
5
|
+
export declare function ancestors(path: string): readonly string[];
|
|
4
6
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYrD;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK1E;AAwBD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAGzD"}
|