@agentshouse/mdruntime 0.1.0-c8e110144a30a → 0.1.0-c8e865ef64c82
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 +23 -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 +187 -97
- 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 +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +31 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +311 -89
- 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 -63
- package/dist/change.d.ts +32 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +14 -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 +48 -29
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +133 -28
- package/dist/collection.d.ts +31 -9
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +49 -80
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +724 -0
- package/dist/connection.d.ts +8 -116
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -2412
- 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-live.d.ts +147 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +258 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +83 -45
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1105 -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 +197 -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 +28 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +170 -25
- package/dist/index.d.ts +41 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +530 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +277 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +165 -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 +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +215 -0
- package/dist/memory.d.ts +24 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +291 -101
- package/dist/messages.d.ts +56 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +158 -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 +24 -5
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +135 -28
- 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 +60 -8
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +64 -0
- package/dist/overlay.d.ts +8 -4
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +136 -192
- 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 +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +227 -0
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +282 -0
- package/dist/query.d.ts +49 -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 +450 -0
- package/dist/reach.d.ts +21 -7
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +343 -98
- 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 +49 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +27 -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 -53
- 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 +50 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +339 -162
- 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 +39 -10
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +196 -120
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +217 -0
- package/dist/rows.d.ts +30 -37
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -128
- 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 +42 -43
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +800 -259
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +410 -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 +302 -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 +54 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -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 +34 -0
- package/dist/store/readiness.d.ts +10 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +52 -0
- package/dist/store/records.d.ts +215 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +439 -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/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 +111 -119
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +158 -522
- package/dist/stored.d.ts +157 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +649 -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 +415 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +761 -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 +104 -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 +229 -36
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +76 -33
- package/package.json +23 -19
- package/AGENTS.md +0 -299
- 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 -440
package/dist/client.js
CHANGED
|
@@ -1,10 +1,32 @@
|
|
|
1
|
+
import { shownBy } from './media.js';
|
|
2
|
+
import { pageMetadataBlock } from './page-metadata.js';
|
|
1
3
|
import { observed } from './observation.js';
|
|
2
4
|
import { runtimeError } from './failure.js';
|
|
3
|
-
import {
|
|
5
|
+
import { blobOf, } from './outcome.js';
|
|
6
|
+
import { AUTHORIZATION_ENDED, PORT_CLOSED, wireAnswer, } from './wire.js';
|
|
7
|
+
// React renders an arrived value in a later task and opens what that render observes as it commits, so this many frames opening nothing mean the page drew what it observes.
|
|
8
|
+
const SETTLED_FRAMES = 2;
|
|
9
|
+
// A browser reads a download's address only after the click that hands it returns, so a copy's address is released a minute later.
|
|
10
|
+
const HANDED_COPY_MS = 60_000;
|
|
11
|
+
const PAGE = /\.html?$/iu;
|
|
12
|
+
const STARTED = { kind: 'started' };
|
|
13
|
+
const BLOCKED = {
|
|
14
|
+
kind: 'blocked',
|
|
15
|
+
code: 'popup-blocked',
|
|
16
|
+
fields: {},
|
|
17
|
+
retryable: true,
|
|
18
|
+
};
|
|
19
|
+
function handed(url, name) {
|
|
20
|
+
const anchor = document.createElement('a');
|
|
21
|
+
anchor.href = url;
|
|
22
|
+
anchor.download = name;
|
|
23
|
+
anchor.click();
|
|
24
|
+
}
|
|
4
25
|
function refused(refusal) {
|
|
5
|
-
return runtimeError(refusal.code
|
|
26
|
+
return runtimeError(refusal.code);
|
|
6
27
|
}
|
|
7
|
-
|
|
28
|
+
const UNBUILT = () => Promise.resolve(null);
|
|
29
|
+
export function connectMdRuntime(port, buildFile = UNBUILT) {
|
|
8
30
|
let sequence = 0;
|
|
9
31
|
let refusal = null;
|
|
10
32
|
let ended = null;
|
|
@@ -16,13 +38,13 @@ export function connectMdRuntime(port) {
|
|
|
16
38
|
const send = (message) => {
|
|
17
39
|
port.postMessage(message);
|
|
18
40
|
};
|
|
19
|
-
function begin(id, topic, first) {
|
|
41
|
+
function begin(id, topic, input, first) {
|
|
20
42
|
const handle = observed(first, () => {
|
|
21
43
|
observations.delete(id);
|
|
22
44
|
if (refusal === null)
|
|
23
45
|
send({ kind: 'stop', id });
|
|
24
|
-
}, topic
|
|
25
|
-
observations.set(id, { topic, handle });
|
|
46
|
+
}, topic);
|
|
47
|
+
observations.set(id, { topic, input, handle });
|
|
26
48
|
return handle.observation;
|
|
27
49
|
}
|
|
28
50
|
function refuse(reported) {
|
|
@@ -34,7 +56,7 @@ export function connectMdRuntime(port) {
|
|
|
34
56
|
const failure = refused(reported);
|
|
35
57
|
for (const [id, waiting] of opening) {
|
|
36
58
|
if (waiting.topic === 'connection-refusal')
|
|
37
|
-
waiting.settle(begin(id, waiting.topic, reported));
|
|
59
|
+
waiting.settle(begin(id, waiting.topic, waiting.input, reported));
|
|
38
60
|
else
|
|
39
61
|
waiting.fail(failure);
|
|
40
62
|
}
|
|
@@ -60,7 +82,7 @@ export function connectMdRuntime(port) {
|
|
|
60
82
|
drawing?.();
|
|
61
83
|
}
|
|
62
84
|
port.addEventListener('message', (event) => {
|
|
63
|
-
const message =
|
|
85
|
+
const message = wireAnswer(event.data);
|
|
64
86
|
if (message === null)
|
|
65
87
|
return;
|
|
66
88
|
if (message.kind === 'refusal') {
|
|
@@ -86,7 +108,7 @@ export function connectMdRuntime(port) {
|
|
|
86
108
|
waiting.fail(runtimeError(message.code, message.message, message.retryable));
|
|
87
109
|
}
|
|
88
110
|
else
|
|
89
|
-
waiting.settle(begin(message.id, waiting.topic, message.value));
|
|
111
|
+
waiting.settle(begin(message.id, waiting.topic, waiting.input, message.value));
|
|
90
112
|
drawing?.();
|
|
91
113
|
return;
|
|
92
114
|
}
|
|
@@ -122,15 +144,64 @@ export function connectMdRuntime(port) {
|
|
|
122
144
|
const id = (sequence += 1);
|
|
123
145
|
if (refusal !== null) {
|
|
124
146
|
return topic === 'connection-refusal'
|
|
125
|
-
? Promise.resolve(begin(id, topic, refusal))
|
|
147
|
+
? Promise.resolve(begin(id, topic, input, refusal))
|
|
126
148
|
: Promise.reject(refused(refusal));
|
|
127
149
|
}
|
|
128
150
|
return new Promise((settle, fail) => {
|
|
129
|
-
opening.set(id, { topic, settle, fail });
|
|
151
|
+
opening.set(id, { topic, input, settle, fail });
|
|
130
152
|
send({ kind: 'observe', id, topic, input });
|
|
131
153
|
drawing?.();
|
|
132
154
|
});
|
|
133
155
|
}
|
|
156
|
+
function streamed(answer) {
|
|
157
|
+
if (answer.kind !== 'binary')
|
|
158
|
+
return answer;
|
|
159
|
+
const { file, byteLength, mediaType } = answer;
|
|
160
|
+
let part = 0;
|
|
161
|
+
let received = 0;
|
|
162
|
+
const stream = new ReadableStream({
|
|
163
|
+
async pull(controller) {
|
|
164
|
+
const bytes = await ask('binaryFile.part', [file, part]);
|
|
165
|
+
if (bytes === null) {
|
|
166
|
+
if (received === byteLength)
|
|
167
|
+
controller.close();
|
|
168
|
+
else
|
|
169
|
+
controller.error(runtimeError('binary-file-absent', 'The file ended early'));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
part += 1;
|
|
173
|
+
received += bytes.byteLength;
|
|
174
|
+
controller.enqueue(bytes);
|
|
175
|
+
},
|
|
176
|
+
}, { highWaterMark: 0 });
|
|
177
|
+
return { kind: 'binary', stream, byteLength, mediaType };
|
|
178
|
+
}
|
|
179
|
+
async function download(room, path, revision) {
|
|
180
|
+
const tab = PAGE.test(path) ? globalThis.open('', '_blank') : null;
|
|
181
|
+
const linked = await ask('binaryFile.link', [room, path, revision]);
|
|
182
|
+
if (linked.kind === 'link' && PAGE.test(linked.name)) {
|
|
183
|
+
const away = tab ?? globalThis.open('', '_blank');
|
|
184
|
+
if (away === null)
|
|
185
|
+
return BLOCKED;
|
|
186
|
+
away.location.replace(linked.url);
|
|
187
|
+
return STARTED;
|
|
188
|
+
}
|
|
189
|
+
tab?.close();
|
|
190
|
+
if (linked.kind === 'link') {
|
|
191
|
+
handed(linked.url, linked.name);
|
|
192
|
+
return STARTED;
|
|
193
|
+
}
|
|
194
|
+
if (linked.kind !== 'absent')
|
|
195
|
+
return linked;
|
|
196
|
+
const read = streamed(await ask('binaryFile.read', [room, path, revision]));
|
|
197
|
+
if (read.kind !== 'binary')
|
|
198
|
+
return read;
|
|
199
|
+
const copy = await blobOf(read);
|
|
200
|
+
const url = URL.createObjectURL(copy);
|
|
201
|
+
handed(url, path.slice(path.lastIndexOf('/') + 1));
|
|
202
|
+
setTimeout(() => URL.revokeObjectURL(url), HANDED_COPY_MS);
|
|
203
|
+
return STARTED;
|
|
204
|
+
}
|
|
134
205
|
function settled() {
|
|
135
206
|
if (settling !== null)
|
|
136
207
|
return settling;
|
|
@@ -141,21 +212,28 @@ export function connectMdRuntime(port) {
|
|
|
141
212
|
if (opening.size > 0)
|
|
142
213
|
return;
|
|
143
214
|
const at = moved;
|
|
144
|
-
|
|
215
|
+
const waited = (frames) => {
|
|
145
216
|
requestAnimationFrame(() => {
|
|
217
|
+
if (frames < SETTLED_FRAMES) {
|
|
218
|
+
waited(frames + 1);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
146
221
|
if (moved !== at || opening.size > 0)
|
|
147
222
|
return;
|
|
148
223
|
drawing = null;
|
|
149
224
|
resolve();
|
|
150
225
|
});
|
|
151
|
-
}
|
|
226
|
+
};
|
|
227
|
+
waited(1);
|
|
152
228
|
};
|
|
153
229
|
drawing = check;
|
|
154
230
|
check();
|
|
155
231
|
});
|
|
156
232
|
return settling;
|
|
157
233
|
}
|
|
158
|
-
|
|
234
|
+
const show = (room, path, revision) => ask('binaryFile.show', [room, path, revision]).then((shown) => streamed(shown));
|
|
235
|
+
return shownBy(show, {
|
|
236
|
+
buildFile,
|
|
159
237
|
rooms: () => ask('rooms', []),
|
|
160
238
|
query: ((query) => ask('query', [query])),
|
|
161
239
|
search: (request) => ask('search', [request]),
|
|
@@ -163,46 +241,73 @@ export function connectMdRuntime(port) {
|
|
|
163
241
|
roomDraft: {
|
|
164
242
|
list: () => ask('roomDraft.list', []),
|
|
165
243
|
read: (room, path) => ask('roomDraft.read', [room, path]),
|
|
166
|
-
write: (room, path, revision, parts) => ask('roomDraft.write', [room, path, revision, parts]),
|
|
244
|
+
write: (room, path, revision, parts, next) => ask('roomDraft.write', next === undefined ? [room, path, revision, parts] : [room, path, revision, parts, next]),
|
|
167
245
|
discard: (room, path, revision) => ask('roomDraft.discard', [room, path, revision]),
|
|
168
246
|
},
|
|
169
247
|
save: (room, roomDrafts) => ask('save', [room, roomDrafts]),
|
|
248
|
+
saveParts: (room, parts) => ask('saveParts', [room, parts]),
|
|
170
249
|
presentation: {
|
|
171
250
|
read: () => ask('presentation.read', []),
|
|
172
251
|
write: (value) => ask('presentation.write', [value]),
|
|
252
|
+
edit: (members) => ask('presentation.edit', [members]),
|
|
173
253
|
},
|
|
174
254
|
conversation: {
|
|
175
255
|
list: () => ask('conversation.list', []),
|
|
176
256
|
read: (conversation, options) => ask('conversation.read', [conversation, options]),
|
|
177
257
|
create: (input) => ask('conversation.create', [input]),
|
|
178
|
-
send: (conversation) => ask('conversation.send', [conversation]),
|
|
179
|
-
answer: (conversation, answer) => ask('conversation.answer', [conversation, answer]),
|
|
180
|
-
interrupt: (conversation) => ask('conversation.interrupt', [conversation]),
|
|
181
|
-
kill: (conversation) => ask('conversation.kill', [conversation]),
|
|
182
|
-
|
|
183
|
-
|
|
258
|
+
send: (conversation, operation, draft) => ask('conversation.send', [conversation, operation, draft]),
|
|
259
|
+
answer: (conversation, answer, operation) => ask('conversation.answer', [conversation, answer, operation]),
|
|
260
|
+
interrupt: (conversation, operation) => ask('conversation.interrupt', [conversation, operation]),
|
|
261
|
+
kill: (conversation, operation) => ask('conversation.kill', [conversation, operation]),
|
|
262
|
+
delete: (conversation, operation) => ask('conversation.delete', [conversation, operation]),
|
|
263
|
+
takeOut: (conversation, message, operation) => ask('conversation.takeOut', [conversation, message, operation]),
|
|
264
|
+
decide: (request, decision, operation) => ask('conversation.decide', [request, decision, operation]),
|
|
265
|
+
rename: (conversation, name, operation) => ask('conversation.rename', [conversation, name, operation]),
|
|
266
|
+
option: (conversation, option, value, operation) => ask('conversation.option', [conversation, option, value, operation]),
|
|
267
|
+
retry: (conversation, message, operation) => ask('conversation.retry', [conversation, message, operation]),
|
|
268
|
+
pins: () => ask('conversation.pins', []),
|
|
269
|
+
pin: (figures) => ask('conversation.pin', [figures]),
|
|
270
|
+
openedTurns: () => ask('conversation.openedTurns', []),
|
|
271
|
+
openTurn: (conversation, turn) => ask('conversation.openTurn', [conversation, turn]),
|
|
272
|
+
dismissSuggestion: (conversation, suggestion) => ask('conversation.dismissSuggestion', [conversation, suggestion]),
|
|
273
|
+
pageMetadata: async (app, address) => pageMetadataBlock(app, address, [...observations]
|
|
274
|
+
.sort(([left], [right]) => left - right)
|
|
275
|
+
.flatMap(([, { topic, input }]) => (topic === 'query' ? [input[0]] : []))),
|
|
184
276
|
},
|
|
185
277
|
chatDraft: {
|
|
186
278
|
write: (conversation, draft, revision) => ask('chatDraft.write', [conversation, draft, revision]),
|
|
279
|
+
prepend: (conversation, draft) => ask('chatDraft.prepend', [conversation, draft]),
|
|
280
|
+
append: (conversation, draft) => ask('chatDraft.append', [conversation, draft]),
|
|
187
281
|
discard: (conversation) => ask('chatDraft.discard', [conversation]),
|
|
188
282
|
},
|
|
189
283
|
history: (locator, path, query) => ask('history', [locator, path, query]),
|
|
284
|
+
resolve: (room, path, destination) => ask('resolve', [room, path, destination]),
|
|
190
285
|
binaryFile: {
|
|
191
|
-
read: (room, path, revision) => ask('binaryFile.read', [room, path, revision]),
|
|
192
|
-
|
|
286
|
+
read: (room, path, revision) => ask('binaryFile.read', [room, path, revision]).then((read) => streamed(read)),
|
|
287
|
+
attach: (room, file) => ask('binaryFile.attach', [room, file]),
|
|
288
|
+
download,
|
|
193
289
|
},
|
|
194
290
|
call: (name, input) => ask('call', [name, input]),
|
|
291
|
+
answered: (operation) => ask('answered', [operation]),
|
|
195
292
|
reached: (locator, roomVersion, path) => ask('reached', [locator, roomVersion, path]),
|
|
196
|
-
log: () => ask('log', []),
|
|
197
293
|
persistence: () => ask('persistence', []),
|
|
294
|
+
retry: () => ask('retry', []),
|
|
295
|
+
cleanUp: () => ask('cleanUp', []),
|
|
296
|
+
unsent: () => ask('unsent', []),
|
|
297
|
+
reset: () => ask('reset', []),
|
|
298
|
+
readAgain: () => ask('readAgain', []),
|
|
198
299
|
observe: ((topic, ...input) => watch(topic, input)),
|
|
199
300
|
reauthorize: () => ask('reauthorize', []),
|
|
200
301
|
settled,
|
|
201
|
-
};
|
|
302
|
+
});
|
|
202
303
|
}
|
|
203
304
|
const turns = new WeakMap();
|
|
204
305
|
export function inTurn(client, work) {
|
|
205
|
-
const
|
|
206
|
-
turns.set(client,
|
|
207
|
-
return
|
|
306
|
+
const turn = (turns.get(client) ?? Promise.resolve()).then(work);
|
|
307
|
+
turns.set(client, turn.then(() => undefined, () => undefined));
|
|
308
|
+
return turn;
|
|
208
309
|
}
|
|
310
|
+
export { chainedWindows } from './chain.js';
|
|
311
|
+
export { roomDraftRevision } from './identity.js';
|
|
312
|
+
export { defineRoomMedia, ROOM_MEDIA } from './media.js';
|
|
313
|
+
export { unanswered } from './wire.js';
|
package/dist/collection.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type Document, type
|
|
2
|
-
import type { ModelState } from './model.js';
|
|
1
|
+
import { type DefinitionOf, type Document, type TypedPath } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { ModelState, TypesResult } from './model.js';
|
|
3
|
+
import type { AppTypedSelection } from './listing.js';
|
|
3
4
|
import type { MdModelIdentity } from './adapter.js';
|
|
4
|
-
import type { Refused } from './transfer.js';
|
|
5
5
|
export declare const MD_MODEL: MdModelIdentity;
|
|
6
6
|
export type Collection = {
|
|
7
7
|
text: Readonly<Record<string, string>>;
|
|
@@ -14,12 +14,34 @@ export type Composition = {
|
|
|
14
14
|
roots: readonly string[];
|
|
15
15
|
model: ModelState;
|
|
16
16
|
} | null;
|
|
17
|
+
typedPaths: readonly TypedPath[];
|
|
17
18
|
};
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export declare function
|
|
19
|
+
export type Composed = {
|
|
20
|
+
readonly composition: Composition;
|
|
21
|
+
readonly fingerprint: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function composedOf(composition: Composition): Composed;
|
|
24
|
+
type Selecting<M> = {
|
|
25
|
+
readonly model: M;
|
|
26
|
+
readonly selection: {
|
|
27
|
+
readonly roots: readonly string[];
|
|
28
|
+
readonly model: M;
|
|
29
|
+
} | null;
|
|
30
|
+
};
|
|
31
|
+
export declare function selected(composition: {
|
|
32
|
+
readonly selection: {
|
|
33
|
+
readonly roots: readonly string[];
|
|
34
|
+
} | null;
|
|
35
|
+
}, path: string): boolean;
|
|
36
|
+
export declare function governing<M>(composition: Selecting<M>, path: string): M;
|
|
37
|
+
export declare function definitionsAt(composition: Composition, path: string): DefinitionOf;
|
|
38
|
+
export declare function definitionsIn(room: {
|
|
39
|
+
readonly model: TypesResult;
|
|
40
|
+
readonly typedSelection: AppTypedSelection | null;
|
|
41
|
+
}, path: string, typedPaths: readonly TypedPath[]): DefinitionOf;
|
|
42
|
+
export declare function collectionOf(text: Readonly<Record<string, string>>, composition: Composition): Collection;
|
|
43
|
+
export declare function documentsOf(collection: Collection): Generator<number, Iterable<readonly [string, Document]>, void>;
|
|
23
44
|
export declare function validRoot(root: unknown): root is string;
|
|
24
|
-
export declare function
|
|
45
|
+
export declare function available(composition: Composition): boolean;
|
|
46
|
+
export {};
|
|
25
47
|
//# sourceMappingURL=collection.d.ts.map
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EAEf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAEhG,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAc3F,wBAAgB,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,CAS7D;AAED,KAAK,SAAS,CAAC,CAAC,IAAI;IAClB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;CACrF,CAAC;AAEF,wBAAgB,QAAQ,CACtB,WAAW,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,EACjF,IAAI,EAAE,MAAM,GACX,OAAO,CAKT;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAIvE;AAYD,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAIlF;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,EACxF,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,YAAY,CAQd;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,GACvB,UAAU,CAcZ;AAED,wBAAiB,WAAW,CAC1B,UAAU,EAAE,UAAU,GACrB,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAQhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEvD;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAE3D"}
|
package/dist/collection.js
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { definitionAt, parse, VERSION, } from '@agentshouse/mdmodel';
|
|
2
2
|
import { beneath, normalize } from './paths.js';
|
|
3
|
+
import { hashed } from './observation.js';
|
|
4
|
+
import { sortedKeys } from './shared.js';
|
|
3
5
|
export const MD_MODEL = { identity: '@agentshouse/mdmodel', version: VERSION };
|
|
4
|
-
const
|
|
5
|
-
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) {
|
|
6
28
|
return (composition.selection !== null &&
|
|
7
29
|
composition.selection.roots.some((root) => beneath(root, path)));
|
|
8
30
|
}
|
|
@@ -11,99 +33,46 @@ export function governing(composition, path) {
|
|
|
11
33
|
? composition.selection.model
|
|
12
34
|
: composition.model;
|
|
13
35
|
}
|
|
14
|
-
|
|
15
|
-
|
|
36
|
+
function definitionsUnder(composition, path, typedPaths, typesOf) {
|
|
37
|
+
const types = typesOf(governing(composition, path));
|
|
38
|
+
return types === null ? () => undefined : definitionAt({ types }, path, typedPaths);
|
|
39
|
+
}
|
|
40
|
+
export function definitionsAt(composition, path) {
|
|
41
|
+
return definitionsUnder(composition, path, composition.typedPaths, (model) => model.status === 'unavailable' ? null : model.types);
|
|
42
|
+
}
|
|
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) {
|
|
16
47
|
const parsed = new Map();
|
|
17
|
-
|
|
18
|
-
for (const [path, held] of parsedIn.get(previous) ?? []) {
|
|
19
|
-
if (previous.text[path] === text[path])
|
|
20
|
-
parsed.set(path, held);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
const collection = {
|
|
48
|
+
return {
|
|
24
49
|
text,
|
|
25
50
|
composition,
|
|
26
51
|
document(path) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return held ?? undefined;
|
|
52
|
+
if (parsed.has(path))
|
|
53
|
+
return parsed.get(path) ?? undefined;
|
|
30
54
|
const content = text[path];
|
|
31
55
|
if (content === undefined)
|
|
32
56
|
return undefined;
|
|
33
|
-
const read = parse(content, path);
|
|
57
|
+
const read = parse(content, path, definitionsAt(composition, path));
|
|
34
58
|
parsed.set(path, read.ok ? read.document : null);
|
|
35
59
|
return read.ok ? read.document : undefined;
|
|
36
60
|
},
|
|
37
61
|
};
|
|
38
|
-
parsedIn.set(collection, parsed);
|
|
39
|
-
return collection;
|
|
40
|
-
}
|
|
41
|
-
export function passingDocument(collection, path) {
|
|
42
|
-
const held = parsedIn.get(collection)?.get(path);
|
|
43
|
-
if (held !== undefined)
|
|
44
|
-
return held ?? undefined;
|
|
45
|
-
const content = collection.text[path];
|
|
46
|
-
if (content === undefined)
|
|
47
|
-
return undefined;
|
|
48
|
-
const read = parse(content, path);
|
|
49
|
-
return read.ok ? read.document : undefined;
|
|
50
62
|
}
|
|
51
63
|
export function* documentsOf(collection) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
yield [path, held];
|
|
59
|
-
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];
|
|
60
70
|
}
|
|
61
|
-
|
|
62
|
-
if (read.ok)
|
|
63
|
-
yield [path, read.document];
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
export function unreadable(text, previous) {
|
|
67
|
-
for (const path of Object.keys(text).sort()) {
|
|
68
|
-
if (previous?.[path] === text[path])
|
|
69
|
-
continue;
|
|
70
|
-
const read = parse(text[path], path);
|
|
71
|
-
if (!read.ok)
|
|
72
|
-
return { kind: 'refused', refusal: read.refusal };
|
|
73
|
-
}
|
|
74
|
-
return null;
|
|
71
|
+
})();
|
|
75
72
|
}
|
|
76
73
|
export function validRoot(root) {
|
|
77
74
|
return typeof root === 'string' && normalize(root) === root;
|
|
78
75
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
81
|
-
const typed = Object.entries(documents).find(([, content]) => {
|
|
82
|
-
const parsed = parse(content);
|
|
83
|
-
return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';
|
|
84
|
-
});
|
|
85
|
-
if (typed !== undefined)
|
|
86
|
-
return { verdict: 'refuse', rule: 'model-unavailable', file: typed[0] };
|
|
87
|
-
}
|
|
88
|
-
return validate(documents, { binaryTargets }, model.status === 'unavailable' ? NO_TYPES : { types: model.types });
|
|
89
|
-
}
|
|
90
|
-
export function validateCollection(text, binaryTargets, composition) {
|
|
91
|
-
const collection = {};
|
|
92
|
-
const selection = {};
|
|
93
|
-
for (const [path, content] of Object.entries(text)) {
|
|
94
|
-
if (selected(composition, path))
|
|
95
|
-
selection[path] = content;
|
|
96
|
-
else
|
|
97
|
-
collection[path] = content;
|
|
98
|
-
}
|
|
99
|
-
const verdicts = [
|
|
100
|
-
validateAgainst(collection, binaryTargets.filter((path) => !selected(composition, path)), composition.model),
|
|
101
|
-
];
|
|
102
|
-
if (composition.selection !== null) {
|
|
103
|
-
verdicts.push(validateAgainst(selection, binaryTargets.filter((path) => selected(composition, path)), composition.selection.model));
|
|
104
|
-
}
|
|
105
|
-
const refusals = verdicts.filter((verdict) => verdict.verdict === 'refuse');
|
|
106
|
-
if (refusals.length === 0)
|
|
107
|
-
return verdicts[0];
|
|
108
|
-
return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];
|
|
76
|
+
export function available(composition) {
|
|
77
|
+
return composition.model.status !== 'unavailable';
|
|
109
78
|
}
|
|
@@ -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,EAAiB,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAElE,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;AAIF,KAAK,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAI7B,eAAO,MAAM,OAAO,UAAW,MAAM,KAAG,MACkC,CAAC;AAa3E,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"}
|