@agentshouse/mdruntime 0.1.0-c3903a68dcbbf → 0.1.0-c4478f1a5ac2a
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 +196 -97
- package/README.md +22 -12
- package/dist/adapter.d.ts +149 -64
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +1 -9
- package/dist/attached-model.d.ts +11 -0
- package/dist/attached-model.d.ts.map +1 -0
- package/dist/attached-model.js +47 -0
- package/dist/attempt.d.ts +16 -0
- package/dist/attempt.d.ts.map +1 -0
- package/dist/attempt.js +70 -0
- package/dist/binary.d.ts +23 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +20 -6
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +110 -38
- package/dist/change-set.d.ts +2 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +49 -21
- package/dist/change.d.ts +15 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +26 -1
- package/dist/chat/acts.d.ts +33 -0
- package/dist/chat/acts.d.ts.map +1 -0
- package/dist/chat/acts.js +36 -0
- package/dist/chat/context.d.ts +3 -0
- package/dist/chat/context.d.ts.map +1 -0
- package/dist/chat/context.js +10 -0
- package/dist/chat/input.d.ts +9 -0
- package/dist/chat/input.d.ts.map +1 -0
- package/dist/chat/input.js +99 -0
- package/dist/chat/kit.d.ts +60 -0
- package/dist/chat/kit.d.ts.map +1 -0
- package/dist/chat/kit.js +123 -0
- package/dist/chat/lasting.d.ts +6 -0
- package/dist/chat/lasting.d.ts.map +1 -0
- package/dist/chat/lasting.js +19 -0
- package/dist/chat/list.d.ts +26 -0
- package/dist/chat/list.d.ts.map +1 -0
- package/dist/chat/list.js +62 -0
- package/dist/chat/markdown.d.ts +20 -0
- package/dist/chat/markdown.d.ts.map +1 -0
- package/dist/chat/markdown.js +188 -0
- package/dist/chat/message.d.ts +6 -0
- package/dist/chat/message.d.ts.map +1 -0
- package/dist/chat/message.js +192 -0
- package/dist/chat/messages.d.ts +21 -0
- package/dist/chat/messages.d.ts.map +1 -0
- package/dist/chat/messages.js +151 -0
- package/dist/chat/name.d.ts +6 -0
- package/dist/chat/name.d.ts.map +1 -0
- package/dist/chat/name.js +37 -0
- package/dist/chat/opened.d.ts +11 -0
- package/dist/chat/opened.d.ts.map +1 -0
- package/dist/chat/opened.js +17 -0
- package/dist/chat/overlay.d.ts +31 -0
- package/dist/chat/overlay.d.ts.map +1 -0
- package/dist/chat/overlay.js +97 -0
- package/dist/chat/parts.d.ts +57 -0
- package/dist/chat/parts.d.ts.map +1 -0
- package/dist/chat/parts.js +119 -0
- package/dist/chat/process.d.ts +20 -0
- package/dist/chat/process.d.ts.map +1 -0
- package/dist/chat/process.js +32 -0
- package/dist/chat/provider.d.ts +63 -0
- package/dist/chat/provider.d.ts.map +1 -0
- package/dist/chat/provider.js +620 -0
- package/dist/chat/question.d.ts +9 -0
- package/dist/chat/question.d.ts.map +1 -0
- package/dist/chat/question.js +80 -0
- package/dist/chat/questions.d.ts +31 -0
- package/dist/chat/questions.d.ts.map +1 -0
- package/dist/chat/questions.js +111 -0
- package/dist/chat/read.d.ts +5 -0
- package/dist/chat/read.d.ts.map +1 -0
- package/dist/chat/read.js +13 -0
- package/dist/chat/ready.d.ts +33 -0
- package/dist/chat/ready.d.ts.map +1 -0
- package/dist/chat/ready.js +91 -0
- package/dist/chat/style.d.ts +4 -0
- package/dist/chat/style.d.ts.map +1 -0
- package/dist/chat/style.js +302 -0
- package/dist/chat.d.ts +14 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +8 -0
- package/dist/client.d.ts +23 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +69 -32
- package/dist/collection.d.ts +21 -14
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +270 -32
- package/dist/connection.d.ts +36 -38
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1605 -841
- package/dist/conversation.d.ts +43 -19
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +523 -210
- package/dist/entry.d.ts +17 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +156 -0
- package/dist/expectation.d.ts +21 -0
- package/dist/expectation.d.ts.map +1 -0
- package/dist/expectation.js +70 -0
- package/dist/failure.d.ts +13 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +19 -0
- package/dist/fence.d.ts +6 -0
- package/dist/fence.d.ts.map +1 -0
- package/dist/fence.js +10 -0
- package/dist/host.d.ts +11 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +54 -69
- package/dist/identity.d.ts +5 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +19 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/memory.d.ts +15 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +147 -47
- package/dist/model.d.ts +14 -12
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +15 -3
- package/dist/observation.d.ts +6 -1
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +38 -17
- package/dist/open.d.ts +2 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +1 -0
- package/dist/outcome.d.ts +35 -22
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +42 -1
- package/dist/overlay.d.ts +15 -3
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +94 -77
- package/dist/paths.d.ts +0 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +0 -16
- package/dist/query.d.ts +40 -6
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +78 -36
- package/dist/reach.d.ts +42 -0
- package/dist/reach.d.ts.map +1 -0
- package/dist/reach.js +294 -0
- package/dist/react.d.ts +41 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +64 -0
- package/dist/read-side.d.ts +16 -5
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +405 -137
- package/dist/recovery.d.ts +25 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +197 -0
- package/dist/refresh.d.ts +12 -1
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +45 -36
- package/dist/replica.d.ts +10 -7
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +122 -79
- package/dist/room-draft.d.ts +29 -9
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +137 -26
- package/dist/rows.d.ts +10 -14
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +85 -50
- package/dist/save.d.ts +32 -3
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +465 -93
- package/dist/search.d.ts +31 -8
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +109 -44
- package/dist/shared.d.ts +11 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +368 -0
- package/dist/status.d.ts +2 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -8
- package/dist/store.d.ts +71 -32
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +509 -221
- package/dist/turn.d.ts +7 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +45 -0
- package/dist/wire.d.ts +58 -19
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +65 -67
- package/package.json +31 -7
- package/dist/attachment.d.ts +0 -3
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -8
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
export type { AcceptedMessage, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ChangeAuthor, ContractUnavailable, ConversationAction,
|
|
1
|
+
export type { AcceptedMessage, ActionDeclaration, ActionRequest, ActionResult, Adapter, AdapterFailure, Authorization, BinaryFile, BinaryRequest, BinaryResult, ReferrerScope, BootstrapPage, BootstrapRequest, BootstrapResult, Capability, ChangeAuthor, ContractUnavailable, ConversationAction, ConversationAgents, ConversationEvent, ConversationHistories, ConversationHistoryPage, ConversationHistoryRequest, ConversationMessage, ConversationStream, DiscoverResult, DiscoveredRoom, Discovery, HistoryAuthor, HistoryRequest, HistoryResult, HistoryRetention, HistoryRevision, HeldContent, HeldRoom, KeptReceipt, ListedConversation, MdModelIdentity, Member, MutationRequest, MutationResult, PageToken, ProviderLimit, ProviderRefusal, RefreshPage, RefreshRequest, RefreshResult, Retention, RetryableRefusal, RevokedAuthorization, RoomModels, RoomNotReadable, RoomStream, RoomStreamEvent, RoomVersionAt, ServiceMode, ServiceModeSignal, StreamReceipts, TransportUncertainty, TurnContext, TurnOperation, TypedSelection, } from './adapter.js';
|
|
2
2
|
export type { Change, ChangeBatch, Precondition, WrittenBy } from './change.js';
|
|
3
|
-
export type { ChatDraft, ChatDraftSurface, ConversationEntry, ConversationOptions, ConversationSurface, ConversationView,
|
|
3
|
+
export type { ChatDraft, ChatDraftSurface, ConversationAgent, ConversationEntry, ConversationOptions, ConversationState, ConversationSurface, ConversationView, RunningTurn, } from './conversation.js';
|
|
4
4
|
export type { ChatDraftFile, FileDeclaration } from './file.js';
|
|
5
|
-
export type { AppRoom,
|
|
5
|
+
export type { AppRoom, AppTypedSelection, BinaryFileSurface, ConnectionRefusal, ConnectionRefusalCode, HistoryQuery, MdRuntime, MdRuntimeOptions, PresentationSurface, RoomDraftSurface, RoomSchemas, SavedRoomDraft, SaveResult, } from './connection.js';
|
|
6
6
|
export type { Observation } from './observation.js';
|
|
7
|
-
export type {
|
|
7
|
+
export type { BinaryAnswer, CallResult, Failure, HistoryAnswer, Offline, QueueEntry, Submission, } from './outcome.js';
|
|
8
|
+
export type { BinaryFileRecord, BinaryReference } from './binary.js';
|
|
9
|
+
export type { RuntimeError } from './failure.js';
|
|
8
10
|
export type { ChangedPart, FieldValue, ReturnReason, RoomDraft, RoomDraftCreation, RoomDraftParts, RoomDraftWrite, } from './room-draft.js';
|
|
9
11
|
export type { SaveRefusal } from './save.js';
|
|
10
|
-
export type { DocumentHit, DocumentPart, MessageHit, SearchRequest, SearchResult, } from './search.js';
|
|
12
|
+
export type { DocumentHit, DocumentPart, MessageHit, PendingConversation, SearchCoverage, SearchHits, SearchPending, SearchRequest, SearchResult, } from './search.js';
|
|
13
|
+
export { departure } from './change.js';
|
|
14
|
+
export { SESSION_STARTED } from './conversation.js';
|
|
11
15
|
export { changeBatchIdentity } from './identity.js';
|
|
12
|
-
export {
|
|
16
|
+
export { attempts, identities, intentOf, type Answered, type Attempt, type Attempts, type Identities, } from './attempt.js';
|
|
17
|
+
export { expectedList, expecting, type ExpectedOf, type Expecting } from './expectation.js';
|
|
13
18
|
export type { RuntimeShell } from './durability.js';
|
|
14
19
|
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';
|
|
20
|
+
export type { Awaits, Backlink, CoveredRoom, Direction, DocumentQuery, DocumentResult, Filter, GroupQuery, GroupResult, Key, LocalQuery, OrderOptions, PendingResult, PendingRoom, Predicate, QueryCoverage, QueryDocument, QueryGroup, QueryResult, QueryRows, Related, Select, Value, Where, } from './query.js';
|
|
16
21
|
export type { MdType, ModelIdentity, ModelSnapshot, ModelState, ModelResult, TypesResult, ValidationReceipt, } from './model.js';
|
|
17
22
|
export type { OperationScopes, ReplicaAdmission, ScopedRefusal } from './adapter.js';
|
|
18
23
|
//# 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,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,OAAO,EACP,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
+
export { departure } from './change.js';
|
|
2
|
+
export { SESSION_STARTED } from './conversation.js';
|
|
1
3
|
export { changeBatchIdentity } from './identity.js';
|
|
2
|
-
export {
|
|
4
|
+
export { attempts, identities, intentOf, } from './attempt.js';
|
|
5
|
+
export { expectedList, expecting } from './expectation.js';
|
package/dist/memory.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import type { ModelResult } from './model.js';
|
|
2
|
-
import { type AcceptedMessage, type ActionResult, type Adapter, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type
|
|
2
|
+
import { type AcceptedMessage, type ActionResult, type Adapter, type BinaryFile, type Capability, type ConversationAction, type ConversationEvent, type DiscoveredRoom, type HeadChange, type ListedConversation, type Member, type ProviderLimit, type Retention, type ServiceMode } from './adapter.js';
|
|
3
3
|
export type MemoryRoom = DiscoveredRoom & {
|
|
4
4
|
model?: ModelResult;
|
|
5
5
|
selectionModel?: ModelResult;
|
|
6
6
|
documents?: Readonly<Record<string, string>>;
|
|
7
7
|
revisions?: Readonly<Record<string, string>>;
|
|
8
8
|
changes?: Readonly<Record<string, HeadChange>>;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
binaryFiles?: Readonly<Record<string, BinaryFile>>;
|
|
10
|
+
blobs?: Readonly<Record<string, Blob>>;
|
|
11
11
|
};
|
|
12
12
|
export type MemoryConversation = {
|
|
13
13
|
conversation: string;
|
|
14
|
+
listed?: Omit<ListedConversation, 'conversation'>;
|
|
14
15
|
messages?: readonly AcceptedMessage[];
|
|
15
16
|
outcomes?: Partial<Record<ConversationAction, ActionResult>>;
|
|
16
17
|
};
|
|
@@ -19,20 +20,27 @@ export type MemoryAdapterOptions = {
|
|
|
19
20
|
conversations?: readonly MemoryConversation[];
|
|
20
21
|
historyPageSize?: number;
|
|
21
22
|
pageSize?: number;
|
|
22
|
-
mdModel?: MdModelIdentity;
|
|
23
|
-
supportedVersions?: readonly number[];
|
|
24
23
|
capabilities?: readonly Capability[];
|
|
25
24
|
providerLimits?: readonly ProviderLimit[];
|
|
26
25
|
retention?: Retention;
|
|
26
|
+
member?: Member;
|
|
27
|
+
unopened?: boolean;
|
|
28
|
+
exhaustiveDiscovery?: true;
|
|
27
29
|
};
|
|
28
30
|
export type MemoryAdapter = Adapter & {
|
|
29
31
|
setRooms(rooms: readonly MemoryRoom[]): void;
|
|
30
32
|
setConversations(conversations: readonly MemoryConversation[]): void;
|
|
31
33
|
script(operation: keyof Adapter, answer: unknown): void;
|
|
32
|
-
|
|
34
|
+
open(): void;
|
|
35
|
+
close(revoked?: boolean): void;
|
|
36
|
+
expire(locators: readonly string[]): void;
|
|
37
|
+
notifyRoomVersion(notification: {
|
|
38
|
+
locator: string;
|
|
39
|
+
roomVersion: string;
|
|
40
|
+
}): void;
|
|
33
41
|
notifyConversation(event: ConversationEvent): void;
|
|
34
42
|
notifyServiceMode(mode: ServiceMode): void;
|
|
35
|
-
|
|
43
|
+
heldRooms(): readonly string[];
|
|
36
44
|
replicatedConversations(): readonly string[];
|
|
37
45
|
};
|
|
38
46
|
export declare function createMemoryAdapter(options?: MemoryAdapterOptions): MemoryAdapter;
|
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,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { ROOM_CONTRACT_VERSION, } from './adapter.js';
|
|
2
|
-
import { MD_MODEL } from './collection.js';
|
|
3
1
|
import { sameChange } from './overlay.js';
|
|
4
2
|
const FIXTURE_RETENTION = {
|
|
5
3
|
history: { kind: 'duration', seconds: 1 },
|
|
6
|
-
outcome:
|
|
4
|
+
outcome: 604_800,
|
|
7
5
|
refreshHorizon: 1,
|
|
8
6
|
};
|
|
9
7
|
function declaredRetention(value) {
|
|
@@ -15,6 +13,19 @@ function declaredRetention(value) {
|
|
|
15
13
|
}
|
|
16
14
|
throw new Error('history retention duration must be a finite positive number of seconds');
|
|
17
15
|
}
|
|
16
|
+
const MODEL_ABSENT = { kind: 'model-unavailable', reason: 'not-readable' };
|
|
17
|
+
function modelsOf(room) {
|
|
18
|
+
return {
|
|
19
|
+
collection: room.model ?? MODEL_ABSENT,
|
|
20
|
+
...(room.typedSelection === undefined
|
|
21
|
+
? {}
|
|
22
|
+
: { selection: room.selectionModel ?? MODEL_ABSENT }),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function changedModels(room, from) {
|
|
26
|
+
const now = modelsOf(room);
|
|
27
|
+
return JSON.stringify(now) === JSON.stringify(modelsOf(from)) ? undefined : now;
|
|
28
|
+
}
|
|
18
29
|
function named(source, paths) {
|
|
19
30
|
const taken = {};
|
|
20
31
|
for (const path of paths) {
|
|
@@ -31,8 +42,6 @@ async function resolveScript(answer, fallback, request) {
|
|
|
31
42
|
}
|
|
32
43
|
export function createMemoryAdapter(options = {}) {
|
|
33
44
|
let rooms = options.rooms === undefined ? [] : [...options.rooms];
|
|
34
|
-
const mdModel = options.mdModel ?? MD_MODEL;
|
|
35
|
-
const supportedVersions = options.supportedVersions ?? [ROOM_CONTRACT_VERSION];
|
|
36
45
|
const capabilities = options.capabilities ?? [];
|
|
37
46
|
const providerLimits = options.providerLimits ?? [];
|
|
38
47
|
const retention = declaredRetention(options.retention);
|
|
@@ -46,8 +55,10 @@ export function createMemoryAdapter(options = {}) {
|
|
|
46
55
|
const scripted = new Map();
|
|
47
56
|
const unsealed = new Map();
|
|
48
57
|
const sealed = new Set();
|
|
58
|
+
const sentTurns = new Map();
|
|
49
59
|
const historyPageSize = options.historyPageSize;
|
|
50
|
-
let
|
|
60
|
+
let held = [];
|
|
61
|
+
let expiring = [];
|
|
51
62
|
let replicated = [];
|
|
52
63
|
let issued = 0;
|
|
53
64
|
function scriptConversations(entries) {
|
|
@@ -89,37 +100,38 @@ export function createMemoryAdapter(options = {}) {
|
|
|
89
100
|
return {
|
|
90
101
|
name: room.name,
|
|
91
102
|
locator: room.locator,
|
|
103
|
+
handle: room.handle,
|
|
92
104
|
roomVersion: room.roomVersion,
|
|
93
105
|
operations: room.operations,
|
|
94
106
|
replica: room.replica,
|
|
95
|
-
attachedModel: room.attachedModel,
|
|
96
107
|
...(room.typedSelection === undefined ? {} : { typedSelection: room.typedSelection }),
|
|
97
|
-
...(room.untypedFolders === undefined ? {} : { untypedFolders: room.untypedFolders }),
|
|
98
108
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
99
109
|
};
|
|
100
110
|
}
|
|
101
|
-
function page(room,
|
|
111
|
+
function page(room, after) {
|
|
102
112
|
const paths = Object.keys(room.documents ?? {}).sort();
|
|
113
|
+
const opening = after === undefined;
|
|
114
|
+
const from = opening ? 0 : paths.filter((path) => path <= after).length;
|
|
103
115
|
const size = pageSize ?? paths.length;
|
|
104
116
|
const taken = paths.slice(from, from + size);
|
|
105
117
|
const next = from + taken.length;
|
|
106
|
-
const targets =
|
|
118
|
+
const targets = opening ? Object.keys(room.binaryFiles ?? {}) : [];
|
|
107
119
|
return {
|
|
108
120
|
kind: 'bootstrap',
|
|
109
121
|
roomVersion: room.roomVersion,
|
|
122
|
+
...(opening ? { models: modelsOf(room) } : {}),
|
|
110
123
|
documents: named(room.documents ?? {}, taken),
|
|
111
|
-
revisions: named(room.revisions ?? {}, taken),
|
|
124
|
+
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
112
125
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
113
|
-
|
|
114
|
-
...(
|
|
115
|
-
...(next < paths.length ? { pageToken: String(next) } : {}),
|
|
126
|
+
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
127
|
+
...(next < paths.length ? { pageToken: taken.at(-1) } : {}),
|
|
116
128
|
};
|
|
117
129
|
}
|
|
118
130
|
function advancement(room, from, at) {
|
|
119
131
|
const current = room.documents ?? {};
|
|
120
132
|
const previous = from.documents ?? {};
|
|
121
|
-
const currentTargets = new Set(room.
|
|
122
|
-
const previousTargets = new Set(from.
|
|
133
|
+
const currentTargets = new Set(Object.keys(room.binaryFiles ?? {}));
|
|
134
|
+
const previousTargets = new Set(Object.keys(from.binaryFiles ?? {}));
|
|
123
135
|
const headMoved = (path) => room.revisions?.[path] !== from.revisions?.[path] ||
|
|
124
136
|
!sameChange(room.changes?.[path], from.changes?.[path]);
|
|
125
137
|
const changed = Object.keys(current)
|
|
@@ -135,22 +147,21 @@ export function createMemoryAdapter(options = {}) {
|
|
|
135
147
|
const targets = opening
|
|
136
148
|
? [...currentTargets].filter((target) => !previousTargets.has(target) || headMoved(target))
|
|
137
149
|
: [];
|
|
138
|
-
const
|
|
139
|
-
const declared = opening && JSON.stringify(attachments) !== JSON.stringify(from.attachments ?? []);
|
|
150
|
+
const models = opening ? changedModels(room, from) : undefined;
|
|
140
151
|
return {
|
|
141
152
|
kind: 'net-advancement',
|
|
142
153
|
roomVersion: room.roomVersion,
|
|
154
|
+
...(models === undefined ? {} : { models }),
|
|
143
155
|
documents: named(current, taken),
|
|
144
|
-
revisions: named(room.revisions ?? {}, taken),
|
|
156
|
+
revisions: named(room.revisions ?? {}, [...taken, ...targets]),
|
|
145
157
|
changes: named(room.changes ?? {}, [...taken, ...targets]),
|
|
146
|
-
|
|
158
|
+
binaryFiles: named(room.binaryFiles ?? {}, targets),
|
|
147
159
|
removals: opening
|
|
148
160
|
? [
|
|
149
161
|
...Object.keys(previous).filter((path) => !(path in current) && !currentTargets.has(path)),
|
|
150
162
|
...[...previousTargets].filter((target) => !currentTargets.has(target) && !(target in current)),
|
|
151
163
|
].sort()
|
|
152
164
|
: [],
|
|
153
|
-
...(declared ? { attachments } : {}),
|
|
154
165
|
...(pageToken === undefined ? {} : { pageToken }),
|
|
155
166
|
};
|
|
156
167
|
}
|
|
@@ -171,7 +182,7 @@ export function createMemoryAdapter(options = {}) {
|
|
|
171
182
|
function historiesOf(input) {
|
|
172
183
|
const asked = input?.conversations;
|
|
173
184
|
if (!Array.isArray(asked))
|
|
174
|
-
return { kind: 'rejected', code: 'invalid_request', fields: {} };
|
|
185
|
+
return { kind: 'rejected', code: 'invalid_request', fields: {}, retryable: false };
|
|
175
186
|
const histories = [];
|
|
176
187
|
for (const entry of asked) {
|
|
177
188
|
const conversation = typeof entry.conversation === 'string' ? scripted.get(entry.conversation) : undefined;
|
|
@@ -199,21 +210,32 @@ export function createMemoryAdapter(options = {}) {
|
|
|
199
210
|
const named = typeof input.conversation === 'string' ? input.conversation : '';
|
|
200
211
|
const conversation = scripted.get(named);
|
|
201
212
|
if (conversation === undefined) {
|
|
202
|
-
return {
|
|
213
|
+
return {
|
|
214
|
+
kind: 'rejected',
|
|
215
|
+
code: 'unknown-conversation',
|
|
216
|
+
fields: { conversation: named },
|
|
217
|
+
retryable: false,
|
|
218
|
+
};
|
|
203
219
|
}
|
|
204
220
|
const outcome = conversation.outcomes?.[name];
|
|
205
221
|
if (outcome !== undefined)
|
|
206
222
|
return outcome;
|
|
207
223
|
if (name === 'conversation.send') {
|
|
224
|
+
const operation = typeof input.operation_id === 'string' ? input.operation_id : null;
|
|
225
|
+
const answered = operation === null ? undefined : sentTurns.get(operation);
|
|
226
|
+
if (answered !== undefined)
|
|
227
|
+
return { kind: 'action', result: { turn: answered } };
|
|
208
228
|
issued += 1;
|
|
209
229
|
const turn = `turn-${issued}`;
|
|
210
230
|
unsealed.set(turn, named);
|
|
231
|
+
if (operation !== null)
|
|
232
|
+
sentTurns.set(operation, turn);
|
|
211
233
|
return { kind: 'action', result: { turn } };
|
|
212
234
|
}
|
|
213
235
|
if (name === 'conversation.cancel') {
|
|
214
236
|
const turn = typeof input.turn === 'string' ? input.turn : '';
|
|
215
237
|
if (sealed.has(turn) || !unsealed.has(turn)) {
|
|
216
|
-
return { kind: 'rejected', code: 'turn-sealed', fields: { turn } };
|
|
238
|
+
return { kind: 'rejected', code: 'turn-sealed', fields: { turn }, retryable: false };
|
|
217
239
|
}
|
|
218
240
|
unsealed.delete(turn);
|
|
219
241
|
return { kind: 'action', result: { turn, cancelled: true } };
|
|
@@ -222,18 +244,23 @@ export function createMemoryAdapter(options = {}) {
|
|
|
222
244
|
scripted.delete(named);
|
|
223
245
|
return { kind: 'action', result: { conversation: named } };
|
|
224
246
|
}
|
|
247
|
+
function announceList() {
|
|
248
|
+
const entries = [...scripted.values()].flatMap(({ conversation, listed }) => listed === undefined ? [] : [{ conversation, ...listed }]);
|
|
249
|
+
for (const listener of listeners)
|
|
250
|
+
listener({ kind: 'list', entries });
|
|
251
|
+
}
|
|
225
252
|
function discovery() {
|
|
226
253
|
return {
|
|
227
254
|
kind: 'discovery',
|
|
228
|
-
supportedVersions,
|
|
229
|
-
mdModel,
|
|
230
255
|
rooms: rooms.map(declared),
|
|
231
256
|
capabilities,
|
|
232
257
|
providerLimits,
|
|
233
258
|
retention,
|
|
259
|
+
...(options.member === undefined ? {} : { member: options.member }),
|
|
234
260
|
};
|
|
235
261
|
}
|
|
236
262
|
return {
|
|
263
|
+
...(options.exhaustiveDiscovery === undefined ? {} : { exhaustiveDiscovery: true }),
|
|
237
264
|
setRooms(next) {
|
|
238
265
|
rooms = [...next];
|
|
239
266
|
retain(rooms);
|
|
@@ -241,9 +268,21 @@ export function createMemoryAdapter(options = {}) {
|
|
|
241
268
|
setConversations(next) {
|
|
242
269
|
scriptConversations(next);
|
|
243
270
|
},
|
|
244
|
-
|
|
271
|
+
open() {
|
|
272
|
+
announceList();
|
|
273
|
+
for (const observer of observers)
|
|
274
|
+
observer({ kind: 'opened' });
|
|
275
|
+
},
|
|
276
|
+
close(revoked = false) {
|
|
245
277
|
for (const observer of observers)
|
|
246
|
-
observer(
|
|
278
|
+
observer({ kind: 'closed', revoked });
|
|
279
|
+
},
|
|
280
|
+
expire(locators) {
|
|
281
|
+
expiring = [...locators];
|
|
282
|
+
},
|
|
283
|
+
notifyRoomVersion({ locator, roomVersion }) {
|
|
284
|
+
for (const observer of observers)
|
|
285
|
+
observer({ kind: 'room-version', locator, roomVersion });
|
|
247
286
|
},
|
|
248
287
|
notifyConversation(event) {
|
|
249
288
|
if (event.kind === 'accepted-message') {
|
|
@@ -257,8 +296,8 @@ export function createMemoryAdapter(options = {}) {
|
|
|
257
296
|
for (const observer of modeObservers)
|
|
258
297
|
observer(mode);
|
|
259
298
|
},
|
|
260
|
-
|
|
261
|
-
return
|
|
299
|
+
heldRooms() {
|
|
300
|
+
return held;
|
|
262
301
|
},
|
|
263
302
|
replicatedConversations() {
|
|
264
303
|
return replicated;
|
|
@@ -282,12 +321,46 @@ export function createMemoryAdapter(options = {}) {
|
|
|
282
321
|
};
|
|
283
322
|
},
|
|
284
323
|
},
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
324
|
+
roomStream: {
|
|
325
|
+
hold(asked) {
|
|
326
|
+
held = asked.map((room) => room.locator);
|
|
327
|
+
const expired = expiring.filter((locator) => held.includes(locator));
|
|
328
|
+
expiring = [];
|
|
329
|
+
const moved = asked.flatMap((room) => {
|
|
330
|
+
const current = rooms.find((entry) => entry.locator === room.locator);
|
|
331
|
+
return current === undefined ||
|
|
332
|
+
expired.includes(room.locator) ||
|
|
333
|
+
current.roomVersion === room.roomVersion
|
|
334
|
+
? []
|
|
335
|
+
: [{ locator: room.locator, roomVersion: current.roomVersion }];
|
|
336
|
+
});
|
|
337
|
+
queueMicrotask(() => {
|
|
338
|
+
for (const observer of observers) {
|
|
339
|
+
for (const room of moved)
|
|
340
|
+
observer({ kind: 'room-version', ...room });
|
|
341
|
+
observer({ kind: 'opening', expired });
|
|
342
|
+
}
|
|
343
|
+
});
|
|
288
344
|
},
|
|
345
|
+
reopen() {
|
|
346
|
+
queueMicrotask(() => {
|
|
347
|
+
for (const observer of observers)
|
|
348
|
+
observer({ kind: 'closed', revoked: false });
|
|
349
|
+
});
|
|
350
|
+
},
|
|
351
|
+
published() { },
|
|
289
352
|
observe(notify) {
|
|
290
353
|
observers.add(notify);
|
|
354
|
+
queueMicrotask(() => {
|
|
355
|
+
if (!observers.has(notify))
|
|
356
|
+
return;
|
|
357
|
+
if (options.unopened === true) {
|
|
358
|
+
notify({ kind: 'closed', revoked: false });
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
announceList();
|
|
362
|
+
notify({ kind: 'opened' });
|
|
363
|
+
});
|
|
291
364
|
return () => {
|
|
292
365
|
observers.delete(notify);
|
|
293
366
|
};
|
|
@@ -299,13 +372,6 @@ export function createMemoryAdapter(options = {}) {
|
|
|
299
372
|
else
|
|
300
373
|
scripts[operation] = answer;
|
|
301
374
|
},
|
|
302
|
-
async model(_authorization, request) {
|
|
303
|
-
return resolveScript(scripts.model, () => {
|
|
304
|
-
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
305
|
-
const answer = request.attached === 'collection' ? room?.model : room?.selectionModel;
|
|
306
|
-
return answer ?? { kind: 'model-unavailable', reason: 'not-readable' };
|
|
307
|
-
}, request);
|
|
308
|
-
},
|
|
309
375
|
async authorize() {
|
|
310
376
|
return resolveScript(scripts.authorize, () => ({}), undefined);
|
|
311
377
|
},
|
|
@@ -318,13 +384,21 @@ export function createMemoryAdapter(options = {}) {
|
|
|
318
384
|
});
|
|
319
385
|
},
|
|
320
386
|
reached,
|
|
387
|
+
follows(locator, roomVersion, next) {
|
|
388
|
+
const scripted = scripts.follows;
|
|
389
|
+
if (typeof scripted === 'boolean')
|
|
390
|
+
return scripted;
|
|
391
|
+
if (scripted !== undefined)
|
|
392
|
+
return scripted(locator, roomVersion, next);
|
|
393
|
+
return true;
|
|
394
|
+
},
|
|
321
395
|
async bootstrap(_authorization, request) {
|
|
322
396
|
return resolveScript(scripts.bootstrap, () => {
|
|
323
397
|
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
324
398
|
if (room === undefined) {
|
|
325
399
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
326
400
|
}
|
|
327
|
-
return page(room, request.pageToken
|
|
401
|
+
return page(room, request.pageToken);
|
|
328
402
|
}, request).then((answer) => note(request.locator, answer));
|
|
329
403
|
},
|
|
330
404
|
async refresh(_authorization, request) {
|
|
@@ -342,10 +416,6 @@ export function createMemoryAdapter(options = {}) {
|
|
|
342
416
|
}
|
|
343
417
|
return advancement(continuation.room, continuation.from, continuation.at);
|
|
344
418
|
}
|
|
345
|
-
if (request.minPosition !== undefined &&
|
|
346
|
-
!reached(room.locator, room.roomVersion, request.minPosition)) {
|
|
347
|
-
return { kind: 'retryable-refusal', code: 'replica_behind', fields: {} };
|
|
348
|
-
}
|
|
349
419
|
if (request.fromRoomVersion === room.roomVersion) {
|
|
350
420
|
return { kind: 'still-current' };
|
|
351
421
|
}
|
|
@@ -361,7 +431,13 @@ export function createMemoryAdapter(options = {}) {
|
|
|
361
431
|
if (room === undefined) {
|
|
362
432
|
return { kind: 'room-not-readable', locator: request.locator };
|
|
363
433
|
}
|
|
364
|
-
return {
|
|
434
|
+
return {
|
|
435
|
+
kind: 'rejected',
|
|
436
|
+
code: 'unscripted-mutation',
|
|
437
|
+
fields: {},
|
|
438
|
+
retryable: false,
|
|
439
|
+
affected: {},
|
|
440
|
+
};
|
|
365
441
|
}, request).then((answer) => note(request.locator, answer));
|
|
366
442
|
},
|
|
367
443
|
async history(_authorization, request) {
|
|
@@ -376,11 +452,35 @@ export function createMemoryAdapter(options = {}) {
|
|
|
376
452
|
};
|
|
377
453
|
}, request);
|
|
378
454
|
},
|
|
455
|
+
async binary(_authorization, request) {
|
|
456
|
+
return resolveScript(scripts.binary, () => {
|
|
457
|
+
if (request.kind === 'reference') {
|
|
458
|
+
return { kind: 'rejected', code: 'unscripted-binary', fields: {}, retryable: false };
|
|
459
|
+
}
|
|
460
|
+
const room = rooms.find((entry) => entry.locator === request.locator);
|
|
461
|
+
if (room === undefined)
|
|
462
|
+
return { kind: 'room-not-readable', locator: request.locator };
|
|
463
|
+
const blob = room.blobs?.[request.path];
|
|
464
|
+
return blob === undefined
|
|
465
|
+
? { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false }
|
|
466
|
+
: { kind: 'binary', blob };
|
|
467
|
+
}, request);
|
|
468
|
+
},
|
|
469
|
+
referrerScope(referrer) {
|
|
470
|
+
if (typeof referrer !== 'object' || referrer === null)
|
|
471
|
+
return null;
|
|
472
|
+
const { room, path, message } = referrer;
|
|
473
|
+
if (typeof message === 'string')
|
|
474
|
+
return { kind: 'conversations' };
|
|
475
|
+
if (typeof room !== 'string')
|
|
476
|
+
return null;
|
|
477
|
+
return { kind: 'room', locator: room, ...(typeof path === 'string' ? { path } : {}) };
|
|
478
|
+
},
|
|
379
479
|
async action(_authorization, request) {
|
|
380
480
|
return resolveScript(scripts.action, () => {
|
|
381
481
|
if (request.name.startsWith('conversation.'))
|
|
382
482
|
return conversationAction(request);
|
|
383
|
-
return { kind: 'rejected', code: 'unscripted-action', fields: {} };
|
|
483
|
+
return { kind: 'rejected', code: 'unscripted-action', fields: {}, retryable: false };
|
|
384
484
|
}, request).then((answer) => {
|
|
385
485
|
if (answer.kind === 'action' && answer.at !== undefined)
|
|
386
486
|
note(answer.at.locator, answer.at);
|
package/dist/model.d.ts
CHANGED
|
@@ -1,31 +1,27 @@
|
|
|
1
|
-
import type { Definition,
|
|
1
|
+
import type { Definition, ValueFacts, VerifiedModel } from '@agentshouse/mdmodel';
|
|
2
|
+
import type { Open } from './open.js';
|
|
2
3
|
export type ModelIdentity = {
|
|
3
4
|
identity: string;
|
|
4
5
|
version: string;
|
|
5
6
|
};
|
|
6
7
|
export type ModelSnapshot = ModelIdentity & {
|
|
7
8
|
schema: string | null;
|
|
9
|
+
revision: string | null;
|
|
8
10
|
};
|
|
9
|
-
export type ModelUnavailableReason = 'not-readable' | 'revoked' | 'not-acquired' | '
|
|
11
|
+
export type ModelUnavailableReason = Open<'not-readable' | 'revoked' | 'not-acquired' | 'invalid'>;
|
|
10
12
|
export type ModelResult = {
|
|
11
13
|
kind: 'model';
|
|
12
14
|
snapshot: ModelSnapshot;
|
|
13
15
|
} | {
|
|
14
16
|
kind: 'model-unavailable';
|
|
15
17
|
reason: ModelUnavailableReason;
|
|
16
|
-
} | {
|
|
17
|
-
kind: 'transport-uncertainty';
|
|
18
|
-
} | {
|
|
19
|
-
kind: 'revoked-authorization';
|
|
20
|
-
};
|
|
21
|
-
export type MdType = {
|
|
22
|
-
name: string;
|
|
23
|
-
fields: Readonly<Record<string, FieldSpec>>;
|
|
24
|
-
sections: Readonly<Record<string, SectionSpec>>;
|
|
25
18
|
};
|
|
19
|
+
export type MdType = Definition;
|
|
26
20
|
export type ModelState = {
|
|
27
21
|
status: 'unavailable';
|
|
28
22
|
reason: ModelUnavailableReason;
|
|
23
|
+
schema?: string | null;
|
|
24
|
+
revision?: string | null;
|
|
29
25
|
} | {
|
|
30
26
|
status: 'current' | 'cached';
|
|
31
27
|
snapshot: ModelSnapshot;
|
|
@@ -35,21 +31,27 @@ export type ModelState = {
|
|
|
35
31
|
export type TypesResult = {
|
|
36
32
|
status: 'unavailable';
|
|
37
33
|
reason: ModelUnavailableReason;
|
|
34
|
+
schema?: string | null;
|
|
35
|
+
revision?: string | null;
|
|
38
36
|
} | {
|
|
39
37
|
status: 'current' | 'cached';
|
|
40
38
|
identity: string;
|
|
41
39
|
version: string;
|
|
42
40
|
verifiedWith: ModelIdentity;
|
|
43
41
|
types: readonly MdType[];
|
|
42
|
+
schema: string | null;
|
|
43
|
+
revision: string | null;
|
|
44
44
|
};
|
|
45
45
|
export type ValidationReceipt = {
|
|
46
46
|
identity: string;
|
|
47
47
|
version: string;
|
|
48
|
-
source: 'current' | 'cached'
|
|
48
|
+
source: Open<'current' | 'cached'>;
|
|
49
49
|
};
|
|
50
50
|
export declare const NO_MODEL: ModelState;
|
|
51
51
|
export declare function definitionOf(state: ModelState, type: string | undefined): Definition | undefined;
|
|
52
52
|
export declare function modelTypes(state: ModelState): TypesResult;
|
|
53
53
|
export declare function cached(state: ModelState): ModelState;
|
|
54
54
|
export declare function sameModel(left: ModelIdentity, right: ModelIdentity): boolean;
|
|
55
|
+
export declare function sameTyping(left: ModelState, right: ModelState): boolean;
|
|
56
|
+
export declare function referenceField(facts: ValueFacts | undefined): boolean;
|
|
55
57
|
//# sourceMappingURL=model.d.ts.map
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAC/F,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,CAAC;AACnG,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAChC,MAAM,MAAM,UAAU,GAClB;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAC/B,CAAC;AACN,MAAM,MAAM,WAAW,GACnB;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,aAAa,CAAC;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AACN,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;CACpC,CAAC;AACF,eAAO,MAAM,QAAQ,EAAE,UAA8D,CAAC;AACtF,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAGhG;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgBzD;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEpD;AACD,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5E;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CASvE;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAErE"}
|
package/dist/model.js
CHANGED
|
@@ -12,9 +12,9 @@ export function modelTypes(state) {
|
|
|
12
12
|
identity: state.snapshot.identity,
|
|
13
13
|
version: state.snapshot.version,
|
|
14
14
|
verifiedWith: { ...state.verifiedWith },
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
schema: state.snapshot.schema,
|
|
16
|
+
revision: state.snapshot.revision,
|
|
17
|
+
types: structuredClone(Object.values(state.types).sort((left, right) => left.name < right.name ? -1 : left.name > right.name ? 1 : 0)),
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
export function cached(state) {
|
|
@@ -23,3 +23,15 @@ export function cached(state) {
|
|
|
23
23
|
export function sameModel(left, right) {
|
|
24
24
|
return left.identity === right.identity && left.version === right.version;
|
|
25
25
|
}
|
|
26
|
+
export function sameTyping(left, right) {
|
|
27
|
+
if (left === right)
|
|
28
|
+
return true;
|
|
29
|
+
if (left.status === 'unavailable' || right.status === 'unavailable') {
|
|
30
|
+
return left.status === right.status;
|
|
31
|
+
}
|
|
32
|
+
return (left.snapshot.schema === right.snapshot.schema &&
|
|
33
|
+
sameModel(left.verifiedWith, right.verifiedWith));
|
|
34
|
+
}
|
|
35
|
+
export function referenceField(facts) {
|
|
36
|
+
return facts?.reference !== undefined || facts?.items?.reference !== undefined;
|
|
37
|
+
}
|
package/dist/observation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { QueryDocument, QueryGroup, QueryResult } from './query.js';
|
|
1
|
+
import type { QueryCoverage, QueryDocument, QueryGroup, QueryResult } from './query.js';
|
|
2
2
|
export type Observation<T> = {
|
|
3
3
|
current(): T;
|
|
4
4
|
subscribe(listener: (value: T) => void): () => void;
|
|
@@ -13,13 +13,18 @@ export type QueryChange = {
|
|
|
13
13
|
changed: readonly (readonly [RowKey, QueryDocument | QueryGroup])[];
|
|
14
14
|
removed: readonly RowKey[];
|
|
15
15
|
order: readonly RowKey[] | null;
|
|
16
|
+
coverage?: QueryCoverage;
|
|
16
17
|
};
|
|
18
|
+
export type QueryMessage = KeyedResult | QueryChange;
|
|
17
19
|
export type Observed = {
|
|
18
20
|
observation: Observation<unknown>;
|
|
19
21
|
receive(message: unknown): void;
|
|
20
22
|
end(): void;
|
|
21
23
|
};
|
|
22
24
|
export declare function rowsOf(result: QueryResult): readonly (QueryDocument | QueryGroup)[];
|
|
25
|
+
export declare function whole(message: QueryMessage): message is KeyedResult;
|
|
26
|
+
export declare function applied(keyed: KeyedResult, message: QueryMessage): KeyedResult;
|
|
23
27
|
export declare function observed(first: unknown, stop: () => void, keyed: boolean): Observed;
|
|
24
28
|
export declare function opened(watch: (deliver: (message: unknown) => void) => () => void, keyed: boolean): Promise<Observation<unknown>>;
|
|
29
|
+
export declare function observing<Topic extends string>(watch: (topic: Topic, input: readonly unknown[], deliver: (message: unknown) => void) => () => void): (topic: Topic, ...input: unknown[]) => Promise<Observation<unknown>>;
|
|
25
30
|
//# sourceMappingURL=observation.d.ts.map
|