@agentshouse/mdruntime 0.1.0-alpha.3 → 0.1.0-alpha.31
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/AGENTS.md +178 -0
- package/dist/adapter.d.ts +150 -18
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +2 -1
- package/dist/adapter.js.map +1 -1
- package/dist/bootstrap.d.ts +7 -7
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +13 -9
- package/dist/bootstrap.js.map +1 -1
- package/dist/change-set.d.ts +33 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/change-set.js +89 -0
- package/dist/change-set.js.map +1 -0
- package/dist/change.d.ts +10 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js.map +1 -1
- package/dist/client.d.ts +72 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +231 -0
- package/dist/client.js.map +1 -0
- package/dist/collection.d.ts +22 -12
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +88 -30
- package/dist/collection.js.map +1 -1
- package/dist/connection.d.ts +90 -20
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1776 -194
- package/dist/connection.js.map +1 -1
- package/dist/conversation.d.ts +72 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +529 -0
- package/dist/conversation.js.map +1 -0
- package/dist/durability.d.ts +9 -0
- package/dist/durability.d.ts.map +1 -0
- package/dist/durability.js +11 -0
- package/dist/durability.js.map +1 -0
- package/dist/file.d.ts +20 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +149 -0
- package/dist/file.js.map +1 -0
- package/dist/host.d.ts +13 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +205 -0
- package/dist/host.js.map +1 -0
- package/dist/identity.d.ts +3 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +23 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +15 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts +5 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +15 -0
- package/dist/log.js.map +1 -0
- package/dist/memory.d.ts +17 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +201 -15
- package/dist/memory.js.map +1 -1
- package/dist/model.d.ts +56 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +37 -0
- package/dist/model.js.map +1 -0
- package/dist/observation.d.ts +25 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/observation.js +92 -0
- package/dist/observation.js.map +1 -0
- package/dist/outcome.d.ts +34 -0
- package/dist/outcome.d.ts.map +1 -0
- package/dist/outcome.js +3 -0
- package/dist/outcome.js.map +1 -0
- package/dist/overlay.d.ts +2 -0
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +107 -1
- package/dist/overlay.js.map +1 -1
- package/dist/paths.d.ts +0 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +0 -4
- package/dist/paths.js.map +1 -1
- package/dist/query.d.ts +209 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +467 -0
- package/dist/query.js.map +1 -0
- package/dist/read-side.d.ts +14 -0
- package/dist/read-side.d.ts.map +1 -0
- package/dist/read-side.js +451 -0
- package/dist/read-side.js.map +1 -0
- package/dist/refresh.d.ts +2 -2
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +8 -6
- package/dist/refresh.js.map +1 -1
- package/dist/replica.d.ts +22 -3
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +170 -8
- package/dist/replica.js.map +1 -1
- package/dist/room-draft.d.ts +124 -0
- package/dist/room-draft.d.ts.map +1 -0
- package/dist/room-draft.js +406 -0
- package/dist/room-draft.js.map +1 -0
- package/dist/rows.d.ts +39 -0
- package/dist/rows.d.ts.map +1 -0
- package/dist/rows.js +100 -0
- package/dist/rows.js.map +1 -0
- package/dist/save.d.ts +11 -2
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +104 -128
- package/dist/save.js.map +1 -1
- package/dist/search.d.ts +61 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +155 -0
- package/dist/search.js.map +1 -0
- package/dist/status.d.ts +9 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +7 -4
- package/dist/status.js.map +1 -1
- package/dist/store.d.ts +87 -15
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +436 -54
- package/dist/store.js.map +1 -1
- package/dist/transfer.d.ts +5 -0
- package/dist/transfer.d.ts.map +1 -1
- package/dist/transfer.js.map +1 -1
- package/dist/wire.d.ts +64 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +142 -0
- package/dist/wire.js.map +1 -0
- package/package.json +14 -4
package/dist/file.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
const PNG_SIGNATURE = [
|
|
2
|
+
0x89,
|
|
3
|
+
0x50,
|
|
4
|
+
0x4e,
|
|
5
|
+
0x47,
|
|
6
|
+
0x0d,
|
|
7
|
+
0x0a,
|
|
8
|
+
0x1a,
|
|
9
|
+
0x0a
|
|
10
|
+
];
|
|
11
|
+
const WEBP_SYNC = [
|
|
12
|
+
0x9d,
|
|
13
|
+
0x01,
|
|
14
|
+
0x2a
|
|
15
|
+
];
|
|
16
|
+
const SHAPELESS_JPEG_MARKERS = new Set([
|
|
17
|
+
0xc4,
|
|
18
|
+
0xc8,
|
|
19
|
+
0xcc
|
|
20
|
+
]);
|
|
21
|
+
const BMFF_CONTAINERS = new Set([
|
|
22
|
+
'meta',
|
|
23
|
+
'iprp',
|
|
24
|
+
'ipco'
|
|
25
|
+
]);
|
|
26
|
+
function starts(bytes, signature, at = 0) {
|
|
27
|
+
return signature.every((value, index)=>bytes[at + index] === value);
|
|
28
|
+
}
|
|
29
|
+
function text(bytes, at, length) {
|
|
30
|
+
return String.fromCharCode(...bytes.subarray(at, at + length));
|
|
31
|
+
}
|
|
32
|
+
function bigEndian(bytes, at, length) {
|
|
33
|
+
let value = 0;
|
|
34
|
+
for(let index = 0; index < length; index += 1)value = value * 256 + (bytes[at + index] ?? 0);
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
function littleEndian(bytes, at, length) {
|
|
38
|
+
let value = 0;
|
|
39
|
+
for(let index = length - 1; index >= 0; index -= 1)value = value * 256 + (bytes[at + index] ?? 0);
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
function pngExtent(bytes) {
|
|
43
|
+
if (bytes.length < 24 || !starts(bytes, PNG_SIGNATURE)) return null;
|
|
44
|
+
if (text(bytes, 12, 4) !== 'IHDR') return null;
|
|
45
|
+
return {
|
|
46
|
+
width: bigEndian(bytes, 16, 4),
|
|
47
|
+
height: bigEndian(bytes, 20, 4)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function gifExtent(bytes) {
|
|
51
|
+
if (bytes.length < 10 || text(bytes, 0, 3) !== 'GIF') return null;
|
|
52
|
+
return {
|
|
53
|
+
width: littleEndian(bytes, 6, 2),
|
|
54
|
+
height: littleEndian(bytes, 8, 2)
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function jpegExtent(bytes) {
|
|
58
|
+
if (bytes.length < 4 || bytes[0] !== 0xff || bytes[1] !== 0xd8) return null;
|
|
59
|
+
let at = 2;
|
|
60
|
+
while(at + 9 < bytes.length){
|
|
61
|
+
if (bytes[at] !== 0xff) return null;
|
|
62
|
+
const marker = bytes[at + 1] ?? 0;
|
|
63
|
+
if (marker === 0xd8 || marker === 0x01 || marker >= 0xd0 && marker <= 0xd7) {
|
|
64
|
+
at += 2;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const length = bigEndian(bytes, at + 2, 2);
|
|
68
|
+
if (marker >= 0xc0 && marker <= 0xcf && !SHAPELESS_JPEG_MARKERS.has(marker)) {
|
|
69
|
+
return {
|
|
70
|
+
width: bigEndian(bytes, at + 7, 2),
|
|
71
|
+
height: bigEndian(bytes, at + 5, 2)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (length < 2) return null;
|
|
75
|
+
at += 2 + length;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
function webpExtent(bytes) {
|
|
80
|
+
if (bytes.length < 30 || text(bytes, 0, 4) !== 'RIFF' || text(bytes, 8, 4) !== 'WEBP') return null;
|
|
81
|
+
const chunk = text(bytes, 12, 4);
|
|
82
|
+
if (chunk === 'VP8X') {
|
|
83
|
+
return {
|
|
84
|
+
width: littleEndian(bytes, 24, 3) + 1,
|
|
85
|
+
height: littleEndian(bytes, 27, 3) + 1
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
if (chunk === 'VP8 ' && starts(bytes, WEBP_SYNC, 23)) {
|
|
89
|
+
return {
|
|
90
|
+
width: littleEndian(bytes, 26, 2) & 0x3fff,
|
|
91
|
+
height: littleEndian(bytes, 28, 2) & 0x3fff
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (chunk === 'VP8L' && bytes[20] === 0x2f) {
|
|
95
|
+
const packed = littleEndian(bytes, 21, 4);
|
|
96
|
+
return {
|
|
97
|
+
width: (packed & 0x3fff) + 1,
|
|
98
|
+
height: (packed >>> 14 & 0x3fff) + 1
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
function spatialExtent(bytes, from, to) {
|
|
104
|
+
let at = from;
|
|
105
|
+
while(at + 8 <= to){
|
|
106
|
+
const size = bigEndian(bytes, at, 4);
|
|
107
|
+
const name = text(bytes, at + 4, 4);
|
|
108
|
+
const end = size === 0 ? to : at + size;
|
|
109
|
+
if (size === 1 || end <= at || end > to) return null;
|
|
110
|
+
if (name === 'ispe') {
|
|
111
|
+
if (end < at + 20) return null;
|
|
112
|
+
return {
|
|
113
|
+
width: bigEndian(bytes, at + 12, 4),
|
|
114
|
+
height: bigEndian(bytes, at + 16, 4)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (BMFF_CONTAINERS.has(name)) {
|
|
118
|
+
const inner = spatialExtent(bytes, at + (name === 'meta' ? 12 : 8), end);
|
|
119
|
+
if (inner !== null) return inner;
|
|
120
|
+
}
|
|
121
|
+
at = end;
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
function bmffExtent(bytes) {
|
|
126
|
+
if (bytes.length < 16 || text(bytes, 4, 4) !== 'ftyp') return null;
|
|
127
|
+
return spatialExtent(bytes, 0, bytes.length);
|
|
128
|
+
}
|
|
129
|
+
export function extentOf(bytes) {
|
|
130
|
+
return pngExtent(bytes) ?? jpegExtent(bytes) ?? gifExtent(bytes) ?? webpExtent(bytes) ?? bmffExtent(bytes);
|
|
131
|
+
}
|
|
132
|
+
export function hexDigest(digest) {
|
|
133
|
+
return [
|
|
134
|
+
...new Uint8Array(digest)
|
|
135
|
+
].map((value)=>value.toString(16).padStart(2, '0')).join('');
|
|
136
|
+
}
|
|
137
|
+
export async function declaredFile(file) {
|
|
138
|
+
const bytes = new Uint8Array(await file.blob.arrayBuffer());
|
|
139
|
+
const extent = file.blob.type.startsWith('image/') ? extentOf(bytes) : null;
|
|
140
|
+
return {
|
|
141
|
+
name: file.name,
|
|
142
|
+
mediaType: file.blob.type,
|
|
143
|
+
byteLength: bytes.byteLength,
|
|
144
|
+
contentHash: hexDigest(await crypto.subtle.digest('SHA-256', bytes)),
|
|
145
|
+
...extent === null ? {} : extent
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
//# sourceMappingURL=file.js.map
|
package/dist/file.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/file.ts"],"sourcesContent":["export type ChatDraftFile = {\n name: string;\n blob: Blob;\n};\n\nexport type FileDeclaration = {\n name: string;\n mediaType: string;\n byteLength: number;\n contentHash: string;\n width?: number;\n height?: number;\n};\n\nexport type Extent = { width: number; height: number };\n\nconst PNG_SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];\nconst WEBP_SYNC = [0x9d, 0x01, 0x2a];\nconst SHAPELESS_JPEG_MARKERS = new Set([0xc4, 0xc8, 0xcc]);\nconst BMFF_CONTAINERS = new Set(['meta', 'iprp', 'ipco']);\n\nfunction starts(bytes: Uint8Array, signature: readonly number[], at = 0): boolean {\n return signature.every((value, index) => bytes[at + index] === value);\n}\n\nfunction text(bytes: Uint8Array, at: number, length: number): string {\n return String.fromCharCode(...bytes.subarray(at, at + length));\n}\n\nfunction bigEndian(bytes: Uint8Array, at: number, length: number): number {\n let value = 0;\n for (let index = 0; index < length; index += 1) value = value * 256 + (bytes[at + index] ?? 0);\n return value;\n}\n\nfunction littleEndian(bytes: Uint8Array, at: number, length: number): number {\n let value = 0;\n for (let index = length - 1; index >= 0; index -= 1)\n value = value * 256 + (bytes[at + index] ?? 0);\n return value;\n}\n\nfunction pngExtent(bytes: Uint8Array): Extent | null {\n if (bytes.length < 24 || !starts(bytes, PNG_SIGNATURE)) return null;\n if (text(bytes, 12, 4) !== 'IHDR') return null;\n return { width: bigEndian(bytes, 16, 4), height: bigEndian(bytes, 20, 4) };\n}\n\nfunction gifExtent(bytes: Uint8Array): Extent | null {\n if (bytes.length < 10 || text(bytes, 0, 3) !== 'GIF') return null;\n return { width: littleEndian(bytes, 6, 2), height: littleEndian(bytes, 8, 2) };\n}\n\nfunction jpegExtent(bytes: Uint8Array): Extent | null {\n if (bytes.length < 4 || bytes[0] !== 0xff || bytes[1] !== 0xd8) return null;\n let at = 2;\n while (at + 9 < bytes.length) {\n if (bytes[at] !== 0xff) return null;\n const marker = bytes[at + 1] ?? 0;\n if (marker === 0xd8 || marker === 0x01 || (marker >= 0xd0 && marker <= 0xd7)) {\n at += 2;\n continue;\n }\n const length = bigEndian(bytes, at + 2, 2);\n if (marker >= 0xc0 && marker <= 0xcf && !SHAPELESS_JPEG_MARKERS.has(marker)) {\n return { width: bigEndian(bytes, at + 7, 2), height: bigEndian(bytes, at + 5, 2) };\n }\n if (length < 2) return null;\n at += 2 + length;\n }\n return null;\n}\n\nfunction webpExtent(bytes: Uint8Array): Extent | null {\n if (bytes.length < 30 || text(bytes, 0, 4) !== 'RIFF' || text(bytes, 8, 4) !== 'WEBP')\n return null;\n const chunk = text(bytes, 12, 4);\n if (chunk === 'VP8X') {\n return {\n width: littleEndian(bytes, 24, 3) + 1,\n height: littleEndian(bytes, 27, 3) + 1,\n };\n }\n if (chunk === 'VP8 ' && starts(bytes, WEBP_SYNC, 23)) {\n return {\n width: littleEndian(bytes, 26, 2) & 0x3fff,\n height: littleEndian(bytes, 28, 2) & 0x3fff,\n };\n }\n if (chunk === 'VP8L' && bytes[20] === 0x2f) {\n const packed = littleEndian(bytes, 21, 4);\n return { width: (packed & 0x3fff) + 1, height: ((packed >>> 14) & 0x3fff) + 1 };\n }\n return null;\n}\n\nfunction spatialExtent(bytes: Uint8Array, from: number, to: number): Extent | null {\n let at = from;\n while (at + 8 <= to) {\n const size = bigEndian(bytes, at, 4);\n const name = text(bytes, at + 4, 4);\n const end = size === 0 ? to : at + size;\n if (size === 1 || end <= at || end > to) return null;\n if (name === 'ispe') {\n if (end < at + 20) return null;\n return { width: bigEndian(bytes, at + 12, 4), height: bigEndian(bytes, at + 16, 4) };\n }\n if (BMFF_CONTAINERS.has(name)) {\n const inner = spatialExtent(bytes, at + (name === 'meta' ? 12 : 8), end);\n if (inner !== null) return inner;\n }\n at = end;\n }\n return null;\n}\n\nfunction bmffExtent(bytes: Uint8Array): Extent | null {\n if (bytes.length < 16 || text(bytes, 4, 4) !== 'ftyp') return null;\n return spatialExtent(bytes, 0, bytes.length);\n}\n\nexport function extentOf(bytes: Uint8Array): Extent | null {\n return (\n pngExtent(bytes) ??\n jpegExtent(bytes) ??\n gifExtent(bytes) ??\n webpExtent(bytes) ??\n bmffExtent(bytes)\n );\n}\n\nexport function hexDigest(digest: ArrayBuffer): string {\n return [...new Uint8Array(digest)].map((value) => value.toString(16).padStart(2, '0')).join('');\n}\n\nexport async function declaredFile(file: ChatDraftFile): Promise<FileDeclaration> {\n const bytes = new Uint8Array(await file.blob.arrayBuffer());\n const extent = file.blob.type.startsWith('image/') ? extentOf(bytes) : null;\n return {\n name: file.name,\n mediaType: file.blob.type,\n byteLength: bytes.byteLength,\n contentHash: hexDigest(await crypto.subtle.digest('SHA-256', bytes)),\n ...(extent === null ? {} : extent),\n };\n}\n"],"names":["PNG_SIGNATURE","WEBP_SYNC","SHAPELESS_JPEG_MARKERS","Set","BMFF_CONTAINERS","starts","bytes","signature","at","every","value","index","text","length","String","fromCharCode","subarray","bigEndian","littleEndian","pngExtent","width","height","gifExtent","jpegExtent","marker","has","webpExtent","chunk","packed","spatialExtent","from","to","size","name","end","inner","bmffExtent","extentOf","hexDigest","digest","Uint8Array","map","toString","padStart","join","declaredFile","file","blob","arrayBuffer","extent","type","startsWith","mediaType","byteLength","contentHash","crypto","subtle"],"mappings":"AAgBA,MAAMA,gBAAgB;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;IAAM;IAAM;CAAK;AACtE,MAAMC,YAAY;IAAC;IAAM;IAAM;CAAK;AACpC,MAAMC,yBAAyB,IAAIC,IAAI;IAAC;IAAM;IAAM;CAAK;AACzD,MAAMC,kBAAkB,IAAID,IAAI;IAAC;IAAQ;IAAQ;CAAO;AAExD,SAASE,OAAOC,KAAiB,EAAEC,SAA4B,EAAEC,KAAK,CAAC;IACrE,OAAOD,UAAUE,KAAK,CAAC,CAACC,OAAOC,QAAUL,KAAK,CAACE,KAAKG,MAAM,KAAKD;AACjE;AAEA,SAASE,KAAKN,KAAiB,EAAEE,EAAU,EAAEK,MAAc;IACzD,OAAOC,OAAOC,YAAY,IAAIT,MAAMU,QAAQ,CAACR,IAAIA,KAAKK;AACxD;AAEA,SAASI,UAAUX,KAAiB,EAAEE,EAAU,EAAEK,MAAc;IAC9D,IAAIH,QAAQ;IACZ,IAAK,IAAIC,QAAQ,GAAGA,QAAQE,QAAQF,SAAS,EAAGD,QAAQA,QAAQ,MAAOJ,CAAAA,KAAK,CAACE,KAAKG,MAAM,IAAI,CAAA;IAC5F,OAAOD;AACT;AAEA,SAASQ,aAAaZ,KAAiB,EAAEE,EAAU,EAAEK,MAAc;IACjE,IAAIH,QAAQ;IACZ,IAAK,IAAIC,QAAQE,SAAS,GAAGF,SAAS,GAAGA,SAAS,EAChDD,QAAQA,QAAQ,MAAOJ,CAAAA,KAAK,CAACE,KAAKG,MAAM,IAAI,CAAA;IAC9C,OAAOD;AACT;AAEA,SAASS,UAAUb,KAAiB;IAClC,IAAIA,MAAMO,MAAM,GAAG,MAAM,CAACR,OAAOC,OAAON,gBAAgB,OAAO;IAC/D,IAAIY,KAAKN,OAAO,IAAI,OAAO,QAAQ,OAAO;IAC1C,OAAO;QAAEc,OAAOH,UAAUX,OAAO,IAAI;QAAIe,QAAQJ,UAAUX,OAAO,IAAI;IAAG;AAC3E;AAEA,SAASgB,UAAUhB,KAAiB;IAClC,IAAIA,MAAMO,MAAM,GAAG,MAAMD,KAAKN,OAAO,GAAG,OAAO,OAAO,OAAO;IAC7D,OAAO;QAAEc,OAAOF,aAAaZ,OAAO,GAAG;QAAIe,QAAQH,aAAaZ,OAAO,GAAG;IAAG;AAC/E;AAEA,SAASiB,WAAWjB,KAAiB;IACnC,IAAIA,MAAMO,MAAM,GAAG,KAAKP,KAAK,CAAC,EAAE,KAAK,QAAQA,KAAK,CAAC,EAAE,KAAK,MAAM,OAAO;IACvE,IAAIE,KAAK;IACT,MAAOA,KAAK,IAAIF,MAAMO,MAAM,CAAE;QAC5B,IAAIP,KAAK,CAACE,GAAG,KAAK,MAAM,OAAO;QAC/B,MAAMgB,SAASlB,KAAK,CAACE,KAAK,EAAE,IAAI;QAChC,IAAIgB,WAAW,QAAQA,WAAW,QAASA,UAAU,QAAQA,UAAU,MAAO;YAC5EhB,MAAM;YACN;QACF;QACA,MAAMK,SAASI,UAAUX,OAAOE,KAAK,GAAG;QACxC,IAAIgB,UAAU,QAAQA,UAAU,QAAQ,CAACtB,uBAAuBuB,GAAG,CAACD,SAAS;YAC3E,OAAO;gBAAEJ,OAAOH,UAAUX,OAAOE,KAAK,GAAG;gBAAIa,QAAQJ,UAAUX,OAAOE,KAAK,GAAG;YAAG;QACnF;QACA,IAAIK,SAAS,GAAG,OAAO;QACvBL,MAAM,IAAIK;IACZ;IACA,OAAO;AACT;AAEA,SAASa,WAAWpB,KAAiB;IACnC,IAAIA,MAAMO,MAAM,GAAG,MAAMD,KAAKN,OAAO,GAAG,OAAO,UAAUM,KAAKN,OAAO,GAAG,OAAO,QAC7E,OAAO;IACT,MAAMqB,QAAQf,KAAKN,OAAO,IAAI;IAC9B,IAAIqB,UAAU,QAAQ;QACpB,OAAO;YACLP,OAAOF,aAAaZ,OAAO,IAAI,KAAK;YACpCe,QAAQH,aAAaZ,OAAO,IAAI,KAAK;QACvC;IACF;IACA,IAAIqB,UAAU,UAAUtB,OAAOC,OAAOL,WAAW,KAAK;QACpD,OAAO;YACLmB,OAAOF,aAAaZ,OAAO,IAAI,KAAK;YACpCe,QAAQH,aAAaZ,OAAO,IAAI,KAAK;QACvC;IACF;IACA,IAAIqB,UAAU,UAAUrB,KAAK,CAAC,GAAG,KAAK,MAAM;QAC1C,MAAMsB,SAASV,aAAaZ,OAAO,IAAI;QACvC,OAAO;YAAEc,OAAO,AAACQ,CAAAA,SAAS,MAAK,IAAK;YAAGP,QAAQ,AAAC,CAAA,AAACO,WAAW,KAAM,MAAK,IAAK;QAAE;IAChF;IACA,OAAO;AACT;AAEA,SAASC,cAAcvB,KAAiB,EAAEwB,IAAY,EAAEC,EAAU;IAChE,IAAIvB,KAAKsB;IACT,MAAOtB,KAAK,KAAKuB,GAAI;QACnB,MAAMC,OAAOf,UAAUX,OAAOE,IAAI;QAClC,MAAMyB,OAAOrB,KAAKN,OAAOE,KAAK,GAAG;QACjC,MAAM0B,MAAMF,SAAS,IAAID,KAAKvB,KAAKwB;QACnC,IAAIA,SAAS,KAAKE,OAAO1B,MAAM0B,MAAMH,IAAI,OAAO;QAChD,IAAIE,SAAS,QAAQ;YACnB,IAAIC,MAAM1B,KAAK,IAAI,OAAO;YAC1B,OAAO;gBAAEY,OAAOH,UAAUX,OAAOE,KAAK,IAAI;gBAAIa,QAAQJ,UAAUX,OAAOE,KAAK,IAAI;YAAG;QACrF;QACA,IAAIJ,gBAAgBqB,GAAG,CAACQ,OAAO;YAC7B,MAAME,QAAQN,cAAcvB,OAAOE,KAAMyB,CAAAA,SAAS,SAAS,KAAK,CAAA,GAAIC;YACpE,IAAIC,UAAU,MAAM,OAAOA;QAC7B;QACA3B,KAAK0B;IACP;IACA,OAAO;AACT;AAEA,SAASE,WAAW9B,KAAiB;IACnC,IAAIA,MAAMO,MAAM,GAAG,MAAMD,KAAKN,OAAO,GAAG,OAAO,QAAQ,OAAO;IAC9D,OAAOuB,cAAcvB,OAAO,GAAGA,MAAMO,MAAM;AAC7C;AAEA,OAAO,SAASwB,SAAS/B,KAAiB;IACxC,OACEa,UAAUb,UACViB,WAAWjB,UACXgB,UAAUhB,UACVoB,WAAWpB,UACX8B,WAAW9B;AAEf;AAEA,OAAO,SAASgC,UAAUC,MAAmB;IAC3C,OAAO;WAAI,IAAIC,WAAWD;KAAQ,CAACE,GAAG,CAAC,CAAC/B,QAAUA,MAAMgC,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG,MAAMC,IAAI,CAAC;AAC9F;AAEA,OAAO,eAAeC,aAAaC,IAAmB;IACpD,MAAMxC,QAAQ,IAAIkC,WAAW,MAAMM,KAAKC,IAAI,CAACC,WAAW;IACxD,MAAMC,SAASH,KAAKC,IAAI,CAACG,IAAI,CAACC,UAAU,CAAC,YAAYd,SAAS/B,SAAS;IACvE,OAAO;QACL2B,MAAMa,KAAKb,IAAI;QACfmB,WAAWN,KAAKC,IAAI,CAACG,IAAI;QACzBG,YAAY/C,MAAM+C,UAAU;QAC5BC,aAAahB,UAAU,MAAMiB,OAAOC,MAAM,CAACjB,MAAM,CAAC,WAAWjC;QAC7D,GAAI2C,WAAW,OAAO,CAAC,IAAIA,MAAM;IACnC;AACF"}
|
package/dist/host.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type MdRuntimeOptions } from './connection.js';
|
|
2
|
+
import { type RuntimePort } from './wire.js';
|
|
3
|
+
export type MdRuntimeHostOptions = MdRuntimeOptions & {
|
|
4
|
+
deploymentFacts?: unknown;
|
|
5
|
+
};
|
|
6
|
+
export type MdRuntimeHost = {
|
|
7
|
+
replaceDeploymentFacts(value: unknown): void;
|
|
8
|
+
attach(port: RuntimePort, app: string, release?: string): () => void;
|
|
9
|
+
endAuthorization(): Promise<void>;
|
|
10
|
+
};
|
|
11
|
+
export declare function serveMdRuntime(options: MdRuntimeHostOptions): MdRuntimeHost;
|
|
12
|
+
export type { RuntimePort } from './wire.js';
|
|
13
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAML,KAAK,WAAW,EAIjB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,aAAa,GAAG;IAC1B,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IACrE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC,CAAC;AAmFF,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAoH3E;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/host.js
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { composeRuntime } from './connection.js';
|
|
2
|
+
import { removeRuntimeStore } from './store.js';
|
|
3
|
+
import { AUTHORIZATION_ENDED, carried, envelope, PROTOCOL_MISMATCH, request } from './wire.js';
|
|
4
|
+
function answered(md, app, writtenBy, member, input, deploymentFacts) {
|
|
5
|
+
switch(member){
|
|
6
|
+
case 'rooms':
|
|
7
|
+
return md.rooms();
|
|
8
|
+
case 'slots':
|
|
9
|
+
return md.slots();
|
|
10
|
+
case 'query':
|
|
11
|
+
return md.query(input[0]);
|
|
12
|
+
case 'search':
|
|
13
|
+
return md.search(input[0]);
|
|
14
|
+
case 'types':
|
|
15
|
+
return md.types(input[0]);
|
|
16
|
+
case 'syncStatus':
|
|
17
|
+
return md.syncStatus();
|
|
18
|
+
case 'save':
|
|
19
|
+
return md.save(input[0], input[1], writtenBy);
|
|
20
|
+
case 'outcome':
|
|
21
|
+
return md.outcome(input[0]);
|
|
22
|
+
case 'history':
|
|
23
|
+
return md.history(input[0], input[1], input[2]);
|
|
24
|
+
case 'call':
|
|
25
|
+
return md.call(input[0], input[1]);
|
|
26
|
+
case 'log':
|
|
27
|
+
return md.log();
|
|
28
|
+
case 'storageLoss':
|
|
29
|
+
return md.storageLoss();
|
|
30
|
+
case 'deploymentFacts':
|
|
31
|
+
return structuredClone(deploymentFacts);
|
|
32
|
+
case 'persistence':
|
|
33
|
+
return md.persistence();
|
|
34
|
+
case 'reauthorize':
|
|
35
|
+
return md.reauthorize();
|
|
36
|
+
case 'roomDraft.list':
|
|
37
|
+
return md.roomDraft.list();
|
|
38
|
+
case 'roomDraft.read':
|
|
39
|
+
return md.roomDraft.read(input[0], input[1]);
|
|
40
|
+
case 'roomDraft.write':
|
|
41
|
+
return md.roomDraft.write(input[0], input[1], input[2], input[3]);
|
|
42
|
+
case 'roomDraft.discard':
|
|
43
|
+
return md.roomDraft.discard(input[0], input[1], input[2]);
|
|
44
|
+
case 'presentation.read':
|
|
45
|
+
return md.presentation.read(app);
|
|
46
|
+
case 'presentation.write':
|
|
47
|
+
return md.presentation.write(app, input[0]);
|
|
48
|
+
case 'conversation.list':
|
|
49
|
+
return md.conversation.list();
|
|
50
|
+
case 'conversation.read':
|
|
51
|
+
return md.conversation.read(input[0], input[1]);
|
|
52
|
+
case 'conversation.create':
|
|
53
|
+
return md.conversation.create(input[0]);
|
|
54
|
+
case 'conversation.send':
|
|
55
|
+
return md.conversation.send(input[0]);
|
|
56
|
+
case 'conversation.answer':
|
|
57
|
+
return md.conversation.answer(input[0], input[1]);
|
|
58
|
+
case 'conversation.interrupt':
|
|
59
|
+
return md.conversation.interrupt(input[0]);
|
|
60
|
+
case 'conversation.kill':
|
|
61
|
+
return md.conversation.kill(input[0]);
|
|
62
|
+
case 'conversation.cancel':
|
|
63
|
+
return md.conversation.cancel(input[0], input[1]);
|
|
64
|
+
case 'conversation.delete':
|
|
65
|
+
return md.conversation.delete(input[0]);
|
|
66
|
+
case 'chatDraft.write':
|
|
67
|
+
return md.chatDraft.write(input[0], input[1]);
|
|
68
|
+
case 'chatDraft.discard':
|
|
69
|
+
return md.chatDraft.discard(input[0]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export function serveMdRuntime(options) {
|
|
73
|
+
let deploymentFacts = structuredClone(options.deploymentFacts);
|
|
74
|
+
const stopping = new AbortController();
|
|
75
|
+
const stop = ()=>{
|
|
76
|
+
stopping.abort();
|
|
77
|
+
};
|
|
78
|
+
options.signal?.addEventListener('abort', stop, {
|
|
79
|
+
once: true
|
|
80
|
+
});
|
|
81
|
+
if (options.signal?.aborted === true) stop();
|
|
82
|
+
const { md, watch } = composeRuntime({
|
|
83
|
+
...options,
|
|
84
|
+
signal: stopping.signal
|
|
85
|
+
});
|
|
86
|
+
const attachments = new Map();
|
|
87
|
+
let authorized = true;
|
|
88
|
+
const factsObservers = new Set();
|
|
89
|
+
const watchFacts = (deliver)=>{
|
|
90
|
+
factsObservers.add(deliver);
|
|
91
|
+
deliver(structuredClone(deploymentFacts));
|
|
92
|
+
return ()=>{
|
|
93
|
+
factsObservers.delete(deliver);
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
function attach(port, app, release) {
|
|
97
|
+
if (!authorized) throw new Error(AUTHORIZATION_ENDED);
|
|
98
|
+
const writtenBy = release === undefined ? undefined : {
|
|
99
|
+
app,
|
|
100
|
+
release
|
|
101
|
+
};
|
|
102
|
+
const subscriptions = new Map();
|
|
103
|
+
let serving = true;
|
|
104
|
+
const send = (message)=>{
|
|
105
|
+
port.postMessage(envelope(message));
|
|
106
|
+
};
|
|
107
|
+
const detach = ()=>{
|
|
108
|
+
if (!serving) return;
|
|
109
|
+
serving = false;
|
|
110
|
+
for (const end of subscriptions.values())end();
|
|
111
|
+
subscriptions.clear();
|
|
112
|
+
attachments.delete(detach);
|
|
113
|
+
};
|
|
114
|
+
const serve = async (message)=>{
|
|
115
|
+
if (message.kind === 'hello') return;
|
|
116
|
+
if (message.kind === 'stop') {
|
|
117
|
+
subscriptions.get(message.id)?.();
|
|
118
|
+
subscriptions.delete(message.id);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
if (message.kind !== 'observe' || message.topic !== 'room-drafts') await md.loaded();
|
|
123
|
+
if (message.kind === 'observe') {
|
|
124
|
+
const { id, topic } = message;
|
|
125
|
+
let resolved = false;
|
|
126
|
+
const deliver = (value)=>{
|
|
127
|
+
if (!serving) return;
|
|
128
|
+
send(resolved ? {
|
|
129
|
+
kind: 'event',
|
|
130
|
+
id,
|
|
131
|
+
value
|
|
132
|
+
} : {
|
|
133
|
+
kind: 'result',
|
|
134
|
+
id,
|
|
135
|
+
value
|
|
136
|
+
});
|
|
137
|
+
resolved = true;
|
|
138
|
+
};
|
|
139
|
+
subscriptions.set(id, topic === 'deployment-facts' ? watchFacts(deliver) : watch(topic, topic === 'presentation' ? [
|
|
140
|
+
app
|
|
141
|
+
] : message.input, deliver));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const value = await answered(md, app, writtenBy, message.member, message.input, deploymentFacts);
|
|
145
|
+
if (serving) send({
|
|
146
|
+
kind: 'result',
|
|
147
|
+
id: message.id,
|
|
148
|
+
value
|
|
149
|
+
});
|
|
150
|
+
} catch (error) {
|
|
151
|
+
if (serving) {
|
|
152
|
+
send({
|
|
153
|
+
kind: 'failure',
|
|
154
|
+
id: message.id,
|
|
155
|
+
message: error instanceof Error ? error.message : String(error)
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
port.addEventListener('message', (event)=>{
|
|
161
|
+
if (!serving) return;
|
|
162
|
+
const wire = carried(event.data);
|
|
163
|
+
if (wire === null) return;
|
|
164
|
+
if (!wire.matching) {
|
|
165
|
+
send({
|
|
166
|
+
kind: 'refusal',
|
|
167
|
+
refusal: PROTOCOL_MISMATCH
|
|
168
|
+
});
|
|
169
|
+
detach();
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const message = request(wire.message);
|
|
173
|
+
if (message === null) return;
|
|
174
|
+
void serve(message);
|
|
175
|
+
});
|
|
176
|
+
port.addEventListener('close', detach);
|
|
177
|
+
port.start();
|
|
178
|
+
attachments.set(detach, send);
|
|
179
|
+
return detach;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
attach,
|
|
183
|
+
replaceDeploymentFacts (value) {
|
|
184
|
+
if (!authorized) throw new Error(AUTHORIZATION_ENDED);
|
|
185
|
+
deploymentFacts = structuredClone(value);
|
|
186
|
+
for (const deliver of factsObservers)deliver(structuredClone(deploymentFacts));
|
|
187
|
+
},
|
|
188
|
+
async endAuthorization () {
|
|
189
|
+
authorized = false;
|
|
190
|
+
for (const [detach, send] of [
|
|
191
|
+
...attachments
|
|
192
|
+
]){
|
|
193
|
+
send({
|
|
194
|
+
kind: 'ended'
|
|
195
|
+
});
|
|
196
|
+
detach();
|
|
197
|
+
}
|
|
198
|
+
stop();
|
|
199
|
+
await removeRuntimeStore();
|
|
200
|
+
await options.shell.dropGeneration();
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
//# sourceMappingURL=host.js.map
|
package/dist/host.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/host.ts"],"sourcesContent":["import type { WrittenBy } from './change.js';\nimport {\n composeRuntime,\n type HistoryQuery,\n type MdRuntime,\n type MdRuntimeOptions,\n type SavedRoomDraft,\n} from './connection.js';\nimport type { ChatDraft, ConversationOptions } from './conversation.js';\nimport type { DocumentQuery } from './query.js';\nimport type { SearchRequest } from './search.js';\nimport { removeRuntimeStore } from './store.js';\nimport {\n AUTHORIZATION_ENDED,\n carried,\n envelope,\n PROTOCOL_MISMATCH,\n request,\n type RuntimePort,\n type WireAnswer,\n type WireMember,\n type WireRequest,\n} from './wire.js';\n\nexport type MdRuntimeHostOptions = MdRuntimeOptions & { deploymentFacts?: unknown };\n\nexport type MdRuntimeHost = {\n replaceDeploymentFacts(value: unknown): void;\n attach(port: RuntimePort, app: string, release?: string): () => void;\n endAuthorization(): Promise<void>;\n};\n\nfunction answered(\n md: MdRuntime,\n app: string,\n writtenBy: WrittenBy | undefined,\n member: WireMember,\n input: readonly unknown[],\n deploymentFacts: unknown,\n): unknown {\n switch (member) {\n case 'rooms':\n return md.rooms();\n case 'slots':\n return md.slots();\n case 'query':\n return md.query(input[0] as DocumentQuery);\n case 'search':\n return md.search(input[0] as SearchRequest);\n case 'types':\n return md.types(input[0] as string);\n case 'syncStatus':\n return md.syncStatus();\n case 'save':\n return md.save(input[0] as string, input[1] as readonly SavedRoomDraft[], writtenBy);\n case 'outcome':\n return md.outcome(input[0] as string);\n case 'history':\n return md.history(input[0] as string, input[1] as string, input[2] as HistoryQuery);\n case 'call':\n return md.call(input[0] as string, input[1]);\n case 'log':\n return md.log();\n case 'storageLoss':\n return md.storageLoss();\n case 'deploymentFacts':\n return structuredClone(deploymentFacts);\n case 'persistence':\n return md.persistence();\n case 'reauthorize':\n return md.reauthorize();\n case 'roomDraft.list':\n return md.roomDraft.list();\n case 'roomDraft.read':\n return md.roomDraft.read(input[0] as string, input[1] as string);\n case 'roomDraft.write':\n return md.roomDraft.write(\n input[0] as string,\n input[1] as string,\n input[2] as string | null,\n input[3],\n );\n case 'roomDraft.discard':\n return md.roomDraft.discard(input[0] as string, input[1] as string, input[2] as string);\n case 'presentation.read':\n return md.presentation.read(app);\n case 'presentation.write':\n return md.presentation.write(app, input[0]);\n case 'conversation.list':\n return md.conversation.list();\n case 'conversation.read':\n return md.conversation.read(input[0] as string, input[1] as ConversationOptions | undefined);\n case 'conversation.create':\n return md.conversation.create(input[0]);\n case 'conversation.send':\n return md.conversation.send(input[0] as string);\n case 'conversation.answer':\n return md.conversation.answer(input[0] as string, input[1]);\n case 'conversation.interrupt':\n return md.conversation.interrupt(input[0] as string);\n case 'conversation.kill':\n return md.conversation.kill(input[0] as string);\n case 'conversation.cancel':\n return md.conversation.cancel(input[0] as string, input[1] as string);\n case 'conversation.delete':\n return md.conversation.delete(input[0] as string);\n case 'chatDraft.write':\n return md.chatDraft.write(input[0] as string, input[1] as ChatDraft);\n case 'chatDraft.discard':\n return md.chatDraft.discard(input[0] as string);\n }\n}\n\nexport function serveMdRuntime(options: MdRuntimeHostOptions): MdRuntimeHost {\n let deploymentFacts = structuredClone(options.deploymentFacts);\n const stopping = new AbortController();\n const stop = () => {\n stopping.abort();\n };\n options.signal?.addEventListener('abort', stop, { once: true });\n if (options.signal?.aborted === true) stop();\n const { md, watch } = composeRuntime({ ...options, signal: stopping.signal });\n const attachments = new Map<() => void, (message: WireAnswer) => void>();\n let authorized = true;\n const factsObservers = new Set<(value: unknown) => void>();\n const watchFacts = (deliver: (value: unknown) => void) => {\n factsObservers.add(deliver);\n deliver(structuredClone(deploymentFacts));\n return () => {\n factsObservers.delete(deliver);\n };\n };\n\n function attach(port: RuntimePort, app: string, release?: string): () => void {\n if (!authorized) throw new Error(AUTHORIZATION_ENDED);\n const writtenBy = release === undefined ? undefined : { app, release };\n const subscriptions = new Map<number, () => void>();\n let serving = true;\n const send = (message: WireAnswer) => {\n port.postMessage(envelope(message));\n };\n const detach = () => {\n if (!serving) return;\n serving = false;\n for (const end of subscriptions.values()) end();\n subscriptions.clear();\n attachments.delete(detach);\n };\n const serve = async (message: WireRequest) => {\n if (message.kind === 'hello') return;\n if (message.kind === 'stop') {\n subscriptions.get(message.id)?.();\n subscriptions.delete(message.id);\n return;\n }\n try {\n if (message.kind !== 'observe' || message.topic !== 'room-drafts') await md.loaded();\n if (message.kind === 'observe') {\n const { id, topic } = message;\n let resolved = false;\n const deliver = (value: unknown) => {\n if (!serving) return;\n send(resolved ? { kind: 'event', id, value } : { kind: 'result', id, value });\n resolved = true;\n };\n subscriptions.set(\n id,\n topic === 'deployment-facts'\n ? watchFacts(deliver)\n : watch(topic, topic === 'presentation' ? [app] : message.input, deliver),\n );\n return;\n }\n const value = await answered(\n md,\n app,\n writtenBy,\n message.member,\n message.input,\n deploymentFacts,\n );\n if (serving) send({ kind: 'result', id: message.id, value });\n } catch (error) {\n if (serving) {\n send({\n kind: 'failure',\n id: message.id,\n message: error instanceof Error ? error.message : String(error),\n });\n }\n }\n };\n port.addEventListener('message', (event) => {\n if (!serving) return;\n const wire = carried(event.data);\n if (wire === null) return;\n if (!wire.matching) {\n send({ kind: 'refusal', refusal: PROTOCOL_MISMATCH });\n detach();\n return;\n }\n const message = request(wire.message);\n if (message === null) return;\n void serve(message);\n });\n port.addEventListener('close', detach);\n port.start();\n attachments.set(detach, send);\n return detach;\n }\n\n return {\n attach,\n replaceDeploymentFacts(value) {\n if (!authorized) throw new Error(AUTHORIZATION_ENDED);\n deploymentFacts = structuredClone(value);\n for (const deliver of factsObservers) deliver(structuredClone(deploymentFacts));\n },\n async endAuthorization() {\n authorized = false;\n for (const [detach, send] of [...attachments]) {\n send({ kind: 'ended' });\n detach();\n }\n stop();\n await removeRuntimeStore();\n await options.shell.dropGeneration();\n },\n };\n}\n\nexport type { RuntimePort } from './wire.js';\n"],"names":["composeRuntime","removeRuntimeStore","AUTHORIZATION_ENDED","carried","envelope","PROTOCOL_MISMATCH","request","answered","md","app","writtenBy","member","input","deploymentFacts","rooms","slots","query","search","types","syncStatus","save","outcome","history","call","log","storageLoss","structuredClone","persistence","reauthorize","roomDraft","list","read","write","discard","presentation","conversation","create","send","answer","interrupt","kill","cancel","delete","chatDraft","serveMdRuntime","options","stopping","AbortController","stop","abort","signal","addEventListener","once","aborted","watch","attachments","Map","authorized","factsObservers","Set","watchFacts","deliver","add","attach","port","release","Error","undefined","subscriptions","serving","message","postMessage","detach","end","values","clear","serve","kind","get","id","topic","loaded","resolved","value","set","error","String","event","wire","data","matching","refusal","start","replaceDeploymentFacts","endAuthorization","shell","dropGeneration"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,EAAE,GAAE,MAAmB,GAAG,MAAM,CAWnE;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C"}
|
package/dist/identity.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function changeBatchIdentity(at = Date.now()) {
|
|
2
|
+
const bytes = new Uint8Array(16);
|
|
3
|
+
crypto.getRandomValues(bytes);
|
|
4
|
+
const time = BigInt(at);
|
|
5
|
+
for(let index = 0; index < 6; index += 1){
|
|
6
|
+
bytes[index] = Number(time >> BigInt(8 * (5 - index)) & 0xffn);
|
|
7
|
+
}
|
|
8
|
+
bytes[6] = bytes[6] & 0x0f | 0x70;
|
|
9
|
+
bytes[8] = bytes[8] & 0x3f | 0x80;
|
|
10
|
+
const hex = [
|
|
11
|
+
...bytes
|
|
12
|
+
].map((byte)=>byte.toString(16).padStart(2, '0')).join('');
|
|
13
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
14
|
+
}
|
|
15
|
+
export function roomDraftRevision() {
|
|
16
|
+
const bytes = new Uint8Array(16);
|
|
17
|
+
crypto.getRandomValues(bytes);
|
|
18
|
+
return [
|
|
19
|
+
...bytes
|
|
20
|
+
].map((byte)=>byte.toString(16).padStart(2, '0')).join('');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/identity.ts"],"sourcesContent":["export function changeBatchIdentity(at: number = Date.now()): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n const time = BigInt(at);\n for (let index = 0; index < 6; index += 1) {\n bytes[index] = Number((time >> BigInt(8 * (5 - index))) & 0xffn);\n }\n bytes[6] = (bytes[6] & 0x0f) | 0x70;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = [...bytes].map((byte) => byte.toString(16).padStart(2, '0')).join('');\n return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n}\n\nexport function roomDraftRevision(): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n return [...bytes].map((byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n"],"names":["changeBatchIdentity","at","Date","now","bytes","Uint8Array","crypto","getRandomValues","time","BigInt","index","Number","hex","map","byte","toString","padStart","join","slice","roomDraftRevision"],"mappings":"AAAA,OAAO,SAASA,oBAAoBC,KAAaC,KAAKC,GAAG,EAAE;IACzD,MAAMC,QAAQ,IAAIC,WAAW;IAC7BC,OAAOC,eAAe,CAACH;IACvB,MAAMI,OAAOC,OAAOR;IACpB,IAAK,IAAIS,QAAQ,GAAGA,QAAQ,GAAGA,SAAS,EAAG;QACzCN,KAAK,CAACM,MAAM,GAAGC,OAAO,AAACH,QAAQC,OAAO,IAAK,CAAA,IAAIC,KAAI,KAAO,KAAK;IACjE;IACAN,KAAK,CAAC,EAAE,GAAG,AAACA,KAAK,CAAC,EAAE,GAAG,OAAQ;IAC/BA,KAAK,CAAC,EAAE,GAAG,AAACA,KAAK,CAAC,EAAE,GAAG,OAAQ;IAC/B,MAAMQ,MAAM;WAAIR;KAAM,CAACS,GAAG,CAAC,CAACC,OAASA,KAAKC,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG,MAAMC,IAAI,CAAC;IAC9E,OAAO,GAAGL,IAAIM,KAAK,CAAC,GAAG,GAAG,CAAC,EAAEN,IAAIM,KAAK,CAAC,GAAG,IAAI,CAAC,EAAEN,IAAIM,KAAK,CAAC,IAAI,IAAI,CAAC,EAAEN,IAAIM,KAAK,CAAC,IAAI,IAAI,CAAC,EAAEN,IAAIM,KAAK,CAAC,KAAK;AAC5G;AAEA,OAAO,SAASC;IACd,MAAMf,QAAQ,IAAIC,WAAW;IAC7BC,OAAOC,eAAe,CAACH;IACvB,OAAO;WAAIA;KAAM,CAACS,GAAG,CAAC,CAACC,OAASA,KAAKC,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG,MAAMC,IAAI,CAAC;AAC3E"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
export type { ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, DiscoverResult, DiscoveredRoom, Discovery, HistoryRequest, HistoryResult, MdModelIdentity, MutationRequest, MutationResult, PageToken, ProviderLimit, RefreshPage, RefreshRequest, RefreshResult, Retention, RevokedAuthorization, RoomNotReadable, TransportUncertainty, } from './adapter.js';
|
|
2
|
-
export type { Change, ChangeBatch, Precondition } from './change.js';
|
|
3
|
-
export type {
|
|
4
|
-
export type {
|
|
1
|
+
export type { AcceptedMessage, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ContractUnavailable, ConversationAction, ConversationCards, ConversationEvent, ConversationHistoryPage, ConversationHistoryRequest, ConversationMessage, ConversationStream, DiscoverResult, DiscoveredRoom, Discovery, HistoryRequest, HistoryResult, HistoryRetention, HistoryRevision, MdModelIdentity, ModelRequest, MutationRequest, MutationResult, PageToken, ProviderLimit, ProviderRefusal, RefreshPage, RefreshRequest, RefreshResult, Retention, RetryableRefusal, RevokedAuthorization, RoomNotReadable, RoomVersionNotification, SelectedRooms, TransportUncertainty, TypedSelection, } from './adapter.js';
|
|
2
|
+
export type { Change, ChangeBatch, Precondition, WrittenBy } from './change.js';
|
|
3
|
+
export type { ChatDraft, ChatDraftSurface, ConversationEntry, ConversationOptions, ConversationSurface, ConversationView, GrowingText, } from './conversation.js';
|
|
4
|
+
export type { ChatDraftFile, FileDeclaration } from './file.js';
|
|
5
|
+
export type { AppRoom, AppSlot, AppSlotEntry, AppTypedSelection, ConnectionRefusal, ConnectionRefusalReason, HistoryQuery, MdRuntime, MdRuntimeOptions, PresentationSurface, RoomDraftSurface, RoomTypes, SavedRoomDraft, SaveResult, } from './connection.js';
|
|
6
|
+
export type { Observation } from './observation.js';
|
|
7
|
+
export type { AcceptedOutcome, AffectedState, CallResult, QueueEntry, Submission, SubmissionOutcome, } from './outcome.js';
|
|
8
|
+
export type { ChangedPart, FieldValue, ReturnReason, RoomDraft, RoomDraftCreation, RoomDraftParts, RoomDraftWrite, } from './room-draft.js';
|
|
5
9
|
export type { SaveRefusal } from './save.js';
|
|
10
|
+
export type { DocumentHit, DocumentPart, MessageHit, SearchRequest, SearchResult, } from './search.js';
|
|
11
|
+
export { changeBatchIdentity } from './identity.js';
|
|
6
12
|
export { createMdRuntime } from './connection.js';
|
|
7
|
-
export type {
|
|
8
|
-
export type {
|
|
13
|
+
export type { RuntimeShell } from './durability.js';
|
|
14
|
+
export type { AttentionEntry, SyncStatus } from './status.js';
|
|
15
|
+
export type { Backlink, Direction, DocumentQuery, DocumentResult, Filter, GroupQuery, GroupResult, Key, LocalQuery, OrderOptions, Predicate, QueryDocument, QueryGroup, QueryResult, Related, Select, Value, Where, } from './query.js';
|
|
16
|
+
export type { MdType, ModelIdentity, ModelSnapshot, ModelState, ModelResult, TypesResult, ValidationReceipt, } from './model.js';
|
|
17
|
+
export type { OperationScopes, ReplicaAdmission, ScopedRefusal } from './adapter.js';
|
|
9
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,cAAc,EACd,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,UAAU,EACV,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EACV,QAAQ,EACR,SAAS,EACT,aAAa,EACb,cAAc,EACd,MAAM,EACN,UAAU,EACV,WAAW,EACX,GAAG,EACH,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/index.ts"],"sourcesContent":["export type {\n ActionDeclaration,\n ActionRequest,\n ActionResult,\n Adapter,\n AdapterFailure,\n Authorization,\n BootstrapPage,\n BootstrapRequest,\n BootstrapResult,\n Capability,\n DiscoverResult,\n DiscoveredRoom,\n Discovery,\n HistoryRequest,\n HistoryResult,\n MdModelIdentity,\n MutationRequest,\n MutationResult,\n PageToken,\n ProviderLimit,\n RefreshPage,\n RefreshRequest,\n RefreshResult,\n Retention,\n RevokedAuthorization,\n RoomNotReadable,\n TransportUncertainty,\n} from './adapter.js';\nexport type { Change, ChangeBatch, Precondition } from './change.js';\nexport type {
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/index.ts"],"sourcesContent":["export type {\n AcceptedMessage,\n ActionDeclaration,\n ActionRequest,\n ActionResult,\n Adapter,\n AdapterFailure,\n Authorization,\n BootstrapPage,\n BootstrapRequest,\n BootstrapResult,\n Capability,\n ContractUnavailable,\n ConversationAction,\n ConversationCards,\n ConversationEvent,\n ConversationHistoryPage,\n ConversationHistoryRequest,\n ConversationMessage,\n ConversationStream,\n DiscoverResult,\n DiscoveredRoom,\n Discovery,\n HistoryRequest,\n HistoryResult,\n HistoryRetention,\n HistoryRevision,\n MdModelIdentity,\n ModelRequest,\n MutationRequest,\n MutationResult,\n PageToken,\n ProviderLimit,\n ProviderRefusal,\n RefreshPage,\n RefreshRequest,\n RefreshResult,\n Retention,\n RetryableRefusal,\n RevokedAuthorization,\n RoomNotReadable,\n RoomVersionNotification,\n SelectedRooms,\n TransportUncertainty,\n TypedSelection,\n} from './adapter.js';\nexport type { Change, ChangeBatch, Precondition, WrittenBy } from './change.js';\nexport type {\n ChatDraft,\n ChatDraftSurface,\n ConversationEntry,\n ConversationOptions,\n ConversationSurface,\n ConversationView,\n GrowingText,\n} from './conversation.js';\nexport type { ChatDraftFile, FileDeclaration } from './file.js';\nexport type {\n AppRoom,\n AppSlot,\n AppSlotEntry,\n AppTypedSelection,\n ConnectionRefusal,\n ConnectionRefusalReason,\n HistoryQuery,\n MdRuntime,\n MdRuntimeOptions,\n PresentationSurface,\n RoomDraftSurface,\n RoomTypes,\n SavedRoomDraft,\n SaveResult,\n} from './connection.js';\nexport type { Observation } from './observation.js';\nexport type {\n AcceptedOutcome,\n AffectedState,\n CallResult,\n QueueEntry,\n Submission,\n SubmissionOutcome,\n} from './outcome.js';\nexport type {\n ChangedPart,\n FieldValue,\n ReturnReason,\n RoomDraft,\n RoomDraftCreation,\n RoomDraftParts,\n RoomDraftWrite,\n} from './room-draft.js';\nexport type { SaveRefusal } from './save.js';\nexport type {\n DocumentHit,\n DocumentPart,\n MessageHit,\n SearchRequest,\n SearchResult,\n} from './search.js';\nexport { changeBatchIdentity } from './identity.js';\nexport { createMdRuntime } from './connection.js';\nexport type { RuntimeShell } from './durability.js';\nexport type { AttentionEntry, SyncStatus } from './status.js';\nexport type {\n Backlink,\n Direction,\n DocumentQuery,\n DocumentResult,\n Filter,\n GroupQuery,\n GroupResult,\n Key,\n LocalQuery,\n OrderOptions,\n Predicate,\n QueryDocument,\n QueryGroup,\n QueryResult,\n Related,\n Select,\n Value,\n Where,\n} from './query.js';\n\nexport type {\n MdType,\n ModelIdentity,\n ModelSnapshot,\n ModelState,\n ModelResult,\n TypesResult,\n ValidationReceipt,\n} from './model.js';\nexport type { OperationScopes, ReplicaAdmission, ScopedRefusal } from './adapter.js';\n"],"names":["changeBatchIdentity","createMdRuntime"],"mappings":"AAmGA,SAASA,mBAAmB,QAAQ,gBAAgB;AACpD,SAASC,eAAe,QAAQ,kBAAkB"}
|
package/dist/log.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS;IAGrB,MAAM,QAAQ,MAAM;IAIpB,MAAM;EAIT"}
|
package/dist/log.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const BOUND = 256;
|
|
2
|
+
export function createLog() {
|
|
3
|
+
const events = [];
|
|
4
|
+
return {
|
|
5
|
+
record (event) {
|
|
6
|
+
events.push(event);
|
|
7
|
+
if (events.length > BOUND) events.splice(0, events.length - BOUND);
|
|
8
|
+
},
|
|
9
|
+
export () {
|
|
10
|
+
return events.join('\n');
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=log.js.map
|
package/dist/log.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/log.ts"],"sourcesContent":["const BOUND = 256;\n\nexport function createLog() {\n const events: string[] = [];\n return {\n record(event: string) {\n events.push(event);\n if (events.length > BOUND) events.splice(0, events.length - BOUND);\n },\n export() {\n return events.join('\\n');\n },\n };\n}\n"],"names":["BOUND","createLog","events","record","event","push","length","splice","export","join"],"mappings":"AAAA,MAAMA,QAAQ;AAEd,OAAO,SAASC;IACd,MAAMC,SAAmB,EAAE;IAC3B,OAAO;QACLC,QAAOC,KAAa;YAClBF,OAAOG,IAAI,CAACD;YACZ,IAAIF,OAAOI,MAAM,GAAGN,OAAOE,OAAOK,MAAM,CAAC,GAAGL,OAAOI,MAAM,GAAGN;QAC9D;QACAQ;YACE,OAAON,OAAOO,IAAI,CAAC;QACrB;IACF;AACF"}
|
package/dist/memory.d.ts
CHANGED
|
@@ -1,22 +1,37 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { ModelResult } from './model.js';
|
|
2
|
+
import { type AcceptedMessage, type ActionResult, type Adapter, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type MdModelIdentity, type ProviderLimit, type Retention, type RoomVersionNotification } from './adapter.js';
|
|
2
3
|
export type MemoryRoom = DiscoveredRoom & {
|
|
4
|
+
model?: ModelResult;
|
|
5
|
+
selectionModel?: ModelResult;
|
|
3
6
|
documents?: Readonly<Record<string, string>>;
|
|
4
7
|
revisions?: Readonly<Record<string, string>>;
|
|
5
8
|
binaryTargets?: readonly string[];
|
|
6
9
|
};
|
|
10
|
+
export type MemoryConversation = {
|
|
11
|
+
conversation: string;
|
|
12
|
+
messages?: readonly AcceptedMessage[];
|
|
13
|
+
outcomes?: Partial<Record<ConversationAction, ActionResult>>;
|
|
14
|
+
};
|
|
7
15
|
export type MemoryAdapterOptions = {
|
|
8
16
|
rooms?: readonly MemoryRoom[];
|
|
17
|
+
conversations?: readonly MemoryConversation[];
|
|
18
|
+
historyPageSize?: number;
|
|
9
19
|
pageSize?: number;
|
|
10
20
|
mdModel?: MdModelIdentity;
|
|
11
21
|
supportedVersions?: readonly number[];
|
|
12
22
|
capabilities?: readonly Capability[];
|
|
13
23
|
providerLimits?: readonly ProviderLimit[];
|
|
14
24
|
retention?: Retention;
|
|
15
|
-
origins?: readonly string[];
|
|
16
25
|
};
|
|
17
26
|
export type MemoryAdapter = Adapter & {
|
|
18
27
|
setRooms(rooms: readonly MemoryRoom[]): void;
|
|
28
|
+
setConversations(conversations: readonly MemoryConversation[]): void;
|
|
19
29
|
script(operation: keyof Adapter, answer: unknown): void;
|
|
30
|
+
notifyRoomVersion(notification: RoomVersionNotification): void;
|
|
31
|
+
notifyConversation(event: ConversationEvent): void;
|
|
32
|
+
selectedRooms(): readonly string[];
|
|
33
|
+
replicatedConversations(): readonly string[];
|
|
34
|
+
viewedConversations(): readonly string[];
|
|
20
35
|
};
|
|
21
36
|
export declare function createMemoryAdapter(options?: MemoryAdapterOptions): MemoryAdapter;
|
|
22
37
|
//# sourceMappingURL=memory.d.ts.map
|
package/dist/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAEL,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,OAAO,EAIZ,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAGtB,KAAK,cAAc,EAGnB,KAAK,eAAe,EAGpB,KAAK,aAAa,EAGlB,KAAK,SAAS,EACd,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AAkBtB,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAAC;IAC7C,gBAAgB,CAAC,aAAa,EAAE,SAAS,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACrE,MAAM,CAAC,SAAS,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxD,iBAAiB,CAAC,YAAY,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC/D,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnD,aAAa,IAAI,SAAS,MAAM,EAAE,CAAC;IACnC,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAAC;IAC7C,mBAAmB,IAAI,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AA+BF,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,aAAa,CAiVrF"}
|