@agentshouse/mdruntime 0.1.0-c698c0ebd65bd → 0.1.0-c6b1e70f2da66
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 +19 -16
- package/dist/acceptance.d.ts +6 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +387 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +251 -0
- package/dist/adapter.d.ts +155 -86
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +7 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +40 -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 +324 -93
- 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 +9 -14
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +11 -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 +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +45 -16
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +104 -13
- 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 +16 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +711 -0
- package/dist/connection.d.ts +8 -117
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +106 -2486
- 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 +135 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +247 -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 +55 -42
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +985 -649
- 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 +175 -0
- package/dist/durability.d.ts +19 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +7 -4
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -28
- package/dist/expectation.d.ts +4 -2
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +33 -11
- package/dist/failure.d.ts +1 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +3 -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 +7 -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 +11 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +127 -20
- package/dist/index.d.ts +35 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/install.d.ts +56 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +556 -0
- package/dist/job.d.ts +5 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +7 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +270 -0
- package/dist/listing.d.ts +53 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +176 -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 +9 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +62 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +61 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +19 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +251 -97
- package/dist/messages.d.ts +49 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +148 -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 +14 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +197 -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 +22 -4
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +127 -26
- 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 +60 -0
- package/dist/outcome.d.ts +49 -8
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +42 -0
- package/dist/overlay.d.ts +5 -4
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +132 -192
- package/dist/parts.d.ts +11 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +21 -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 +233 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +272 -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 -2
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +13 -2
- package/dist/reach.d.ts +21 -7
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +292 -91
- package/dist/react.d.ts +20 -6
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +17 -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 +37 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +174 -0
- package/dist/recovery.d.ts +26 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +232 -0
- package/dist/refresh.d.ts +17 -14
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +143 -51
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +57 -0
- package/dist/replica.d.ts +56 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +338 -159
- package/dist/room-draft.d.ts +39 -9
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +186 -86
- 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 +43 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +58 -10
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +569 -189
- package/dist/saves.d.ts +70 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +1008 -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 +31 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +290 -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 +20 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +77 -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/rooms.d.ts +44 -0
- package/dist/socket/rooms.d.ts.map +1 -0
- package/dist/socket/rooms.js +90 -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 +70 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +175 -0
- package/dist/source.d.ts +61 -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/fences.d.ts +16 -0
- package/dist/store/fences.d.ts.map +1 -0
- package/dist/store/fences.js +26 -0
- 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 +210 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +428 -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 +106 -127
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +136 -575
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +649 -0
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +224 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +532 -0
- package/dist/tables.d.ts +412 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +737 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -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 +181 -33
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +62 -31
- package/package.json +19 -19
- package/AGENTS.md +0 -299
- 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/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 -26
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -62
- 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 -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 -620
- 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/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- 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/digest.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"AA0EA,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,GAAG,IAAI,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,MAAM,IAAI,MAAM,CAoC/B;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAMxD"}
|
package/dist/digest.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { FILE_PART_BYTES } from './tables.js';
|
|
2
|
+
const ROUNDS = new Uint32Array([
|
|
3
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
4
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
5
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
6
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
7
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
8
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
9
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
10
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
|
|
11
|
+
]);
|
|
12
|
+
const INITIAL = [
|
|
13
|
+
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,
|
|
14
|
+
];
|
|
15
|
+
const BLOCK = 64;
|
|
16
|
+
function rotated(value, by) {
|
|
17
|
+
return (value >>> by) | (value << (32 - by));
|
|
18
|
+
}
|
|
19
|
+
function compressed(state, words, bytes, at) {
|
|
20
|
+
for (let index = 0; index < 16; index += 1) {
|
|
21
|
+
const from = at + index * 4;
|
|
22
|
+
words[index] =
|
|
23
|
+
(bytes[from] << 24) | (bytes[from + 1] << 16) | (bytes[from + 2] << 8) | bytes[from + 3];
|
|
24
|
+
}
|
|
25
|
+
for (let index = 16; index < 64; index += 1) {
|
|
26
|
+
const early = words[index - 15];
|
|
27
|
+
const late = words[index - 2];
|
|
28
|
+
const lower = rotated(early, 7) ^ rotated(early, 18) ^ (early >>> 3);
|
|
29
|
+
const upper = rotated(late, 17) ^ rotated(late, 19) ^ (late >>> 10);
|
|
30
|
+
words[index] = (words[index - 16] + lower + words[index - 7] + upper) | 0;
|
|
31
|
+
}
|
|
32
|
+
let a = state[0];
|
|
33
|
+
let b = state[1];
|
|
34
|
+
let c = state[2];
|
|
35
|
+
let d = state[3];
|
|
36
|
+
let e = state[4];
|
|
37
|
+
let f = state[5];
|
|
38
|
+
let g = state[6];
|
|
39
|
+
let h = state[7];
|
|
40
|
+
for (let index = 0; index < 64; index += 1) {
|
|
41
|
+
const chosen = (e & f) ^ (~e & g);
|
|
42
|
+
const first = (h +
|
|
43
|
+
(rotated(e, 6) ^ rotated(e, 11) ^ rotated(e, 25)) +
|
|
44
|
+
chosen +
|
|
45
|
+
ROUNDS[index] +
|
|
46
|
+
words[index]) |
|
|
47
|
+
0;
|
|
48
|
+
const second = ((rotated(a, 2) ^ rotated(a, 13) ^ rotated(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;
|
|
49
|
+
h = g;
|
|
50
|
+
g = f;
|
|
51
|
+
f = e;
|
|
52
|
+
e = (d + first) | 0;
|
|
53
|
+
d = c;
|
|
54
|
+
c = b;
|
|
55
|
+
b = a;
|
|
56
|
+
a = (first + second) | 0;
|
|
57
|
+
}
|
|
58
|
+
state[0] += a;
|
|
59
|
+
state[1] += b;
|
|
60
|
+
state[2] += c;
|
|
61
|
+
state[3] += d;
|
|
62
|
+
state[4] += e;
|
|
63
|
+
state[5] += f;
|
|
64
|
+
state[6] += g;
|
|
65
|
+
state[7] += h;
|
|
66
|
+
}
|
|
67
|
+
export function digest() {
|
|
68
|
+
const state = new Uint32Array(INITIAL);
|
|
69
|
+
const words = new Uint32Array(64);
|
|
70
|
+
const pending = new Uint8Array(BLOCK);
|
|
71
|
+
let held = 0;
|
|
72
|
+
let size = 0;
|
|
73
|
+
return {
|
|
74
|
+
update(bytes) {
|
|
75
|
+
size += bytes.length;
|
|
76
|
+
let from = 0;
|
|
77
|
+
if (held > 0) {
|
|
78
|
+
const taken = Math.min(BLOCK - held, bytes.length);
|
|
79
|
+
pending.set(bytes.subarray(0, taken), held);
|
|
80
|
+
held += taken;
|
|
81
|
+
from = taken;
|
|
82
|
+
if (held < BLOCK)
|
|
83
|
+
return;
|
|
84
|
+
compressed(state, words, pending, 0);
|
|
85
|
+
held = 0;
|
|
86
|
+
}
|
|
87
|
+
for (; from + BLOCK <= bytes.length; from += BLOCK)
|
|
88
|
+
compressed(state, words, bytes, from);
|
|
89
|
+
pending.set(bytes.subarray(from), 0);
|
|
90
|
+
held = bytes.length - from;
|
|
91
|
+
},
|
|
92
|
+
hex() {
|
|
93
|
+
const bits = size * 8;
|
|
94
|
+
const tail = new Uint8Array(held < 56 ? BLOCK : BLOCK * 2);
|
|
95
|
+
tail.set(pending.subarray(0, held));
|
|
96
|
+
tail[held] = 0x80;
|
|
97
|
+
const length = new DataView(tail.buffer, tail.length - 8);
|
|
98
|
+
length.setUint32(0, Math.floor(bits / 0x1_0000_0000));
|
|
99
|
+
length.setUint32(4, bits >>> 0);
|
|
100
|
+
const final = new Uint32Array(state);
|
|
101
|
+
for (let from = 0; from < tail.length; from += BLOCK)
|
|
102
|
+
compressed(final, words, tail, from);
|
|
103
|
+
return [...final].map((word) => word.toString(16).padStart(8, '0')).join('');
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export async function sha256(blob) {
|
|
108
|
+
const hashed = digest();
|
|
109
|
+
for (let at = 0; at < blob.size; at += FILE_PART_BYTES) {
|
|
110
|
+
hashed.update(new Uint8Array(await blob.slice(at, at + FILE_PART_BYTES).arrayBuffer()));
|
|
111
|
+
}
|
|
112
|
+
return hashed.hex();
|
|
113
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Discovery, DiscoveredRoom, Member } from './adapter.js';
|
|
2
|
+
import type { Runtime } from './runtime.js';
|
|
3
|
+
import type { Live } from './socket.js';
|
|
4
|
+
import type { CycleProgress } from './status.js';
|
|
5
|
+
import type { RuntimeStore } from './store.js';
|
|
6
|
+
export declare function malformed(listed: readonly DiscoveredRoom[]): string | null;
|
|
7
|
+
export declare function applyDiscovery(runtime: Runtime, found: readonly DiscoveredRoom[], started: number, left?: readonly string[]): Promise<readonly DiscoveredRoom[]>;
|
|
8
|
+
export declare function signIn(runtime: Runtime, local: RuntimeStore, signedIn: Member | null): Promise<void>;
|
|
9
|
+
export declare function discoverRooms(runtime: Runtime, local: RuntimeStore, progress: CycleProgress, live: Live, found: Discovery | null): Promise<readonly DiscoveredRoom[] | null>;
|
|
10
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EACT,cAAc,EACd,MAAM,EAEP,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAkB/C,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,GAAG,IAAI,CAsB1E;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAoEpC;AAUD,wBAAsB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,iBAI1F;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,OAAO,CAAC,SAAS,cAAc,EAAE,GAAG,IAAI,CAAC,CA+D3C"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { validRoot } from './collection.js';
|
|
2
|
+
import { admitted, list, listHeld } from './listing.js';
|
|
3
|
+
import { confirmLocks, lockedRooms, relocked } from './locks.js';
|
|
4
|
+
import { loseRooms } from './lost.js';
|
|
5
|
+
import { cachedModels } from './models.js';
|
|
6
|
+
import { beneath } from './paths.js';
|
|
7
|
+
import { refuse } from './refusal.js';
|
|
8
|
+
import { emitMember, emitRefusal, emitRooms, moveTo, transferring } from './shown.js';
|
|
9
|
+
function within(root, path) {
|
|
10
|
+
return root === '' || beneath(root, path);
|
|
11
|
+
}
|
|
12
|
+
function declaredSelection(room) {
|
|
13
|
+
const selection = room.typedSelection;
|
|
14
|
+
if (selection === undefined)
|
|
15
|
+
return true;
|
|
16
|
+
if (!Array.isArray(selection.roots) || selection.roots.length === 0)
|
|
17
|
+
return false;
|
|
18
|
+
return selection.roots.every((root, index) => validRoot(root) &&
|
|
19
|
+
root !== '' &&
|
|
20
|
+
selection.roots.every((other, at) => at === index || !within(other, root)));
|
|
21
|
+
}
|
|
22
|
+
export function malformed(listed) {
|
|
23
|
+
for (const room of listed) {
|
|
24
|
+
if (room.operations === undefined ||
|
|
25
|
+
!['write', 'erase'].every((operation) => Array.isArray(room.operations[operation]) &&
|
|
26
|
+
room.operations[operation].every((scope) => typeof scope === 'string')) ||
|
|
27
|
+
room.replica === undefined ||
|
|
28
|
+
typeof room.replica.selection !== 'string' ||
|
|
29
|
+
room.replica.selection.length === 0 ||
|
|
30
|
+
!['admitted', 'unavailable'].includes(room.replica.admission) ||
|
|
31
|
+
!['locked', 'open'].includes(room.replica.offline)) {
|
|
32
|
+
return `invalid model or replica declaration ${room.locator}`;
|
|
33
|
+
}
|
|
34
|
+
if (!declaredSelection(room))
|
|
35
|
+
return `invalid typed selection declaration ${room.locator}`;
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
export async function applyDiscovery(runtime, found, started, left) {
|
|
40
|
+
const { store, socket } = runtime;
|
|
41
|
+
const { rooms } = socket;
|
|
42
|
+
const lockedBefore = await lockedRooms(runtime);
|
|
43
|
+
const local = await store.open();
|
|
44
|
+
const stillFenced = new Set(await local.fences());
|
|
45
|
+
const relisting = found
|
|
46
|
+
.map(({ locator }) => locator)
|
|
47
|
+
.filter((locator) => {
|
|
48
|
+
const fence = store.fences.of(locator);
|
|
49
|
+
return stillFenced.has(locator) && (fence === undefined || fence.at < started);
|
|
50
|
+
});
|
|
51
|
+
const relisted = relisting.length === 0
|
|
52
|
+
? new Set()
|
|
53
|
+
: await store.durably((held) => held.unfence(relisting));
|
|
54
|
+
for (const { locator } of found) {
|
|
55
|
+
const fence = store.fences.of(locator);
|
|
56
|
+
if (fence === undefined || fence.at >= started)
|
|
57
|
+
continue;
|
|
58
|
+
if (relisted.has(locator) || (!stillFenced.has(locator) && !fence.written)) {
|
|
59
|
+
store.fences.lift(locator);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const kept = await local.held();
|
|
63
|
+
await loseRooms(runtime, found
|
|
64
|
+
.filter((room) => room.replica.admission !== 'admitted' &&
|
|
65
|
+
(kept.held.has(room.locator) || store.installs.of(room.locator).transfer !== null))
|
|
66
|
+
.map((room) => room.locator));
|
|
67
|
+
const listed = found.filter(({ locator }) => !store.fences.has(locator) && (!stillFenced.has(locator) || relisted.has(locator)));
|
|
68
|
+
const listedLocatorsNow = new Set(listed.map((room) => room.locator));
|
|
69
|
+
for (const locator of listedLocatorsNow)
|
|
70
|
+
rooms.stand(locator, { refusal: null });
|
|
71
|
+
if (left === undefined)
|
|
72
|
+
rooms.undiscoverAll();
|
|
73
|
+
for (const room of listed)
|
|
74
|
+
rooms.discover(room);
|
|
75
|
+
const named = new Set(found.map((room) => room.locator));
|
|
76
|
+
await loseRooms(runtime, left ??
|
|
77
|
+
[
|
|
78
|
+
...new Set([
|
|
79
|
+
...rooms.declarations().keys(),
|
|
80
|
+
...kept.held,
|
|
81
|
+
...store.installs.transferring(),
|
|
82
|
+
]),
|
|
83
|
+
].filter((locator) => !named.has(locator)));
|
|
84
|
+
const held = await store.rooms(listed.map((room) => room.locator));
|
|
85
|
+
for (const room of listed) {
|
|
86
|
+
const record = held.get(room.locator)?.record;
|
|
87
|
+
if (record !== undefined && record.replica.selection !== room.replica.selection) {
|
|
88
|
+
listHeld(runtime, room.locator);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
list(runtime, room, admitted(runtime, room));
|
|
92
|
+
}
|
|
93
|
+
confirmLocks(runtime, listed);
|
|
94
|
+
socket.session.set({ roomsListed: true });
|
|
95
|
+
emitRooms(runtime);
|
|
96
|
+
await relocked(runtime, lockedBefore);
|
|
97
|
+
return listed;
|
|
98
|
+
}
|
|
99
|
+
async function asked({ socket }, authorized) {
|
|
100
|
+
try {
|
|
101
|
+
return (await socket.discover(authorized)) ?? { kind: 'transport-uncertainty' };
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return { kind: 'transport-uncertainty' };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export async function signIn(runtime, local, signedIn) {
|
|
108
|
+
if (JSON.stringify(signedIn) === JSON.stringify((await local.facts()).member))
|
|
109
|
+
return;
|
|
110
|
+
await local.fact('member', signedIn);
|
|
111
|
+
emitMember(runtime, signedIn);
|
|
112
|
+
}
|
|
113
|
+
export async function discoverRooms(runtime, local, progress, live, found) {
|
|
114
|
+
const { socket, journal } = runtime;
|
|
115
|
+
const { session } = socket;
|
|
116
|
+
const { closed, authorization } = session.now();
|
|
117
|
+
if (closed || authorization === undefined) {
|
|
118
|
+
socket.notifyReady();
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
moveTo(runtime, transferring(runtime));
|
|
122
|
+
const started = session.now().discoveries + 1;
|
|
123
|
+
session.set({ discoveries: started });
|
|
124
|
+
const result = found ?? (await asked(runtime, authorization));
|
|
125
|
+
if (result.kind === 'discovery')
|
|
126
|
+
session.set({ roomsNamed: true });
|
|
127
|
+
if (!live()) {
|
|
128
|
+
progress.complete = false;
|
|
129
|
+
socket.notifyReady();
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
journal.record(`connection discover ${result.kind}`);
|
|
133
|
+
if (result.kind === 'transport-uncertainty') {
|
|
134
|
+
await cachedModels(runtime, local);
|
|
135
|
+
progress.reachable = false;
|
|
136
|
+
progress.complete = false;
|
|
137
|
+
socket.notifyReady();
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
if (result.kind === 'contract-unavailable') {
|
|
141
|
+
journal.record(`connection contract unavailable ${result.code}`);
|
|
142
|
+
await refuse(runtime, 'missing-required-guarantee', {
|
|
143
|
+
code: result.code,
|
|
144
|
+
fields: result.fields,
|
|
145
|
+
retryable: result.retryable,
|
|
146
|
+
});
|
|
147
|
+
socket.notifyReady();
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
if (result.kind === 'revoked-authorization') {
|
|
151
|
+
await refuse(runtime, 'revoked-authorization');
|
|
152
|
+
socket.notifyReady();
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
const invalid = malformed(result.rooms);
|
|
156
|
+
if (invalid !== null) {
|
|
157
|
+
journal.record(invalid);
|
|
158
|
+
await refuse(runtime, 'missing-required-guarantee');
|
|
159
|
+
socket.notifyReady();
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
if (session.now().refusal !== null) {
|
|
163
|
+
session.set({ refusal: null });
|
|
164
|
+
emitRefusal(runtime);
|
|
165
|
+
}
|
|
166
|
+
const held = await local.facts();
|
|
167
|
+
if (JSON.stringify(result.providerLimits) !== JSON.stringify(held.providerLimits) ||
|
|
168
|
+
JSON.stringify(result.capabilities) !== JSON.stringify(held.capabilities)) {
|
|
169
|
+
await local.fact('providerLimits', result.providerLimits);
|
|
170
|
+
await local.fact('capabilities', result.capabilities);
|
|
171
|
+
}
|
|
172
|
+
socket.notifyReady();
|
|
173
|
+
await signIn(runtime, local, result.member ?? null);
|
|
174
|
+
return applyDiscovery(runtime, result.rooms, started);
|
|
175
|
+
}
|
package/dist/durability.d.ts
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
|
+
import type { Persistence } from './readiness.js';
|
|
2
|
+
export type UnsentKind = 'pending-change' | 'call' | 'room-draft' | 'chat-draft';
|
|
3
|
+
export type UnsentWork = {
|
|
4
|
+
readonly kind: UnsentKind;
|
|
5
|
+
readonly count: number;
|
|
6
|
+
};
|
|
7
|
+
export type AppCode = {
|
|
8
|
+
readonly running: number;
|
|
9
|
+
readonly older: number;
|
|
10
|
+
};
|
|
11
|
+
export type HeldCode = {
|
|
12
|
+
readonly house: number | null;
|
|
13
|
+
readonly apps: readonly string[];
|
|
14
|
+
};
|
|
1
15
|
export type RuntimeShell = {
|
|
2
|
-
|
|
16
|
+
persistence: Persistence;
|
|
3
17
|
generation: string | null;
|
|
4
18
|
keepGeneration(value: string): void | Promise<void>;
|
|
5
19
|
dropGeneration(): void | Promise<void>;
|
|
20
|
+
cleanUp?(): Promise<number>;
|
|
21
|
+
measure?(measured: (app: string, code: AppCode | null) => void): Promise<HeldCode>;
|
|
22
|
+
reset(): Promise<void>;
|
|
6
23
|
};
|
|
24
|
+
export declare function refusedForSpace(error: unknown): boolean;
|
|
7
25
|
export declare function detectStorageLoss(stored: string | null, reported: string | null): string | null;
|
|
8
26
|
export declare function nextGeneration(stored: string | null, reported: string | null): string;
|
|
9
27
|
//# sourceMappingURL=durability.d.ts.map
|
package/dist/durability.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durability.d.ts","sourceRoot":"","sources":["../src/durability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"durability.d.ts","sourceRoot":"","sources":["../src/durability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;AAEjF,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3F,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAG/F;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGrF"}
|
package/dist/durability.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
const STORAGE_LOSS_CODE = 'storage-loss';
|
|
2
|
+
export function refusedForSpace(error) {
|
|
3
|
+
return (typeof error === 'object' &&
|
|
4
|
+
error !== null &&
|
|
5
|
+
error.name === 'QuotaExceededError');
|
|
6
|
+
}
|
|
2
7
|
export function detectStorageLoss(stored, reported) {
|
|
3
8
|
if (reported === null || reported === stored)
|
|
4
9
|
return null;
|
package/dist/entry.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
|
|
1
|
+
import { type VerifiedModel } from '@agentshouse/mdmodel';
|
|
2
|
+
import { type QueryRows } from './query.js';
|
|
3
|
+
import type { Connection } from './tables.js';
|
|
4
|
+
export { QueryError } from '@agentshouse/mdmodel';
|
|
3
5
|
export type EntryRoom = {
|
|
4
6
|
locator: string;
|
|
5
7
|
schema: string | null;
|
|
6
8
|
documents: Readonly<Record<string, string>>;
|
|
9
|
+
revisions?: Readonly<Record<string, string>>;
|
|
7
10
|
};
|
|
8
11
|
export type EntryArguments = Readonly<Record<string, string>>;
|
|
9
12
|
export type EntryParameterKind = 'string' | 'integer' | 'number' | 'boolean';
|
|
@@ -11,7 +14,7 @@ export declare function boundQuery(template: unknown, args: EntryArguments): unk
|
|
|
11
14
|
export declare function entryParameters(template: unknown): readonly string[];
|
|
12
15
|
export declare function entryRefusal(template: unknown): string | null;
|
|
13
16
|
export type EntryScope = {
|
|
14
|
-
results(queries: Readonly<Record<string, unknown>>): Promise<Record<string,
|
|
17
|
+
results(queries: Readonly<Record<string, unknown>>): Promise<Record<string, QueryRows>>;
|
|
15
18
|
};
|
|
16
|
-
export declare function entryScope(rooms: readonly EntryRoom[]): EntryScope;
|
|
19
|
+
export declare function entryScope(rooms: readonly EntryRoom[], roomTypes: VerifiedModel, connection: Connection): EntryScope;
|
|
17
20
|
//# sourceMappingURL=entry.d.ts.map
|
package/dist/entry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AA0D7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAE3E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAMpE;AAyCD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7D;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACzF,CAAC;AAEF,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,UAAU,GACrB,UAAU,CAoDZ"}
|
package/dist/entry.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { invalid, plain, QueryError, } from '@agentshouse/mdmodel';
|
|
1
2
|
import { attachedModel } from './attached-model.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export { QueryError } from './query.js';
|
|
3
|
+
import { answerQuery } from './compile.js';
|
|
4
|
+
import { planWithin } from './query.js';
|
|
5
|
+
import { writtenFacts } from './rows.js';
|
|
6
|
+
import { entered, REPLICA_TABLES } from './stored.js';
|
|
7
|
+
export { QueryError } from '@agentshouse/mdmodel';
|
|
8
8
|
const PARAMETER = '$param';
|
|
9
9
|
const KIND = 'as';
|
|
10
10
|
const INTEGER = /^-?(?:0|[1-9][0-9]*)$/u;
|
|
@@ -84,6 +84,7 @@ const SAMPLED = {
|
|
|
84
84
|
$all: 'entry',
|
|
85
85
|
$size: 0,
|
|
86
86
|
$exists: true,
|
|
87
|
+
$prefix: 'entry',
|
|
87
88
|
$gt: 0,
|
|
88
89
|
$gte: 0,
|
|
89
90
|
$lt: 0,
|
|
@@ -99,9 +100,15 @@ function sampled(template, key) {
|
|
|
99
100
|
}
|
|
100
101
|
return template;
|
|
101
102
|
}
|
|
103
|
+
function entryPlan(query, facts) {
|
|
104
|
+
const plan = planWithin(query, facts);
|
|
105
|
+
if (plan.fileIds !== null)
|
|
106
|
+
invalid('fileIds', 'an entry Room holds no file IDs');
|
|
107
|
+
return plan;
|
|
108
|
+
}
|
|
102
109
|
export function entryRefusal(template) {
|
|
103
110
|
try {
|
|
104
|
-
|
|
111
|
+
entryPlan(sampled(template, ''), { listed: false, rooms: [] });
|
|
105
112
|
return null;
|
|
106
113
|
}
|
|
107
114
|
catch (error) {
|
|
@@ -110,45 +117,43 @@ export function entryRefusal(template) {
|
|
|
110
117
|
throw error;
|
|
111
118
|
}
|
|
112
119
|
}
|
|
113
|
-
export function entryScope(rooms) {
|
|
114
|
-
const
|
|
120
|
+
export function entryScope(rooms, roomTypes, connection) {
|
|
121
|
+
for (const table of REPLICA_TABLES)
|
|
122
|
+
connection.run(table);
|
|
115
123
|
const held = [];
|
|
116
|
-
const
|
|
124
|
+
const keys = rooms.map((room) => {
|
|
117
125
|
const model = attachedModel({
|
|
118
126
|
kind: 'model',
|
|
119
127
|
snapshot: { identity: room.locator, version: '', schema: room.schema, revision: null },
|
|
120
|
-
},
|
|
128
|
+
}, roomTypes);
|
|
121
129
|
held.push({
|
|
122
130
|
locator: room.locator,
|
|
123
131
|
available: model.status !== 'unavailable',
|
|
124
132
|
types: model.status === 'unavailable' ? [] : Object.values(model.types),
|
|
125
133
|
});
|
|
126
|
-
const composition = { model, selection: null };
|
|
127
|
-
const
|
|
128
|
-
return Object.keys(room.documents)
|
|
134
|
+
const composition = { model, selection: null, typedPaths: [] };
|
|
135
|
+
const key = entered(connection, room.locator, composition, Object.keys(room.documents)
|
|
129
136
|
.sort()
|
|
130
137
|
.map((path) => ({
|
|
131
|
-
locator: room.locator,
|
|
132
138
|
path,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
messages: [],
|
|
144
|
-
conversations: [],
|
|
139
|
+
content: room.documents[path],
|
|
140
|
+
facts: writtenFacts(path, room.documents[path], composition),
|
|
141
|
+
binary: null,
|
|
142
|
+
revision: room.revisions?.[path] ?? null,
|
|
143
|
+
fileId: null,
|
|
144
|
+
created: null,
|
|
145
|
+
change: null,
|
|
146
|
+
written: null,
|
|
147
|
+
})));
|
|
148
|
+
return { locator: room.locator, key };
|
|
145
149
|
});
|
|
146
150
|
const planned = { listed: true, rooms: held };
|
|
147
151
|
return {
|
|
148
152
|
async results(queries) {
|
|
149
153
|
const results = {};
|
|
150
154
|
for (const [name, query] of Object.entries(queries)) {
|
|
151
|
-
|
|
155
|
+
const plan = entryPlan(query, planned);
|
|
156
|
+
results[name] = answerQuery(connection, plan, keys.filter(({ locator }) => plan.rooms === null || plan.rooms.includes(locator)));
|
|
152
157
|
}
|
|
153
158
|
return results;
|
|
154
159
|
},
|
package/dist/expectation.d.ts
CHANGED
|
@@ -7,9 +7,11 @@ export type Expecting<E extends {
|
|
|
7
7
|
subscribe(listener: () => void): () => void;
|
|
8
8
|
version(): number;
|
|
9
9
|
begin(): number;
|
|
10
|
-
expect(act: number, expected: ExpectedOf<E
|
|
10
|
+
expect(act: number, expected: ExpectedOf<E>): void;
|
|
11
11
|
drop(act: number): void;
|
|
12
|
-
|
|
12
|
+
reads(reader: string, asks: (one: E) => boolean): void;
|
|
13
|
+
heard(reader: string, shown: (one: E) => boolean): void;
|
|
14
|
+
left(reader: string): void;
|
|
13
15
|
drawn(): readonly E[];
|
|
14
16
|
};
|
|
15
17
|
export declare function expectedList<E extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expectation.d.ts","sourceRoot":"","sources":["../src/expectation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AAErF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,IAAI;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,OAAO,IAAI,MAAM,CAAC;IAClB,KAAK,IAAI,MAAM,CAAC;IAChB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"expectation.d.ts","sourceRoot":"","sources":["../src/expectation.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AAErF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,IAAI;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,OAAO,IAAI,MAAM,CAAC;IAClB,KAAK,IAAI,MAAM,CAAC;IAChB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IACvD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC;CACvB,CAAC;AAQF,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAC7D,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GACtB,SAAS,CAAC,EAAE,CAGd;AAwBD,wBAAgB,SAAS,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAmE5E"}
|
package/dist/expectation.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const NONE = () => false;
|
|
1
2
|
export function expectedList(expected) {
|
|
2
3
|
if (expected === null)
|
|
3
4
|
return [];
|
|
@@ -13,7 +14,7 @@ function unended(entries, ends) {
|
|
|
13
14
|
for (const one of [...entries].reverse()) {
|
|
14
15
|
if (ended.has(one.expectation.key))
|
|
15
16
|
continue;
|
|
16
|
-
if (ends(one
|
|
17
|
+
if (ends(one))
|
|
17
18
|
ended.add(one.expectation.key);
|
|
18
19
|
else
|
|
19
20
|
kept.unshift(one);
|
|
@@ -24,6 +25,7 @@ export function expecting() {
|
|
|
24
25
|
let entries = [];
|
|
25
26
|
let version = 0;
|
|
26
27
|
let acts = 0;
|
|
28
|
+
const readers = new Map();
|
|
27
29
|
const listeners = new Set();
|
|
28
30
|
const set = (next) => {
|
|
29
31
|
if (next.length === entries.length && next.every((one, at) => one === entries[at]))
|
|
@@ -33,6 +35,19 @@ export function expecting() {
|
|
|
33
35
|
for (const listener of listeners)
|
|
34
36
|
listener();
|
|
35
37
|
};
|
|
38
|
+
const settle = (next) => {
|
|
39
|
+
for (const entry of next)
|
|
40
|
+
for (const [id, reader] of readers)
|
|
41
|
+
if (reader.asks(entry.expectation) && reader.shown(entry.expectation))
|
|
42
|
+
entry.seen.add(id);
|
|
43
|
+
set(unended(next, (entry) => {
|
|
44
|
+
const asking = [...readers].filter(([, reader]) => reader.asks(entry.expectation));
|
|
45
|
+
const seen = asking.filter(([id]) => entry.seen.has(id));
|
|
46
|
+
return (seen.length > 0 &&
|
|
47
|
+
(seen.length === asking.length ||
|
|
48
|
+
seen.some(([, reader]) => !reader.shown(entry.expectation))));
|
|
49
|
+
}));
|
|
50
|
+
};
|
|
36
51
|
return {
|
|
37
52
|
subscribe(listener) {
|
|
38
53
|
listeners.add(listener);
|
|
@@ -45,25 +60,32 @@ export function expecting() {
|
|
|
45
60
|
acts += 1;
|
|
46
61
|
return acts;
|
|
47
62
|
},
|
|
48
|
-
expect(act, expected
|
|
63
|
+
expect(act, expected) {
|
|
49
64
|
const fresh = expectedList(expected);
|
|
50
65
|
if (fresh.length === 0)
|
|
51
66
|
return;
|
|
52
67
|
const keys = new Set(fresh.map((one) => one.key));
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
...kept,
|
|
57
|
-
...fresh
|
|
58
|
-
.filter((one) => over.has(one.key) || !settled(one))
|
|
59
|
-
.map((expectation) => ({ act, expectation })),
|
|
68
|
+
settle([
|
|
69
|
+
...entries.filter((one) => one.act !== act || !keys.has(one.expectation.key)),
|
|
70
|
+
...fresh.map((expectation) => ({ act, expectation, seen: new Set() })),
|
|
60
71
|
]);
|
|
61
72
|
},
|
|
62
73
|
drop(act) {
|
|
63
74
|
set(entries.filter((one) => one.act !== act));
|
|
64
75
|
},
|
|
65
|
-
|
|
66
|
-
set(
|
|
76
|
+
reads(reader, asks) {
|
|
77
|
+
readers.set(reader, { asks, shown: readers.get(reader)?.shown ?? NONE });
|
|
78
|
+
settle(entries);
|
|
79
|
+
},
|
|
80
|
+
heard(reader, shown) {
|
|
81
|
+
readers.set(reader, { asks: readers.get(reader)?.asks ?? NONE, shown });
|
|
82
|
+
settle(entries);
|
|
83
|
+
},
|
|
84
|
+
left(reader) {
|
|
85
|
+
readers.delete(reader);
|
|
86
|
+
for (const entry of entries)
|
|
87
|
+
entry.seen.delete(reader);
|
|
88
|
+
settle(entries);
|
|
67
89
|
},
|
|
68
90
|
drawn: () => entries.flatMap((one, at) => (superseded(entries, at) ? [] : [one.expectation])),
|
|
69
91
|
};
|
package/dist/failure.d.ts
CHANGED
|
@@ -9,5 +9,6 @@ export type Described = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare function runtimeError(code: string, message?: string, retryable?: boolean): RuntimeError;
|
|
11
11
|
export declare function failed(error: unknown): RuntimeError;
|
|
12
|
+
export declare function uncaught(error: unknown): void;
|
|
12
13
|
export declare function described(error: unknown): Described;
|
|
13
14
|
//# sourceMappingURL=failure.d.ts.map
|
package/dist/failure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,EACtB,SAAS,UAAQ,GAChB,YAAY,CAEd;AAYD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAGnD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAGnD"}
|
|
1
|
+
{"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAa,EACtB,SAAS,UAAQ,GAChB,YAAY,CAEd;AAYD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAGnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAGnD"}
|
package/dist/failure.js
CHANGED
|
@@ -13,6 +13,9 @@ export function failed(error) {
|
|
|
13
13
|
return error;
|
|
14
14
|
return runtimeError('runtime-failure', error instanceof Error ? error.message : String(error));
|
|
15
15
|
}
|
|
16
|
+
export function uncaught(error) {
|
|
17
|
+
reportError(error);
|
|
18
|
+
}
|
|
16
19
|
export function described(error) {
|
|
17
20
|
const { message, code, retryable } = failed(error);
|
|
18
21
|
return { message, code, retryable };
|