@agentshouse/mdruntime 0.1.0-ce5c5bb29be5a → 0.1.0-ce6bc9239a3ee
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 +2 -2
- package/dist/acceptance.d.ts +26 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +384 -0
- package/dist/adapter.d.ts +81 -49
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +3 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +21 -56
- package/dist/bootstrap.d.ts +9 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +209 -75
- package/dist/chain.d.ts +2 -1
- package/dist/chain.d.ts.map +1 -1
- package/dist/change.d.ts +1 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/chat-types.d.ts +3 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +2 -0
- package/dist/client.d.ts +16 -6
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -1
- package/dist/collection.d.ts +2 -1
- package/dist/collection.d.ts.map +1 -1
- package/dist/compile.d.ts +6 -6
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +262 -318
- package/dist/connection.d.ts +20 -44
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1438 -3393
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +7 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +47 -0
- package/dist/conversation.d.ts +26 -17
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +441 -307
- package/dist/durability.d.ts +6 -0
- package/dist/durability.d.ts.map +1 -1
- package/dist/entry.d.ts +2 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +17 -7
- package/dist/figures.d.ts +48 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +197 -0
- package/dist/host.d.ts +4 -6
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +22 -26
- package/dist/identity.d.ts +0 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -3
- package/dist/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/install.d.ts +86 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +537 -0
- package/dist/job.d.ts +33 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +54 -0
- package/dist/live.d.ts +5 -4
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +63 -22
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/memory.d.ts +11 -4
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +171 -81
- package/dist/messages.d.ts +27 -3
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +97 -19
- package/dist/model.d.ts +2 -9
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +0 -9
- package/dist/observation.d.ts +2 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +7 -2
- package/dist/outcome.d.ts +1 -0
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +3 -0
- package/dist/overlay.d.ts +1 -0
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +11 -0
- package/dist/parts.d.ts +59 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +118 -0
- package/dist/query.d.ts +14 -209
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -505
- package/dist/questions.d.ts +32 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +118 -0
- package/dist/reach.d.ts +12 -12
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +182 -136
- package/dist/react.d.ts +5 -2
- package/dist/react.d.ts.map +1 -1
- package/dist/read.d.ts +7 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +17 -0
- package/dist/readiness.d.ts +0 -2
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.d.ts +36 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +136 -0
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +9 -1
- package/dist/refresh.d.ts +6 -4
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +32 -4
- package/dist/replica.d.ts +8 -8
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +50 -15
- package/dist/room-draft.d.ts +4 -3
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +65 -52
- package/dist/room-drafts.d.ts +29 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +216 -0
- package/dist/rows.d.ts +14 -21
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +48 -184
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +11 -8
- package/dist/saves.d.ts +96 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +999 -0
- package/dist/search.d.ts +12 -63
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +9 -52
- package/dist/seed.d.ts +16 -2
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +66 -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/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket.d.ts +43 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +96 -0
- package/dist/source.d.ts +61 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +81 -0
- package/dist/status.d.ts +0 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -6
- 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/records.d.ts +212 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +408 -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/watchers.d.ts +15 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +36 -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 +78 -145
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +117 -367
- package/dist/stored.d.ts +58 -32
- package/dist/stored.d.ts.map +1 -1
- package/dist/stored.js +264 -187
- package/dist/tables.d.ts +107 -25
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +193 -47
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +7 -4
- package/dist/windows.d.ts +1 -12
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -75
- package/dist/wire.d.ts +15 -4
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +6 -1
- package/package.json +2 -2
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/fulltext.d.ts +0 -27
- package/dist/fulltext.d.ts.map +0 -1
- package/dist/fulltext.js +0 -370
- package/dist/words.d.ts +0 -19
- package/dist/words.d.ts.map +0 -1
- package/dist/words.js +0 -156
package/dist/search.d.ts
CHANGED
|
@@ -1,73 +1,22 @@
|
|
|
1
|
-
import type { ProviderRefusal } from './adapter.js';
|
|
2
|
-
import
|
|
3
|
-
import type { Open } from './open.js';
|
|
4
|
-
export type DocumentPart = Open<'fields' | 'sections' | 'preamble' | 'path'>;
|
|
1
|
+
import type { ProviderRefusal, SearchHit } from './adapter.js';
|
|
2
|
+
import type { Failure, Offline } from './outcome.js';
|
|
5
3
|
export type SearchRequest = {
|
|
6
4
|
text: string;
|
|
7
|
-
|
|
8
|
-
collection?: true;
|
|
9
|
-
conversations?: readonly string[];
|
|
10
|
-
limit?: number;
|
|
11
|
-
after?: string;
|
|
12
|
-
total?: true;
|
|
5
|
+
rooms?: readonly string[];
|
|
13
6
|
};
|
|
14
|
-
export type
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
at: readonly [number, number];
|
|
19
|
-
};
|
|
20
|
-
export type DocumentHit = {
|
|
21
|
-
room: string;
|
|
22
|
-
path: string;
|
|
23
|
-
type: string;
|
|
24
|
-
score: number;
|
|
25
|
-
matches: Readonly<Record<string, readonly DocumentPart[]>>;
|
|
26
|
-
snippet?: Snippet<DocumentPart>;
|
|
27
|
-
};
|
|
28
|
-
export type MessageHit = {
|
|
29
|
-
conversation: string;
|
|
30
|
-
identity: string;
|
|
31
|
-
score: number;
|
|
32
|
-
matches: Readonly<Record<string, readonly MessagePart[]>>;
|
|
33
|
-
snippet?: Snippet<MessagePart>;
|
|
34
|
-
};
|
|
35
|
-
export type SearchCoverage = {
|
|
36
|
-
rooms: readonly CoveredRoom[];
|
|
37
|
-
conversations: readonly string[];
|
|
38
|
-
overlay: readonly string[];
|
|
7
|
+
export type { SearchHit } from './adapter.js';
|
|
8
|
+
export type SearchFound = {
|
|
9
|
+
kind: 'found';
|
|
10
|
+
documents: readonly SearchHit[];
|
|
39
11
|
};
|
|
40
|
-
export type
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
export type SearchWindow = SearchHits & {
|
|
45
|
-
next?: string;
|
|
46
|
-
total?: {
|
|
47
|
-
documents: number;
|
|
48
|
-
messages: number;
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
export type SearchPending = SearchHits & {
|
|
52
|
-
pending: readonly PendingRoom[];
|
|
53
|
-
coverage: SearchCoverage;
|
|
54
|
-
};
|
|
55
|
-
export type SearchUndeclared = ProviderRefusal & {
|
|
12
|
+
export type SearchResult = SearchFound | Offline | (ProviderRefusal & {
|
|
13
|
+
kind: 'rejected';
|
|
14
|
+
}) | (ProviderRefusal & {
|
|
56
15
|
kind: 'undeclared';
|
|
57
|
-
};
|
|
58
|
-
export type SearchResult = (SearchWindow & {
|
|
59
|
-
coverage: SearchCoverage;
|
|
60
|
-
}) | SearchPending | SearchUndeclared;
|
|
61
|
-
export declare function undeclaredSearch(): SearchUndeclared;
|
|
62
|
-
export type HitCursor = readonly [number, string, string] | readonly [] | null;
|
|
16
|
+
}) | Failure;
|
|
63
17
|
export type SearchPlan = {
|
|
64
18
|
text: string;
|
|
65
|
-
|
|
66
|
-
collection: boolean;
|
|
67
|
-
conversations: readonly string[] | null;
|
|
68
|
-
limit: number | null;
|
|
69
|
-
after: readonly [HitCursor, HitCursor] | null;
|
|
70
|
-
total: boolean;
|
|
19
|
+
rooms: readonly string[] | null;
|
|
71
20
|
};
|
|
72
21
|
export declare function searchPlanOf(input: unknown): SearchPlan;
|
|
73
22
|
//# sourceMappingURL=search.d.ts.map
|
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAExE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAAC;AAE7E,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,OAAO,GACP,CAAC,eAAe,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACxC,CAAC,eAAe,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GAC1C,OAAO,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAYvD"}
|
package/dist/search.js
CHANGED
|
@@ -1,57 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { decodedCursor } from './windows.js';
|
|
3
|
-
export function undeclaredSearch() {
|
|
4
|
-
return {
|
|
5
|
-
kind: 'undeclared',
|
|
6
|
-
code: 'search-undeclared',
|
|
7
|
-
fields: { name: 'local_search' },
|
|
8
|
-
retryable: false,
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
function hitCursor(input) {
|
|
12
|
-
if (input === null)
|
|
13
|
-
return null;
|
|
14
|
-
if (!Array.isArray(input))
|
|
15
|
-
return undefined;
|
|
16
|
-
if (input.length === 0)
|
|
17
|
-
return [];
|
|
18
|
-
const [score, first, second] = input;
|
|
19
|
-
return input.length === 3 &&
|
|
20
|
-
typeof score === 'number' &&
|
|
21
|
-
typeof first === 'string' &&
|
|
22
|
-
typeof second === 'string'
|
|
23
|
-
? [score, first, second]
|
|
24
|
-
: undefined;
|
|
25
|
-
}
|
|
26
|
-
function searchAfter(input) {
|
|
27
|
-
if (input === undefined)
|
|
28
|
-
return null;
|
|
29
|
-
const decoded = typeof input === 'string' ? decodedCursor(input) : null;
|
|
30
|
-
const documents = decoded?.length === 2 ? hitCursor(decoded[0]) : undefined;
|
|
31
|
-
const messages = decoded?.length === 2 ? hitCursor(decoded[1]) : undefined;
|
|
32
|
-
if (documents === undefined || messages === undefined) {
|
|
33
|
-
invalid('after', 'expects the next an earlier search returned');
|
|
34
|
-
}
|
|
35
|
-
return [documents, messages];
|
|
36
|
-
}
|
|
1
|
+
import { invalid, known, plain } from '@agentshouse/mdmodel';
|
|
37
2
|
export function searchPlanOf(input) {
|
|
38
3
|
if (!plain(input))
|
|
39
4
|
invalid('search', 'expects a search object');
|
|
40
|
-
known(input, ['text', '
|
|
41
|
-
if (typeof input.text !== 'string')
|
|
42
|
-
invalid('text', 'expects
|
|
43
|
-
const
|
|
44
|
-
if (
|
|
45
|
-
(!Array.isArray(
|
|
46
|
-
invalid('
|
|
5
|
+
known(input, ['text', 'rooms'], '');
|
|
6
|
+
if (typeof input.text !== 'string' || input.text.trim() === '')
|
|
7
|
+
invalid('text', 'expects words');
|
|
8
|
+
const rooms = input.rooms;
|
|
9
|
+
if (rooms !== undefined &&
|
|
10
|
+
(!Array.isArray(rooms) || rooms.some((named) => typeof named !== 'string'))) {
|
|
11
|
+
invalid('rooms', 'expects a list of Rooms');
|
|
47
12
|
}
|
|
48
|
-
return {
|
|
49
|
-
text: input.text,
|
|
50
|
-
documents: input.documents,
|
|
51
|
-
collection: flag(input.collection, 'collection'),
|
|
52
|
-
conversations: conversations ?? null,
|
|
53
|
-
limit: limitOf(input.limit),
|
|
54
|
-
after: searchAfter(input.after),
|
|
55
|
-
total: flag(input.total, 'total'),
|
|
56
|
-
};
|
|
13
|
+
return { text: input.text, rooms: rooms ?? null };
|
|
57
14
|
}
|
package/dist/seed.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type
|
|
1
|
+
import type { Cover } from './live.js';
|
|
2
|
+
import { type KeyedResult } from './observation.js';
|
|
3
|
+
import type { Plan, QueryRows } from './query.js';
|
|
4
|
+
import type { Deliver } from './reach.js';
|
|
5
|
+
import type { HeldCover, Store } from './store.js';
|
|
3
6
|
export type EntrySeed = {
|
|
4
7
|
readonly at: Readonly<Record<string, string>>;
|
|
5
8
|
readonly queries: readonly {
|
|
@@ -11,6 +14,17 @@ export type Seeded = {
|
|
|
11
14
|
readonly rows: QueryRows;
|
|
12
15
|
readonly at: Readonly<Record<string, string>>;
|
|
13
16
|
};
|
|
17
|
+
export type Seeding = {
|
|
18
|
+
readonly store: Store;
|
|
19
|
+
reached(room: string, version: string, target: string): boolean;
|
|
20
|
+
listed(): boolean;
|
|
21
|
+
declares(room: string): boolean;
|
|
22
|
+
};
|
|
23
|
+
type SeededWatch = (coverOf: (cover: Cover, held: HeldCover) => Cover, deliver: (message: unknown) => void) => () => void;
|
|
14
24
|
export declare function entrySeedOf(value: unknown): EntrySeed | null;
|
|
15
25
|
export declare function seededResult(seed: Seeded): KeyedResult;
|
|
26
|
+
export declare function seedApplies(seeding: Seeding, plan: Plan, held: HeldCover): Seeded | null;
|
|
27
|
+
export declare function keepEntrySeed(store: Store, entry: EntrySeed): void;
|
|
28
|
+
export declare function watchSeeded(seeding: Seeding, plan: Plan, deliver: Deliver, watch: SeededWatch): () => void;
|
|
29
|
+
export {};
|
|
16
30
|
//# sourceMappingURL=seed.d.ts.map
|
package/dist/seed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAS,KAAK,WAAW,EAAqB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,IAAI,EAA4C,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;CACpF,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAEjG,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAChE,MAAM,IAAI,OAAO,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC,CAAC;AAEF,KAAK,WAAW,GAAG,CACjB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,KAAK,KAAK,EACjD,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAChC,MAAM,IAAI,CAAC;AA0ChB,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAe5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoBtD;AAqBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAOxF;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAMlE;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,GACjB,MAAM,IAAI,CA4BZ"}
|
package/dist/seed.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { queryKey } from '@agentshouse/mdmodel';
|
|
2
|
+
import { whole } from './observation.js';
|
|
1
3
|
import { documentKey } from './rows.js';
|
|
4
|
+
const seedTopic = (key) => `seed\u0000${key}`;
|
|
2
5
|
function plain(value) {
|
|
3
6
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
4
7
|
}
|
|
@@ -73,3 +76,66 @@ export function seededResult(seed) {
|
|
|
73
76
|
keys: seed.rows.documents.map((document) => documentKey(document.room, document.path)),
|
|
74
77
|
};
|
|
75
78
|
}
|
|
79
|
+
function seedRoomHeld(seeding, room, version, held) {
|
|
80
|
+
const stored = held.rooms.get(room);
|
|
81
|
+
return (stored !== undefined && stored.indexed && seeding.reached(room, stored.roomVersion, version));
|
|
82
|
+
}
|
|
83
|
+
function seedHeld(seeding, at, held) {
|
|
84
|
+
return Object.entries(at).every(([room, version]) => (seeding.listed() && !seeding.declares(room) && !held.rooms.has(room)) ||
|
|
85
|
+
seedRoomHeld(seeding, room, version, held));
|
|
86
|
+
}
|
|
87
|
+
export function seedApplies(seeding, plan, held) {
|
|
88
|
+
const { seeds } = seeding.store;
|
|
89
|
+
const seed = seeds.of(plan.key);
|
|
90
|
+
if (seed === undefined)
|
|
91
|
+
return null;
|
|
92
|
+
if (!seedHeld(seeding, seed.at, held))
|
|
93
|
+
return seed;
|
|
94
|
+
seeds.drop(plan.key);
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
function seedBehind(seeding, plan, cover, held) {
|
|
98
|
+
const seed = seedApplies(seeding, plan, held);
|
|
99
|
+
if (seed === null || 'pending' in cover)
|
|
100
|
+
return cover;
|
|
101
|
+
return {
|
|
102
|
+
pending: Object.entries(seed.at)
|
|
103
|
+
.filter(([room, version]) => !seedRoomHeld(seeding, room, version, held))
|
|
104
|
+
.map(([room]) => ({ room, awaits: 'acquisition' })),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function keepEntrySeed(store, entry) {
|
|
108
|
+
for (const { query, rows } of entry.queries) {
|
|
109
|
+
const key = queryKey(query);
|
|
110
|
+
store.seeds.keep(key, { rows, at: entry.at });
|
|
111
|
+
for (const watcher of store.watching(seedTopic(key)))
|
|
112
|
+
watcher.answer(null);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export function watchSeeded(seeding, plan, deliver, watch) {
|
|
116
|
+
const { store } = seeding;
|
|
117
|
+
let seeded = false;
|
|
118
|
+
let pending = true;
|
|
119
|
+
const shown = () => {
|
|
120
|
+
const seed = store.seeds.of(plan.key);
|
|
121
|
+
if (seed === undefined || seeded || !pending)
|
|
122
|
+
return;
|
|
123
|
+
seeded = true;
|
|
124
|
+
deliver(seededResult(seed));
|
|
125
|
+
};
|
|
126
|
+
const watcher = store.watch(seedTopic(plan.key), shown);
|
|
127
|
+
const stop = watch((cover, held) => seedBehind(seeding, plan, cover, held), (message) => {
|
|
128
|
+
const answered = message;
|
|
129
|
+
pending = whole(answered) && 'pending' in answered.result;
|
|
130
|
+
if (pending && store.seeds.of(plan.key) !== undefined) {
|
|
131
|
+
shown();
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
seeded = false;
|
|
135
|
+
deliver(message);
|
|
136
|
+
});
|
|
137
|
+
return () => {
|
|
138
|
+
watcher.stop();
|
|
139
|
+
stop();
|
|
140
|
+
};
|
|
141
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../src/socket/admission.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CAClC,CAAC;AAEF,wBAAgB,eAAe,IAAI,SAAS,CAmC3C"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const STREAMS_HELD = 4;
|
|
2
|
+
const QUEUED_TEXT = 1 << 23;
|
|
3
|
+
export function createAdmission() {
|
|
4
|
+
let streamsFree = STREAMS_HELD;
|
|
5
|
+
let queuedText = 0;
|
|
6
|
+
const installWaiters = [];
|
|
7
|
+
function once(release) {
|
|
8
|
+
let released = false;
|
|
9
|
+
return () => {
|
|
10
|
+
if (released)
|
|
11
|
+
return;
|
|
12
|
+
released = true;
|
|
13
|
+
release();
|
|
14
|
+
for (const admit of installWaiters.splice(0))
|
|
15
|
+
admit();
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
async heldStream() {
|
|
20
|
+
while (streamsFree === 0)
|
|
21
|
+
await new Promise((admit) => installWaiters.push(admit));
|
|
22
|
+
streamsFree -= 1;
|
|
23
|
+
return once(() => {
|
|
24
|
+
streamsFree += 1;
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
async unqueued() {
|
|
28
|
+
while (queuedText >= QUEUED_TEXT) {
|
|
29
|
+
await new Promise((admit) => installWaiters.push(admit));
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
queued(text) {
|
|
33
|
+
queuedText += text;
|
|
34
|
+
return once(() => {
|
|
35
|
+
queuedText -= text;
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answers.d.ts","sourceRoot":"","sources":["../../src/socket/answers.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG;IACpB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;CACtD,CAAC;AAEF,wBAAgB,aAAa,IAAI,OAAO,CAkBvC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function createAnswers() {
|
|
2
|
+
const answering = new Map();
|
|
3
|
+
return {
|
|
4
|
+
awaitingAnswer(locator) {
|
|
5
|
+
answering.get(locator)?.release();
|
|
6
|
+
let release = () => { };
|
|
7
|
+
const answered = new Promise((resolve) => {
|
|
8
|
+
release = resolve;
|
|
9
|
+
});
|
|
10
|
+
const awaited = { answered, release };
|
|
11
|
+
answering.set(locator, awaited);
|
|
12
|
+
return () => {
|
|
13
|
+
if (answering.get(locator) === awaited)
|
|
14
|
+
answering.delete(locator);
|
|
15
|
+
release();
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
answered: (locator) => answering.get(locator)?.answered,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Adapter } from '../adapter.js';
|
|
2
|
+
import type { Reads } from '../bootstrap.js';
|
|
3
|
+
type HeldReads = {
|
|
4
|
+
readonly reads: Reads;
|
|
5
|
+
abort(): void;
|
|
6
|
+
stop(): void;
|
|
7
|
+
};
|
|
8
|
+
export declare function createReads(adapter: Adapter): HeldReads;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=reads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reads.d.ts","sourceRoot":"","sources":["../../src/socket/reads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAiD,MAAM,eAAe,CAAC;AAC5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd,CAAC;AAWF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAuBvD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function readUntil(read, signal) {
|
|
2
|
+
if (signal.aborted)
|
|
3
|
+
return Promise.resolve({ kind: 'transport-uncertainty' });
|
|
4
|
+
return new Promise((resolve, reject) => {
|
|
5
|
+
const stop = () => resolve({ kind: 'transport-uncertainty' });
|
|
6
|
+
signal.addEventListener('abort', stop, { once: true });
|
|
7
|
+
read.then(resolve, reject).finally(() => signal.removeEventListener('abort', stop));
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export function createReads(adapter) {
|
|
11
|
+
let inFlight = new AbortController();
|
|
12
|
+
const refreshed = adapter.refresh?.bind(adapter);
|
|
13
|
+
return {
|
|
14
|
+
reads: {
|
|
15
|
+
bootstrap: (authorized, request) => readUntil(adapter.bootstrap(authorized, request), inFlight.signal),
|
|
16
|
+
...(refreshed === undefined
|
|
17
|
+
? {}
|
|
18
|
+
: {
|
|
19
|
+
refresh: (authorized, request) => readUntil(refreshed(authorized, request), inFlight.signal),
|
|
20
|
+
}),
|
|
21
|
+
reached: (locator, roomVersion, target) => adapter.reached(locator, roomVersion, target),
|
|
22
|
+
},
|
|
23
|
+
abort() {
|
|
24
|
+
inFlight.abort();
|
|
25
|
+
inFlight = new AbortController();
|
|
26
|
+
},
|
|
27
|
+
stop() {
|
|
28
|
+
inFlight.abort();
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
package/dist/socket.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Adapter, ConversationEvent, Discovery, HeldRoom, RoomStreamEvent } from './adapter.js';
|
|
2
|
+
import type { Reads } from './bootstrap.js';
|
|
3
|
+
import { type Admission } from './socket/admission.js';
|
|
4
|
+
import { type Answers } from './socket/answers.js';
|
|
5
|
+
type SocketEvent = {
|
|
6
|
+
readonly kind: 'opened';
|
|
7
|
+
} | {
|
|
8
|
+
readonly kind: 'discovered';
|
|
9
|
+
readonly discovery: Discovery;
|
|
10
|
+
readonly missed: boolean;
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: 'closed';
|
|
13
|
+
readonly revoked: boolean;
|
|
14
|
+
readonly lost: boolean;
|
|
15
|
+
readonly opened: boolean;
|
|
16
|
+
} | Exclude<RoomStreamEvent, {
|
|
17
|
+
kind: 'opened' | 'discovered' | 'closed';
|
|
18
|
+
}>;
|
|
19
|
+
export type RuntimeSocket = Admission & Answers & {
|
|
20
|
+
readonly reads: Reads;
|
|
21
|
+
readonly streamed: boolean;
|
|
22
|
+
follows: Adapter['follows'];
|
|
23
|
+
mutate: Adapter['mutate'];
|
|
24
|
+
binary: Adapter['binary'];
|
|
25
|
+
link: Adapter['link'];
|
|
26
|
+
attach: Adapter['attach'];
|
|
27
|
+
observe(live: () => boolean, listen: (event: SocketEvent) => void): void;
|
|
28
|
+
observeConversations(listen: (event: ConversationEvent) => void): void;
|
|
29
|
+
withdraw(): void;
|
|
30
|
+
isOpen(): boolean;
|
|
31
|
+
isAnnounced(): boolean;
|
|
32
|
+
isHanded(): boolean;
|
|
33
|
+
generation(): number;
|
|
34
|
+
naming(): boolean;
|
|
35
|
+
hand(rooms: readonly HeldRoom[]): void;
|
|
36
|
+
name(room: HeldRoom): void;
|
|
37
|
+
named(): void;
|
|
38
|
+
abortReads(): void;
|
|
39
|
+
stopReads(): void;
|
|
40
|
+
};
|
|
41
|
+
export declare function createSocket(adapter: Adapter): RuntimeSocket;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGlE,KAAK,WAAW,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACxF;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,GACD,OAAO,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAA;CAAE,CAAC,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG,SAAS,GACnC,OAAO,GAAG;IACR,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,oBAAoB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;IACvE,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,IAAI,OAAO,CAAC;IAClB,WAAW,IAAI,OAAO,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC;IACpB,UAAU,IAAI,MAAM,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC;IAClB,IAAI,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvC,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,UAAU,IAAI,IAAI,CAAC;IACnB,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEJ,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAsF5D"}
|
package/dist/socket.js
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { createAdmission } from './socket/admission.js';
|
|
2
|
+
import { createAnswers } from './socket/answers.js';
|
|
3
|
+
import { createReads } from './socket/reads.js';
|
|
4
|
+
export function createSocket(adapter) {
|
|
5
|
+
const held = createReads(adapter);
|
|
6
|
+
const admission = createAdmission();
|
|
7
|
+
const answers = createAnswers();
|
|
8
|
+
let withdrawStream;
|
|
9
|
+
let withdrawConversations;
|
|
10
|
+
let socketOpen = false;
|
|
11
|
+
let announced = false;
|
|
12
|
+
let missedChange = false;
|
|
13
|
+
let handed = false;
|
|
14
|
+
let naming = 0;
|
|
15
|
+
let generation = 0;
|
|
16
|
+
function received(event, listen) {
|
|
17
|
+
if (event.kind === 'opened') {
|
|
18
|
+
socketOpen = true;
|
|
19
|
+
announced = false;
|
|
20
|
+
handed = false;
|
|
21
|
+
naming = 0;
|
|
22
|
+
generation += 1;
|
|
23
|
+
listen(event);
|
|
24
|
+
}
|
|
25
|
+
else if (event.kind === 'discovered') {
|
|
26
|
+
if (!socketOpen)
|
|
27
|
+
return;
|
|
28
|
+
announced = true;
|
|
29
|
+
const missed = missedChange;
|
|
30
|
+
missedChange = false;
|
|
31
|
+
listen({ ...event, missed });
|
|
32
|
+
}
|
|
33
|
+
else if (event.kind === 'closed') {
|
|
34
|
+
const opened = announced;
|
|
35
|
+
socketOpen = false;
|
|
36
|
+
announced = false;
|
|
37
|
+
missedChange ||= event.authorityChanged;
|
|
38
|
+
handed = false;
|
|
39
|
+
naming = 0;
|
|
40
|
+
listen({ kind: 'closed', revoked: event.revoked, lost: event.lost, opened });
|
|
41
|
+
}
|
|
42
|
+
else
|
|
43
|
+
listen(event);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...admission,
|
|
47
|
+
...answers,
|
|
48
|
+
reads: held.reads,
|
|
49
|
+
streamed: adapter.roomStream !== undefined,
|
|
50
|
+
follows: (locator, roomVersion, next) => adapter.follows(locator, roomVersion, next),
|
|
51
|
+
mutate: (authorized, request, keepUpload) => adapter.mutate(authorized, request, keepUpload),
|
|
52
|
+
binary: (authorized, request) => adapter.binary(authorized, request),
|
|
53
|
+
link: (authorized, request) => adapter.link(authorized, request),
|
|
54
|
+
attach: (authorized, request) => adapter.attach(authorized, request),
|
|
55
|
+
observe(live, listen) {
|
|
56
|
+
const stream = adapter.roomStream;
|
|
57
|
+
if (stream === undefined || withdrawStream !== undefined)
|
|
58
|
+
return;
|
|
59
|
+
withdrawStream = stream.observe((event) => {
|
|
60
|
+
if (live())
|
|
61
|
+
received(event, listen);
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
observeConversations(listen) {
|
|
65
|
+
const stream = adapter.conversations;
|
|
66
|
+
if (stream === undefined || withdrawConversations !== undefined)
|
|
67
|
+
return;
|
|
68
|
+
withdrawConversations = stream.observe(listen);
|
|
69
|
+
},
|
|
70
|
+
withdraw() {
|
|
71
|
+
withdrawStream?.();
|
|
72
|
+
withdrawStream = undefined;
|
|
73
|
+
withdrawConversations?.();
|
|
74
|
+
withdrawConversations = undefined;
|
|
75
|
+
},
|
|
76
|
+
isOpen: () => socketOpen,
|
|
77
|
+
isAnnounced: () => announced,
|
|
78
|
+
isHanded: () => handed,
|
|
79
|
+
generation: () => generation,
|
|
80
|
+
naming: () => naming !== 0,
|
|
81
|
+
hand(rooms) {
|
|
82
|
+
naming += 1;
|
|
83
|
+
adapter.roomStream?.hold(rooms);
|
|
84
|
+
handed = true;
|
|
85
|
+
},
|
|
86
|
+
name(room) {
|
|
87
|
+
naming += 1;
|
|
88
|
+
adapter.roomStream?.hold([room]);
|
|
89
|
+
},
|
|
90
|
+
named() {
|
|
91
|
+
naming = Math.max(0, naming - 1);
|
|
92
|
+
},
|
|
93
|
+
abortReads: held.abort,
|
|
94
|
+
stopReads: held.stop,
|
|
95
|
+
};
|
|
96
|
+
}
|
package/dist/source.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type HouseSource = {
|
|
2
|
+
readonly kind: 'request';
|
|
3
|
+
readonly request: string;
|
|
4
|
+
readonly agentFunction: RequestAgentFunction | null;
|
|
5
|
+
readonly requester: {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly room: boolean;
|
|
8
|
+
};
|
|
9
|
+
readonly room: {
|
|
10
|
+
readonly ref: string;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
};
|
|
13
|
+
readonly approved: string | null;
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'mail';
|
|
16
|
+
readonly request: string;
|
|
17
|
+
readonly room: string;
|
|
18
|
+
readonly report: boolean;
|
|
19
|
+
readonly agent: string;
|
|
20
|
+
readonly owner: string;
|
|
21
|
+
readonly approved: string | null;
|
|
22
|
+
readonly declined: string | null;
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: 'trigger';
|
|
25
|
+
readonly customer: boolean;
|
|
26
|
+
readonly trigger: string;
|
|
27
|
+
readonly room: {
|
|
28
|
+
readonly ref: string;
|
|
29
|
+
readonly name: string;
|
|
30
|
+
};
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'conversation';
|
|
33
|
+
readonly conversation: {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
};
|
|
37
|
+
readonly agent: string;
|
|
38
|
+
} | {
|
|
39
|
+
readonly kind: 'declined';
|
|
40
|
+
readonly agent: string;
|
|
41
|
+
readonly owner: string;
|
|
42
|
+
};
|
|
43
|
+
export type ChatRequest = {
|
|
44
|
+
readonly request: string;
|
|
45
|
+
readonly room: string;
|
|
46
|
+
readonly message?: string;
|
|
47
|
+
};
|
|
48
|
+
export type ChatRoomRequest = {
|
|
49
|
+
readonly request: string;
|
|
50
|
+
readonly room: {
|
|
51
|
+
readonly ref: string;
|
|
52
|
+
readonly name: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
type RequestAgentFunction = {
|
|
56
|
+
readonly name: string;
|
|
57
|
+
readonly version: number;
|
|
58
|
+
};
|
|
59
|
+
export declare function sourceOf(value: unknown, sender: string | null): HouseSource | null;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAoChF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CA4ClF"}
|