@agentshouse/mdruntime 0.1.0-cb2e390ee7b89 → 0.1.0-cb454d4550040
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 +214 -123
- 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/authored.d.ts +88 -0
- package/dist/authored.d.ts.map +1 -0
- package/dist/authored.js +345 -0
- 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 +30 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +309 -113
- 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 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -89
- package/dist/change.d.ts +36 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +17 -3
- 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 +39 -25
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +117 -23
- package/dist/collection.d.ts +32 -21
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +53 -288
- package/dist/column.d.ts +5 -0
- package/dist/column.d.ts.map +1 -0
- package/dist/column.js +9 -0
- 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 +7 -134
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +109 -3606
- 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 +80 -50
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1037 -793
- 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 +20 -4
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +9 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -28
- 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 +21 -11
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +126 -53
- 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 +41 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -4
- 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 +282 -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 +20 -8
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +311 -121
- package/dist/messages.d.ts +58 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +160 -0
- package/dist/model.d.ts +8 -11
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -23
- 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 +38 -10
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +232 -44
- 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 +57 -10
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +71 -2
- package/dist/overlay.d.ts +8 -6
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +121 -182
- 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 +21 -203
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -491
- package/dist/{chat/questions.d.ts → questions.d.ts} +6 -7
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +12 -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 +21 -11
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +358 -111
- package/dist/react.d.ts +19 -5
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +35 -15
- 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 +22 -20
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +5 -13
- package/dist/reads.d.ts +38 -10
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +163 -83
- package/dist/recovery.d.ts +5 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +65 -8
- package/dist/refresh.d.ts +18 -15
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +145 -60
- 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 +49 -36
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +322 -198
- 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 +55 -13
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +416 -122
- 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/room-list.d.ts +10 -0
- package/dist/room-list.d.ts.map +1 -0
- package/dist/room-list.js +45 -0
- package/dist/rows.d.ts +32 -30
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -120
- 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 +43 -49
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +736 -304
- package/dist/saves.d.ts +34 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +437 -0
- package/dist/search.d.ts +12 -95
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -266
- package/dist/seed.d.ts +11 -2
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +71 -1
- package/dist/shared.d.ts +6 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +75 -104
- 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 +4 -5
- 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 +223 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +465 -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 -163
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +163 -754
- package/dist/stored.d.ts +167 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +700 -0
- package/dist/surface.d.ts +90 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +225 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +536 -0
- package/dist/tables.d.ts +376 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +499 -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 +5 -3
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +51 -21
- 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 +9 -16
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +11 -75
- package/dist/wire.d.ts +91 -9
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +31 -6
- package/package.json +19 -19
- package/AGENTS.md +0 -299
- package/dist/acquisition.d.ts +0 -14
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -24
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- 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/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 -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 -27
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -99
- package/dist/chat/markdown.d.ts +0 -20
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -188
- 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 -22
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -155
- 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 -635
- 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.map +0 -1
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/ready.d.ts +0 -34
- 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/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- 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 -25
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -761
package/dist/collection.js
CHANGED
|
@@ -1,11 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { definitionAt, parse, VERSION, } from '@agentshouse/mdmodel';
|
|
2
2
|
import { beneath, normalize } from './paths.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { inUnits, ROW_WEIGHT } from './turn.js';
|
|
3
|
+
import { hashed } from './observation.js';
|
|
4
|
+
import { sortedKeys } from './shared.js';
|
|
6
5
|
export const MD_MODEL = { identity: '@agentshouse/mdmodel', version: VERSION };
|
|
7
|
-
const
|
|
8
|
-
function
|
|
6
|
+
const typesPrinted = new WeakMap();
|
|
7
|
+
function typesPrint(model) {
|
|
8
|
+
if (model.status === 'unavailable')
|
|
9
|
+
return '';
|
|
10
|
+
let print = typesPrinted.get(model.types);
|
|
11
|
+
if (print === undefined) {
|
|
12
|
+
print = hashed(JSON.stringify(model.types)).toString(36);
|
|
13
|
+
typesPrinted.set(model.types, print);
|
|
14
|
+
}
|
|
15
|
+
return print;
|
|
16
|
+
}
|
|
17
|
+
export function composedOf(composition) {
|
|
18
|
+
const { model, selection } = composition;
|
|
19
|
+
return {
|
|
20
|
+
composition,
|
|
21
|
+
fingerprint: JSON.stringify([
|
|
22
|
+
typesPrint(model),
|
|
23
|
+
selection === null ? null : [selection.roots, typesPrint(selection.model)],
|
|
24
|
+
]),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function selected(composition, path) {
|
|
9
28
|
return (composition.selection !== null &&
|
|
10
29
|
composition.selection.roots.some((root) => beneath(root, path)));
|
|
11
30
|
}
|
|
@@ -14,307 +33,53 @@ export function governing(composition, path) {
|
|
|
14
33
|
? composition.selection.model
|
|
15
34
|
: composition.model;
|
|
16
35
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (held === undefined)
|
|
21
|
-
return shared({});
|
|
22
|
-
const kept = patched(held.base, held.added);
|
|
23
|
-
held.base = kept;
|
|
24
|
-
held.added = new Map();
|
|
25
|
-
return patched(kept, [], differing(previous.text, text));
|
|
36
|
+
function definitionsUnder(composition, path, typedPaths, typesOf) {
|
|
37
|
+
const types = typesOf(governing(composition, path));
|
|
38
|
+
return types === null ? () => undefined : definitionAt({ types }, path, typedPaths);
|
|
26
39
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
if (held === undefined)
|
|
30
|
-
return undefined;
|
|
31
|
-
if (held.added.has(path))
|
|
32
|
-
return held.added.get(path);
|
|
33
|
-
return Object.hasOwn(held.base, path) ? held.base[path] : undefined;
|
|
40
|
+
export function definitionsAt(composition, path) {
|
|
41
|
+
return definitionsUnder(composition, path, composition.typedPaths, (model) => model.status === 'unavailable' ? null : model.types);
|
|
34
42
|
}
|
|
35
|
-
export function
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
export function definitionsIn(room, path, typedPaths) {
|
|
44
|
+
return definitionsUnder({ model: room.model, selection: room.typedSelection }, path, typedPaths, ({ types }) => types === null ? null : Object.fromEntries(types.map((type) => [type.name, type])));
|
|
45
|
+
}
|
|
46
|
+
export function collectionOf(text, composition) {
|
|
47
|
+
const parsed = new Map();
|
|
48
|
+
return {
|
|
41
49
|
text,
|
|
42
50
|
composition,
|
|
43
51
|
document(path) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return held ?? undefined;
|
|
52
|
+
if (parsed.has(path))
|
|
53
|
+
return parsed.get(path) ?? undefined;
|
|
47
54
|
const content = text[path];
|
|
48
55
|
if (content === undefined)
|
|
49
56
|
return undefined;
|
|
50
|
-
const read = parse(content, path);
|
|
51
|
-
parsed.
|
|
57
|
+
const read = parse(content, path, definitionsAt(composition, path));
|
|
58
|
+
parsed.set(path, read.ok ? read.document : null);
|
|
52
59
|
return read.ok ? read.document : undefined;
|
|
53
60
|
},
|
|
54
61
|
};
|
|
55
|
-
parsedIn.set(collection, parsed);
|
|
56
|
-
return collection;
|
|
57
|
-
}
|
|
58
|
-
export function passingFrontmatter(collection, path) {
|
|
59
|
-
const held = cachedIn(collection, path);
|
|
60
|
-
if (held !== undefined)
|
|
61
|
-
return held ?? undefined;
|
|
62
|
-
const content = collection.text[path];
|
|
63
|
-
if (content === undefined)
|
|
64
|
-
return undefined;
|
|
65
|
-
const read = parseFrontmatter(content, path);
|
|
66
|
-
return read.ok ? read.frontmatter : undefined;
|
|
67
62
|
}
|
|
68
63
|
export function* documentsOf(collection) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
continue;
|
|
64
|
+
const paths = yield* sortedKeys(collection.text);
|
|
65
|
+
return (function* () {
|
|
66
|
+
for (const path of paths) {
|
|
67
|
+
const document = collection.document(path);
|
|
68
|
+
if (document !== undefined)
|
|
69
|
+
yield [path, document];
|
|
76
70
|
}
|
|
77
|
-
|
|
78
|
-
if (read.ok)
|
|
79
|
-
yield [path, read.document];
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export function unreadable(text, previous) {
|
|
83
|
-
const paths = previous === undefined
|
|
84
|
-
? Object.keys(text)
|
|
85
|
-
: [...differing(previous, text)].filter((path) => text[path] !== undefined);
|
|
86
|
-
for (const path of paths.sort()) {
|
|
87
|
-
const read = parse(text[path], path);
|
|
88
|
-
if (!read.ok)
|
|
89
|
-
return { kind: 'refused', refusal: read.refusal };
|
|
90
|
-
}
|
|
91
|
-
return null;
|
|
71
|
+
})();
|
|
92
72
|
}
|
|
93
73
|
export function validRoot(root) {
|
|
94
74
|
return typeof root === 'string' && normalize(root) === root;
|
|
95
75
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const parsed = parse(content);
|
|
100
|
-
return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';
|
|
101
|
-
});
|
|
102
|
-
if (typed !== undefined)
|
|
103
|
-
return { verdict: 'refuse', rule: 'model-unavailable', file: typed[0] };
|
|
104
|
-
}
|
|
105
|
-
return validate(documents, { binaryTargets }, model.status === 'unavailable' ? NO_TYPES : { types: model.types });
|
|
106
|
-
}
|
|
107
|
-
export function validateCollection(text, binaryTargets, composition) {
|
|
108
|
-
const collection = {};
|
|
109
|
-
const selection = {};
|
|
110
|
-
for (const [path, content] of Object.entries(text)) {
|
|
111
|
-
if (selected(composition, path))
|
|
112
|
-
selection[path] = content;
|
|
113
|
-
else
|
|
114
|
-
collection[path] = content;
|
|
115
|
-
}
|
|
116
|
-
const verdicts = [
|
|
117
|
-
validateAgainst(collection, binaryTargets.filter((path) => !selected(composition, path)), composition.model),
|
|
118
|
-
];
|
|
119
|
-
if (composition.selection !== null) {
|
|
120
|
-
verdicts.push(validateAgainst(selection, binaryTargets.filter((path) => selected(composition, path)), composition.selection.model));
|
|
121
|
-
}
|
|
122
|
-
const refusals = verdicts.filter((verdict) => verdict.verdict === 'refuse');
|
|
123
|
-
if (refusals.length === 0)
|
|
124
|
-
return verdicts[0];
|
|
125
|
-
return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];
|
|
126
|
-
}
|
|
127
|
-
const referrersOf = new WeakMap();
|
|
128
|
-
function typing(left, right) {
|
|
129
|
-
return (sameTyping(left.model, right.model) &&
|
|
130
|
-
(left.selection === null || right.selection === null
|
|
131
|
-
? left.selection === right.selection
|
|
132
|
-
: sameTyping(left.selection.model, right.selection.model)) &&
|
|
133
|
-
JSON.stringify(left.selection?.roots ?? null) === JSON.stringify(right.selection?.roots ?? null));
|
|
134
|
-
}
|
|
135
|
-
function declared(content) {
|
|
136
|
-
if (content === undefined)
|
|
137
|
-
return undefined;
|
|
138
|
-
const read = parseFrontmatter(content);
|
|
139
|
-
return read.ok ? (read.frontmatter.type ?? 'any') : undefined;
|
|
140
|
-
}
|
|
141
|
-
function typedIn(content) {
|
|
142
|
-
const type = declared(content);
|
|
143
|
-
return type !== undefined && type !== 'any';
|
|
144
|
-
}
|
|
145
|
-
function modelOf(composition, path) {
|
|
146
|
-
const model = governing(composition, path);
|
|
147
|
-
return model.status === 'unavailable' ? null : { types: model.types };
|
|
148
|
-
}
|
|
149
|
-
function checked(path, content, composition) {
|
|
150
|
-
return checkDocument(path, content, modelOf(composition, path) ?? NO_TYPES);
|
|
76
|
+
export const UNTYPED = 'any';
|
|
77
|
+
export function textType(read) {
|
|
78
|
+
return read.ok ? (read.document.type ?? UNTYPED) : undefined;
|
|
151
79
|
}
|
|
152
|
-
function
|
|
153
|
-
|
|
154
|
-
return [];
|
|
155
|
-
return [...new Set(check.references.flatMap(({ target }) => (target === null ? [] : [target])))];
|
|
156
|
-
}
|
|
157
|
-
function referencedBy(path, content, composition) {
|
|
158
|
-
const model = modelOf(composition, path);
|
|
159
|
-
if (model === null)
|
|
160
|
-
return [];
|
|
161
|
-
const read = parseFrontmatter(content, path);
|
|
162
|
-
const type = read.ok ? read.frontmatter.type : undefined;
|
|
163
|
-
if (!read.ok || type === undefined || !Object.hasOwn(model.types, type))
|
|
164
|
-
return [];
|
|
165
|
-
const definition = model.types[type];
|
|
166
|
-
return [
|
|
167
|
-
...new Set([
|
|
168
|
-
...references(read.frontmatter, definition).flatMap(({ value }) => {
|
|
169
|
-
const found = target(path, value);
|
|
170
|
-
return found === null ? [] : [found];
|
|
171
|
-
}),
|
|
172
|
-
...sectionReferences(path, content, definition).flatMap(({ target }) => target === null ? [] : [target]),
|
|
173
|
-
]),
|
|
174
|
-
];
|
|
175
|
-
}
|
|
176
|
-
function reindexed(index, changed) {
|
|
177
|
-
const referrers = new Map();
|
|
178
|
-
const touch = (target) => {
|
|
179
|
-
let held = referrers.get(target);
|
|
180
|
-
if (held === undefined) {
|
|
181
|
-
held = new Set(Object.hasOwn(index.referrers, target) ? index.referrers[target] : []);
|
|
182
|
-
referrers.set(target, held);
|
|
183
|
-
}
|
|
184
|
-
return held;
|
|
185
|
-
};
|
|
186
|
-
for (const [path, found] of changed) {
|
|
187
|
-
const before = Object.hasOwn(index.targets, path) ? index.targets[path] : [];
|
|
188
|
-
for (const target of before)
|
|
189
|
-
touch(target).delete(path);
|
|
190
|
-
for (const target of found)
|
|
191
|
-
touch(target).add(path);
|
|
192
|
-
}
|
|
193
|
-
const emptied = [...referrers].filter(([, held]) => held.size === 0).map(([target]) => target);
|
|
194
|
-
return {
|
|
195
|
-
composition: index.composition,
|
|
196
|
-
targets: patched(index.targets, [...changed].filter(([, found]) => found.length > 0), [...changed].filter(([, found]) => found.length === 0).map(([path]) => path)),
|
|
197
|
-
referrers: patched(index.referrers, [...referrers]
|
|
198
|
-
.filter(([, held]) => held.size > 0)
|
|
199
|
-
.map(([target, held]) => [target, [...held]]), emptied),
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
function heldIndex(held, composition) {
|
|
203
|
-
const index = referrersOf.get(held.text);
|
|
204
|
-
return index !== undefined && typing(index.composition, composition) ? index : null;
|
|
205
|
-
}
|
|
206
|
-
const indexing = new WeakMap();
|
|
207
|
-
export function indexReferrers(held, composition) {
|
|
208
|
-
if (heldIndex(held, composition) !== null)
|
|
209
|
-
return;
|
|
210
|
-
const running = indexing.get(held.text);
|
|
211
|
-
if (running !== undefined)
|
|
212
|
-
return running;
|
|
213
|
-
const targets = new Map();
|
|
214
|
-
const referrers = new Map();
|
|
215
|
-
const filled = inUnits(Object.keys(held.text), (path) => {
|
|
216
|
-
const content = held.text[path];
|
|
217
|
-
const found = referencedBy(path, content, composition);
|
|
218
|
-
if (found.length > 0)
|
|
219
|
-
targets.set(path, found);
|
|
220
|
-
for (const target of found)
|
|
221
|
-
referrers.set(target, [...(referrers.get(target) ?? []), path]);
|
|
222
|
-
return ROW_WEIGHT + content.length;
|
|
223
|
-
});
|
|
224
|
-
const indexed = () => {
|
|
225
|
-
referrersOf.set(held.text, {
|
|
226
|
-
composition,
|
|
227
|
-
targets: patched(shared({}), targets),
|
|
228
|
-
referrers: patched(shared({}), referrers),
|
|
229
|
-
});
|
|
230
|
-
};
|
|
231
|
-
if (!(filled instanceof Promise))
|
|
232
|
-
return indexed();
|
|
233
|
-
const building = filled.then(indexed).finally(() => indexing.delete(held.text));
|
|
234
|
-
indexing.set(held.text, building);
|
|
235
|
-
return building;
|
|
236
|
-
}
|
|
237
|
-
export function referencesIndexed(held, composition) {
|
|
238
|
-
return heldIndex(held, composition) !== null;
|
|
239
|
-
}
|
|
240
|
-
export function referring(held, composition, targets) {
|
|
241
|
-
const index = heldIndex(held, composition);
|
|
242
|
-
if (index === null)
|
|
243
|
-
return null;
|
|
244
|
-
const found = new Set();
|
|
245
|
-
for (const target of targets) {
|
|
246
|
-
if (!Object.hasOwn(index.referrers, target))
|
|
247
|
-
continue;
|
|
248
|
-
for (const file of index.referrers[target])
|
|
249
|
-
found.add(file);
|
|
250
|
-
}
|
|
251
|
-
return found;
|
|
80
|
+
export function typedText(read) {
|
|
81
|
+
return (textType(read) ?? UNTYPED) !== UNTYPED;
|
|
252
82
|
}
|
|
253
83
|
export function available(composition) {
|
|
254
|
-
return
|
|
255
|
-
(composition.selection === null || composition.selection.model.status !== 'unavailable'));
|
|
256
|
-
}
|
|
257
|
-
export function changedCleanly(next, previous, composition) {
|
|
258
|
-
if (!typing(previous.composition, composition))
|
|
259
|
-
return false;
|
|
260
|
-
const paths = new Set([
|
|
261
|
-
...differing(previous.text, next.text),
|
|
262
|
-
...differing(previous.binaries, next.binaries, () => true),
|
|
263
|
-
]);
|
|
264
|
-
const binary = (path) => Object.hasOwn(next.binaries, path);
|
|
265
|
-
const within = (file) => (path) => selected(composition, path) === selected(composition, file);
|
|
266
|
-
const reaching = (file, check) => {
|
|
267
|
-
if (!check.ok)
|
|
268
|
-
return false;
|
|
269
|
-
const part = within(file);
|
|
270
|
-
return check.references.every((reference) => resolves(reference, (path) => (part(path) ? declared(next.text[path]) : undefined), (path) => part(path) && binary(path)));
|
|
271
|
-
};
|
|
272
|
-
const changedTargets = new Map();
|
|
273
|
-
const shifted = [];
|
|
274
|
-
for (const path of paths) {
|
|
275
|
-
const now = next.text[path];
|
|
276
|
-
const was = previous.text[path];
|
|
277
|
-
const modeled = modelOf(composition, path) !== null;
|
|
278
|
-
if ((now === undefined) !== (was === undefined) ||
|
|
279
|
-
declared(now) !== declared(was) ||
|
|
280
|
-
binary(path) !== Object.hasOwn(previous.binaries, path)) {
|
|
281
|
-
shifted.push(path);
|
|
282
|
-
}
|
|
283
|
-
if (!modeled && typedIn(was) && !typedIn(now))
|
|
284
|
-
return false;
|
|
285
|
-
if (now === undefined) {
|
|
286
|
-
if (modeled)
|
|
287
|
-
changedTargets.set(path, []);
|
|
288
|
-
continue;
|
|
289
|
-
}
|
|
290
|
-
if (binary(path))
|
|
291
|
-
return false;
|
|
292
|
-
if (!modeled) {
|
|
293
|
-
if (declared(now) === undefined)
|
|
294
|
-
return false;
|
|
295
|
-
if (!typedIn(now) && !checked(path, now, composition).ok)
|
|
296
|
-
return false;
|
|
297
|
-
continue;
|
|
298
|
-
}
|
|
299
|
-
const check = checked(path, now, composition);
|
|
300
|
-
if (!reaching(path, check))
|
|
301
|
-
return false;
|
|
302
|
-
changedTargets.set(path, targetsOf(check));
|
|
303
|
-
}
|
|
304
|
-
const index = heldIndex(previous, composition);
|
|
305
|
-
if (index === null && shifted.length > 0)
|
|
306
|
-
return false;
|
|
307
|
-
for (const target of shifted) {
|
|
308
|
-
const files = index !== null && Object.hasOwn(index.referrers, target) ? index.referrers[target] : [];
|
|
309
|
-
for (const file of files) {
|
|
310
|
-
if (paths.has(file))
|
|
311
|
-
continue;
|
|
312
|
-
if (!reaching(file, checked(file, next.text[file], composition)))
|
|
313
|
-
return false;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
if (index !== null) {
|
|
317
|
-
referrersOf.set(next.text, changedTargets.size === 0 ? index : reindexed(index, changedTargets));
|
|
318
|
-
}
|
|
319
|
-
return true;
|
|
84
|
+
return composition.model.status !== 'unavailable';
|
|
320
85
|
}
|
package/dist/column.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Row, Value } from './tables.js';
|
|
2
|
+
export declare function text(value: Value | undefined): string;
|
|
3
|
+
export declare function texts(rows: readonly Row[], column: string): string[];
|
|
4
|
+
export declare function count(value: Value | undefined): number;
|
|
5
|
+
//# sourceMappingURL=column.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../src/column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE9C,wBAAgB,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAErD;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAEtD"}
|
package/dist/column.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function text(value) {
|
|
2
|
+
return typeof value === 'string' ? value : String(value);
|
|
3
|
+
}
|
|
4
|
+
export function texts(rows, column) {
|
|
5
|
+
return rows.map((row) => text(row[column]));
|
|
6
|
+
}
|
|
7
|
+
export function count(value) {
|
|
8
|
+
return typeof value === 'bigint' ? Number(value) : typeof value === 'number' ? value : 0;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sql } from '@agentshouse/mdmodel';
|
|
2
|
+
import { type Composition } from './collection.js';
|
|
3
|
+
import type { Plan, QueryRows } from './query.js';
|
|
4
|
+
import type { Connection } from './tables.js';
|
|
5
|
+
export type QueryRoom = {
|
|
6
|
+
readonly locator: string;
|
|
7
|
+
readonly key: number;
|
|
8
|
+
readonly composition?: Composition;
|
|
9
|
+
};
|
|
10
|
+
type Fragment = sql.Fragment;
|
|
11
|
+
export declare const VISIBLE: (alias: string) => string;
|
|
12
|
+
export declare function within(alias: string, path: string): Fragment;
|
|
13
|
+
export type QueryAnswer = QueryRows & {
|
|
14
|
+
readonly more?: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function answerQuery(connection: Connection, plan: Plan, rooms: readonly QueryRoom[], budget?: number | null): QueryAnswer;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,GAAG,EAQJ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EAAE,IAAI,EAAuC,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AAG1D,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC,CAAC;AAEF,KAAK,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAI7B,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,MAAyD,CAAC;AAalG,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAM5D;AA2dD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA4ZjE,wBAAgB,WAAW,CACzB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,WAAW,CAUb"}
|