@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/collection.js
CHANGED
|
@@ -1,52 +1,110 @@
|
|
|
1
1
|
import { parse, validate, VERSION } from '@agentshouse/mdmodel';
|
|
2
|
-
|
|
3
|
-
const DEFINITION = 'definition';
|
|
2
|
+
import { beneath, normalize } from './paths.js';
|
|
4
3
|
export const MD_MODEL = {
|
|
5
4
|
identity: '@agentshouse/mdmodel',
|
|
6
5
|
version: VERSION
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
$regex: '\\.md$'
|
|
11
|
-
}
|
|
7
|
+
const NO_TYPES = {
|
|
8
|
+
types: {}
|
|
12
9
|
};
|
|
13
|
-
function
|
|
14
|
-
return
|
|
15
|
-
}
|
|
16
|
-
function declaredIn(document, part) {
|
|
17
|
-
return document.fields[part] ?? {};
|
|
10
|
+
function selected(composition, path) {
|
|
11
|
+
return composition.selection !== null && composition.selection.roots.some((root)=>beneath(root, path));
|
|
18
12
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
21
|
-
name: path.slice(path.lastIndexOf('/') + 1, -MARKDOWN.length),
|
|
22
|
-
path,
|
|
23
|
-
fields: declaredIn(document, 'fields'),
|
|
24
|
-
sections: declaredIn(document, 'sections')
|
|
25
|
-
};
|
|
13
|
+
export function governing(composition, path) {
|
|
14
|
+
return composition.selection !== null && selected(composition, path) ? composition.selection.model : composition.model;
|
|
26
15
|
}
|
|
27
|
-
export function parseCollection(text) {
|
|
16
|
+
export function parseCollection(text, composition, previous) {
|
|
28
17
|
const documents = {};
|
|
29
18
|
for (const path of Object.keys(text).sort()){
|
|
19
|
+
const retained = previous?.collection.documents[path];
|
|
20
|
+
if (retained !== undefined && previous?.text[path] === text[path]) {
|
|
21
|
+
documents[path] = retained;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
30
24
|
const parsed = parse(text[path], path);
|
|
31
25
|
if (parsed.ok) documents[path] = parsed.document;
|
|
32
26
|
}
|
|
33
|
-
const types = [];
|
|
34
|
-
for (const [path, document] of Object.entries(documents)){
|
|
35
|
-
if (!isMarkdown(path) || document.type !== DEFINITION) continue;
|
|
36
|
-
types.push(mdType(path, document));
|
|
37
|
-
}
|
|
38
27
|
return {
|
|
39
28
|
documents,
|
|
40
|
-
|
|
29
|
+
composition
|
|
41
30
|
};
|
|
42
31
|
}
|
|
43
|
-
export function readCollection(text,
|
|
44
|
-
|
|
32
|
+
export function readCollection(text, composition, previous) {
|
|
33
|
+
if (!validRoot(composition.collectionRoot)) return null;
|
|
34
|
+
const collection = parseCollection(text, composition, previous);
|
|
45
35
|
if (Object.keys(collection.documents).length !== Object.keys(text).length) return null;
|
|
46
|
-
if (
|
|
47
|
-
binaryTargets
|
|
48
|
-
}).verdict === 'refuse') return null;
|
|
36
|
+
if (Object.entries(collection.documents).some(([path, document])=>!member(path, composition.collectionRoot) && !selected(composition, path) && document.type !== undefined && document.type !== 'any')) return null;
|
|
49
37
|
return collection;
|
|
50
38
|
}
|
|
39
|
+
export function validRoot(root) {
|
|
40
|
+
return typeof root === 'string' && normalize(root) === root;
|
|
41
|
+
}
|
|
42
|
+
function member(path, root) {
|
|
43
|
+
return root === '' || path.startsWith(`${root}/`);
|
|
44
|
+
}
|
|
45
|
+
function validateAgainst(documents, binaryTargets, prefix, model) {
|
|
46
|
+
if (model.status === 'unavailable') {
|
|
47
|
+
const typed = Object.entries(documents).find(([, content])=>{
|
|
48
|
+
const parsed = parse(content);
|
|
49
|
+
return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';
|
|
50
|
+
});
|
|
51
|
+
if (typed !== undefined) return {
|
|
52
|
+
verdict: 'refuse',
|
|
53
|
+
rule: 'model-unavailable',
|
|
54
|
+
file: `${prefix}${typed[0]}`,
|
|
55
|
+
version: VERSION
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const verdict = validate(documents, {
|
|
59
|
+
binaryTargets
|
|
60
|
+
}, model.status === 'unavailable' ? NO_TYPES : {
|
|
61
|
+
types: model.types
|
|
62
|
+
});
|
|
63
|
+
if (verdict.verdict === 'accept') return verdict;
|
|
64
|
+
return {
|
|
65
|
+
...verdict,
|
|
66
|
+
file: `${prefix}${verdict.file}`,
|
|
67
|
+
...verdict.referrers === undefined ? {} : {
|
|
68
|
+
referrers: verdict.referrers.map((path)=>`${prefix}${path}`)
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function validateCollection(text, binaryTargets, composition) {
|
|
73
|
+
const prefix = composition.collectionRoot === '' ? '' : `${composition.collectionRoot}/`;
|
|
74
|
+
const collection = {};
|
|
75
|
+
const selection = {};
|
|
76
|
+
for (const [path, content] of Object.entries(text)){
|
|
77
|
+
if (member(path, composition.collectionRoot)) {
|
|
78
|
+
collection[path.slice(prefix.length)] = content;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (selected(composition, path)) {
|
|
82
|
+
selection[path] = content;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const parsed = parse(content, path);
|
|
86
|
+
if (!parsed.ok) return {
|
|
87
|
+
verdict: 'refuse',
|
|
88
|
+
...parsed.refusal
|
|
89
|
+
};
|
|
90
|
+
if (Object.hasOwn(parsed.document.fields, 'type') && parsed.document.fields.type !== 'any') {
|
|
91
|
+
return {
|
|
92
|
+
verdict: 'refuse',
|
|
93
|
+
rule: 'outside-collection-type',
|
|
94
|
+
file: path,
|
|
95
|
+
version: VERSION
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const verdicts = [
|
|
100
|
+
validateAgainst(collection, binaryTargets.filter((path)=>member(path, composition.collectionRoot)).map((path)=>path.slice(prefix.length)), prefix, composition.model)
|
|
101
|
+
];
|
|
102
|
+
if (composition.selection !== null) {
|
|
103
|
+
verdicts.push(validateAgainst(selection, binaryTargets.filter((path)=>selected(composition, path)), '', composition.selection.model));
|
|
104
|
+
}
|
|
105
|
+
const refusals = verdicts.filter((verdict)=>verdict.verdict === 'refuse');
|
|
106
|
+
if (refusals.length === 0) return verdicts[0];
|
|
107
|
+
return refusals.find((refusal)=>refusal.rule !== 'model-unavailable') ?? refusals[0];
|
|
108
|
+
}
|
|
51
109
|
|
|
52
110
|
//# sourceMappingURL=collection.js.map
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/collection.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/collection.ts"],"sourcesContent":["import {\n parse,\n validate,\n VERSION,\n type Document,\n type Validation,\n type VerifiedModel,\n} from '@agentshouse/mdmodel';\nimport { beneath, normalize } from './paths.js';\nimport type { ModelState } from './model.js';\nimport type { MdModelIdentity } from './adapter.js';\n\nexport const MD_MODEL: MdModelIdentity = { identity: '@agentshouse/mdmodel', version: VERSION };\n\nconst NO_TYPES: VerifiedModel = { types: {} };\n\nexport type Collection = {\n documents: Readonly<Record<string, Document>>;\n composition: Composition;\n};\n\nexport type Composition = {\n collectionRoot: string;\n model: ModelState;\n selection: { roots: readonly string[]; model: ModelState } | null;\n};\n\nfunction selected(composition: Composition, path: string): boolean {\n return (\n composition.selection !== null &&\n composition.selection.roots.some((root) => beneath(root, path))\n );\n}\n\nexport function governing(composition: Composition, path: string): ModelState {\n return composition.selection !== null && selected(composition, path)\n ? composition.selection.model\n : composition.model;\n}\n\nexport function parseCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: { text: Readonly<Record<string, string>>; collection: Collection },\n): Collection {\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n const retained = previous?.collection.documents[path];\n if (retained !== undefined && previous?.text[path] === text[path]) {\n documents[path] = retained;\n continue;\n }\n const parsed = parse(text[path], path);\n if (parsed.ok) documents[path] = parsed.document;\n }\n return { documents, composition };\n}\n\nexport function readCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: { text: Readonly<Record<string, string>>; collection: Collection },\n): Collection | null {\n if (!validRoot(composition.collectionRoot)) return null;\n const collection = parseCollection(text, composition, previous);\n if (Object.keys(collection.documents).length !== Object.keys(text).length) return null;\n if (\n Object.entries(collection.documents).some(\n ([path, document]) =>\n !member(path, composition.collectionRoot) &&\n !selected(composition, path) &&\n document.type !== undefined &&\n document.type !== 'any',\n )\n )\n return null;\n return collection;\n}\n\nexport function validRoot(root: unknown): root is string {\n return typeof root === 'string' && normalize(root) === root;\n}\n\nfunction member(path: string, root: string): boolean {\n return root === '' || path.startsWith(`${root}/`);\n}\n\ntype Refusal = Extract<Validation, { verdict: 'refuse' }>;\n\nfunction validateAgainst(\n documents: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n prefix: string,\n model: ModelState,\n): Validation {\n if (model.status === 'unavailable') {\n const typed = Object.entries(documents).find(([, content]) => {\n const parsed = parse(content);\n return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';\n });\n if (typed !== undefined)\n return {\n verdict: 'refuse',\n rule: 'model-unavailable',\n file: `${prefix}${typed[0]}`,\n version: VERSION,\n };\n }\n const verdict = validate(\n documents,\n { binaryTargets },\n model.status === 'unavailable' ? NO_TYPES : { types: model.types },\n );\n if (verdict.verdict === 'accept') return verdict;\n return {\n ...verdict,\n file: `${prefix}${verdict.file}`,\n ...(verdict.referrers === undefined\n ? {}\n : { referrers: verdict.referrers.map((path) => `${prefix}${path}`) }),\n };\n}\n\nexport function validateCollection(\n text: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n composition: Composition,\n): Validation {\n const prefix = composition.collectionRoot === '' ? '' : `${composition.collectionRoot}/`;\n const collection: Record<string, string> = {};\n const selection: Record<string, string> = {};\n for (const [path, content] of Object.entries(text)) {\n if (member(path, composition.collectionRoot)) {\n collection[path.slice(prefix.length)] = content;\n continue;\n }\n if (selected(composition, path)) {\n selection[path] = content;\n continue;\n }\n const parsed = parse(content, path);\n if (!parsed.ok) return { verdict: 'refuse', ...parsed.refusal };\n if (Object.hasOwn(parsed.document.fields, 'type') && parsed.document.fields.type !== 'any') {\n return { verdict: 'refuse', rule: 'outside-collection-type', file: path, version: VERSION };\n }\n }\n const verdicts = [\n validateAgainst(\n collection,\n binaryTargets\n .filter((path) => member(path, composition.collectionRoot))\n .map((path) => path.slice(prefix.length)),\n prefix,\n composition.model,\n ),\n ];\n if (composition.selection !== null) {\n verdicts.push(\n validateAgainst(\n selection,\n binaryTargets.filter((path) => selected(composition, path)),\n '',\n composition.selection.model,\n ),\n );\n }\n const refusals = verdicts.filter((verdict): verdict is Refusal => verdict.verdict === 'refuse');\n if (refusals.length === 0) return verdicts[0];\n return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];\n}\n"],"names":["parse","validate","VERSION","beneath","normalize","MD_MODEL","identity","version","NO_TYPES","types","selected","composition","path","selection","roots","some","root","governing","model","parseCollection","text","previous","documents","Object","keys","sort","retained","collection","undefined","parsed","ok","document","readCollection","validRoot","collectionRoot","length","entries","member","type","startsWith","validateAgainst","binaryTargets","prefix","status","typed","find","content","verdict","rule","file","referrers","map","validateCollection","slice","refusal","hasOwn","fields","verdicts","filter","push","refusals"],"mappings":"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"}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,24 +1,55 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
import type
|
|
4
|
-
import { type
|
|
1
|
+
import { type TypesResult } from './model.js';
|
|
2
|
+
import { type Observation } from './observation.js';
|
|
3
|
+
import { type DocumentQuery, type DocumentResult, type GroupQuery, type GroupResult } from './query.js';
|
|
4
|
+
import { type SearchRequest, type SearchResult } from './search.js';
|
|
5
|
+
import { type Adapter, type Authorization, type HistoryResult, type ProviderRefusal } from './adapter.js';
|
|
6
|
+
import { type ChatDraftSurface, type ConversationOptions, type ConversationSurface, type ConversationView } from './conversation.js';
|
|
7
|
+
import type { WrittenBy } from './change.js';
|
|
8
|
+
import type { CallResult, QueueEntry, SubmissionOutcome } from './outcome.js';
|
|
5
9
|
import { type SaveRefusal } from './save.js';
|
|
10
|
+
import { type RoomDraft, type RoomDraftWrite } from './room-draft.js';
|
|
6
11
|
import { type SyncStatus } from './status.js';
|
|
12
|
+
import { type RuntimeShell } from './durability.js';
|
|
13
|
+
export type AppTypedSelection = {
|
|
14
|
+
roots: readonly string[];
|
|
15
|
+
attachedModel: import('./model.js').ModelIdentity | null;
|
|
16
|
+
model: TypesResult;
|
|
17
|
+
};
|
|
7
18
|
export type AppRoom = {
|
|
19
|
+
collectionRoot: string;
|
|
8
20
|
name: string;
|
|
9
21
|
locator: string;
|
|
10
|
-
|
|
22
|
+
operations: import('./adapter.js').OperationScopes;
|
|
23
|
+
replica: import('./adapter.js').ReplicaAdmission;
|
|
24
|
+
attachedModel: import('./model.js').ModelIdentity | null;
|
|
25
|
+
model: TypesResult;
|
|
26
|
+
typedSelection: AppTypedSelection | null;
|
|
11
27
|
providerOwnedPaths: readonly string[];
|
|
12
28
|
roomVersion: string | null;
|
|
13
29
|
synchronizationAvailable: boolean;
|
|
30
|
+
refusal: ProviderRefusal | null;
|
|
31
|
+
};
|
|
32
|
+
export type AppSlotEntry = {
|
|
33
|
+
room: AppRoom;
|
|
34
|
+
segment: string | null;
|
|
35
|
+
};
|
|
36
|
+
export type AppSlot = {
|
|
37
|
+
slot: string;
|
|
38
|
+
entries: readonly AppSlotEntry[];
|
|
14
39
|
};
|
|
15
|
-
export type
|
|
40
|
+
export type RoomTypes = {
|
|
41
|
+
collection: TypesResult;
|
|
42
|
+
typedSelection: TypesResult | null;
|
|
43
|
+
};
|
|
44
|
+
export type ConnectionRefusalReason = 'no-matching-version' | 'missing-required-guarantee' | 'md-model-version-mismatch' | 'revoked-authorization' | 'client-host-protocol-mismatch';
|
|
16
45
|
export type ConnectionRefusal = {
|
|
17
46
|
reason: ConnectionRefusalReason;
|
|
18
47
|
reauthorizationOffered: boolean;
|
|
48
|
+
refusal: ProviderRefusal | null;
|
|
19
49
|
};
|
|
20
50
|
export type MdRuntimeOptions = {
|
|
21
51
|
adapter: Adapter;
|
|
52
|
+
shell: RuntimeShell;
|
|
22
53
|
requiredGuarantees: readonly string[];
|
|
23
54
|
authorization?: Authorization;
|
|
24
55
|
discoveryIntervalMs?: number;
|
|
@@ -26,30 +57,69 @@ export type MdRuntimeOptions = {
|
|
|
26
57
|
};
|
|
27
58
|
export type SaveResult = {
|
|
28
59
|
outcome: 'saved';
|
|
29
|
-
|
|
60
|
+
identifier: string;
|
|
30
61
|
} | ({
|
|
31
62
|
outcome: 'refused';
|
|
32
63
|
} & SaveRefusal);
|
|
33
|
-
export type
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
64
|
+
export type SavedRoomDraft = {
|
|
65
|
+
readonly path: string;
|
|
66
|
+
readonly revision: string;
|
|
67
|
+
};
|
|
68
|
+
export type RoomDraftSurface = {
|
|
69
|
+
list(): Promise<readonly RoomDraft[]>;
|
|
70
|
+
read(room: string, path: string): RoomDraft | null;
|
|
71
|
+
write(room: string, path: string, revision: string | null, parts: unknown): Promise<RoomDraftWrite>;
|
|
72
|
+
discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;
|
|
73
|
+
};
|
|
74
|
+
export type PresentationSurface = {
|
|
75
|
+
read(app: string): Promise<unknown>;
|
|
76
|
+
write(app: string, value: unknown): Promise<void>;
|
|
77
|
+
};
|
|
78
|
+
export type HistoryQuery = {
|
|
79
|
+
revision?: string;
|
|
80
|
+
pageToken?: string;
|
|
37
81
|
};
|
|
38
82
|
export type MdRuntime = {
|
|
83
|
+
loaded(): Promise<void>;
|
|
39
84
|
rooms(): readonly AppRoom[];
|
|
40
|
-
|
|
41
|
-
|
|
85
|
+
slots(): readonly AppSlot[];
|
|
86
|
+
query: {
|
|
87
|
+
(query: DocumentQuery): Promise<DocumentResult>;
|
|
88
|
+
(query: GroupQuery): Promise<GroupResult>;
|
|
89
|
+
};
|
|
90
|
+
search(request: SearchRequest): Promise<SearchResult>;
|
|
91
|
+
types(locator: string): RoomTypes;
|
|
42
92
|
syncStatus(): SyncStatus;
|
|
43
|
-
|
|
44
|
-
|
|
93
|
+
roomDraft: RoomDraftSurface;
|
|
94
|
+
conversation: ConversationSurface;
|
|
95
|
+
chatDraft: ChatDraftSurface;
|
|
96
|
+
presentation: PresentationSurface;
|
|
97
|
+
save(room: string, roomDrafts: readonly SavedRoomDraft[], writtenBy?: WrittenBy): Promise<SaveResult>;
|
|
98
|
+
outcome(identifier: string): SubmissionOutcome | null;
|
|
99
|
+
history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryResult>;
|
|
100
|
+
call(name: string, input: unknown): Promise<CallResult>;
|
|
101
|
+
log(): string;
|
|
102
|
+
storageLoss(): string | null;
|
|
103
|
+
persistence(): boolean;
|
|
45
104
|
observe: {
|
|
46
|
-
(topic: 'rooms'
|
|
47
|
-
(topic: 'connection-refusal'
|
|
48
|
-
(topic: '
|
|
49
|
-
(topic: '
|
|
50
|
-
(topic: '
|
|
105
|
+
(topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
|
|
106
|
+
(topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
|
|
107
|
+
(topic: 'storage-loss'): Promise<Observation<string | null>>;
|
|
108
|
+
(topic: 'sync-status'): Promise<Observation<SyncStatus>>;
|
|
109
|
+
(topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult>>;
|
|
110
|
+
(topic: 'query', query: GroupQuery): Promise<Observation<GroupResult>>;
|
|
111
|
+
(topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
|
|
112
|
+
(topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
|
|
113
|
+
(topic: 'presentation', app: string): Promise<Observation<unknown>>;
|
|
114
|
+
(topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
|
|
51
115
|
};
|
|
52
116
|
reauthorize(): Promise<void>;
|
|
53
117
|
};
|
|
118
|
+
export type RuntimeTopic = 'rooms' | 'connection-refusal' | 'storage-loss' | 'sync-status' | 'query' | 'queue' | 'room-drafts' | 'presentation' | 'conversation';
|
|
119
|
+
export type ComposedRuntime = {
|
|
120
|
+
md: MdRuntime;
|
|
121
|
+
watch(topic: RuntimeTopic, input: readonly unknown[], deliver: (message: unknown) => void): () => void;
|
|
122
|
+
};
|
|
54
123
|
export declare function createMdRuntime(options: MdRuntimeOptions): MdRuntime;
|
|
124
|
+
export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
|
|
55
125
|
//# sourceMappingURL=connection.d.ts.map
|
package/dist/connection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|