@agentshouse/mdruntime 0.1.0-alpha.26 → 0.1.0-alpha.27
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 +12 -4
- package/dist/client.d.ts +13 -11
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +57 -59
- package/dist/client.js.map +1 -1
- package/dist/connection.d.ts +17 -10
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +94 -88
- package/dist/connection.js.map +1 -1
- package/dist/conversation.d.ts +1 -1
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +2 -2
- package/dist/conversation.js.map +1 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +17 -39
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- 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/read-side.d.ts +2 -1
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +73 -21
- package/dist/read-side.js.map +1 -1
- package/dist/wire.d.ts +2 -1
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +2 -1
- package/dist/wire.js.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -11,8 +11,14 @@ Rooms, Slots, Query, Search, Observe, Types, Room Draft, Save, History, Call, Lo
|
|
|
11
11
|
storage loss, the reported persistence answer, deployment facts, Sync Status, reauthorization,
|
|
12
12
|
conversation, the chat draft, and Presentation State.
|
|
13
13
|
|
|
14
|
+
Every `observe` resolves, once its first value has arrived, to a handle:
|
|
15
|
+
`current()` is the latest complete value, `subscribe(listener)` hears each later
|
|
16
|
+
value whole and returns its unsubscribe, and `close()` ends the observation.
|
|
17
|
+
Closing the port ends every handle and rejects every pending call and
|
|
18
|
+
observation; a client that reconnects observes again.
|
|
19
|
+
|
|
14
20
|
Each conversation a Provider card names is held complete in the browser.
|
|
15
|
-
Observe one with `observe('conversation', id, { limit }
|
|
21
|
+
Observe one with `observe('conversation', id, { limit })`: the view
|
|
16
22
|
holds its latest `limit` messages, or all of them, oldest first, with the
|
|
17
23
|
growing text and the session summary while it is viewed, and its chat draft.
|
|
18
24
|
`chatDraft.write` and `chatDraft.discard` keep what the App Creator composes;
|
|
@@ -30,7 +36,7 @@ surface returns the authorization, performs a request the App's code
|
|
|
30
36
|
composes, or exposes the browser store.
|
|
31
37
|
|
|
32
38
|
Read deployment facts with `deploymentFacts()` and observe replacements with
|
|
33
|
-
`observe('deployment-facts'
|
|
39
|
+
`observe('deployment-facts')`. Interpret the opaque value using the
|
|
34
40
|
host's contract. [R038](https://github.com/agentshouse/mdruntime/blob/main/docs/requirements/ledger.md#r038--runtime-host-and-remote-client)
|
|
35
41
|
owns their boundary.
|
|
36
42
|
|
|
@@ -39,8 +45,10 @@ ships in no bundle.
|
|
|
39
45
|
|
|
40
46
|
## Local Query rules
|
|
41
47
|
|
|
42
|
-
`query(q)` answers once from local state; `observe('query', q
|
|
43
|
-
|
|
48
|
+
`query(q)` answers once from local state; `observe('query', q)` holds the whole
|
|
49
|
+
result and hears it again only when it changes, keeping every unchanged Document
|
|
50
|
+
the same object, so a component can tell what changed by identity. A query is
|
|
51
|
+
data:
|
|
44
52
|
|
|
45
53
|
- **Filter.** `rooms` names Room locators and defaults to every Room. `types`
|
|
46
54
|
names MD Types, and `any` names the untyped Documents. `pathPrefix` is a
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AppRoom, AppSlot, ConnectionRefusal, HistoryQuery, RoomTypes, SavedRoomDraft, SaveResult } from './connection.js';
|
|
2
2
|
import type { HistoryResult } from './adapter.js';
|
|
3
3
|
import type { ChatDraft, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
|
|
4
|
+
import { type Observation } from './observation.js';
|
|
4
5
|
import type { CallResult, QueueEntry, SubmissionOutcome } from './outcome.js';
|
|
5
6
|
import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult } from './query.js';
|
|
6
7
|
import type { RoomDraft, RoomDraftParts, RoomDraftWrite } from './room-draft.js';
|
|
@@ -51,20 +52,21 @@ export type MdRuntimeClient = {
|
|
|
51
52
|
persistence(): Promise<boolean>;
|
|
52
53
|
deploymentFacts(): Promise<unknown>;
|
|
53
54
|
observe: {
|
|
54
|
-
(topic: 'deployment-facts'
|
|
55
|
-
(topic: 'rooms'
|
|
56
|
-
(topic: 'connection-refusal'
|
|
57
|
-
(topic: 'storage-loss'
|
|
58
|
-
(topic: 'sync-status'
|
|
59
|
-
(topic: 'query', query: DocumentQuery
|
|
60
|
-
(topic: 'query', query: GroupQuery
|
|
61
|
-
(topic: 'queue', locator: string
|
|
62
|
-
(topic: 'room-drafts'
|
|
63
|
-
(topic: 'presentation'
|
|
64
|
-
(topic: 'conversation', conversation: string, options: ConversationOptions
|
|
55
|
+
(topic: 'deployment-facts'): Promise<Observation<unknown>>;
|
|
56
|
+
(topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;
|
|
57
|
+
(topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;
|
|
58
|
+
(topic: 'storage-loss'): Promise<Observation<string | null>>;
|
|
59
|
+
(topic: 'sync-status'): Promise<Observation<SyncStatus>>;
|
|
60
|
+
(topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult>>;
|
|
61
|
+
(topic: 'query', query: GroupQuery): Promise<Observation<GroupResult>>;
|
|
62
|
+
(topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;
|
|
63
|
+
(topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;
|
|
64
|
+
(topic: 'presentation'): Promise<Observation<unknown>>;
|
|
65
|
+
(topic: 'conversation', conversation: string, options: ConversationOptions): Promise<Observation<ConversationView>>;
|
|
65
66
|
};
|
|
66
67
|
reauthorize(): Promise<void>;
|
|
67
68
|
};
|
|
68
69
|
export declare function connectMdRuntime(port: RuntimePort): MdRuntimeClient;
|
|
70
|
+
export type { Observation } from './observation.js';
|
|
69
71
|
export type { RuntimePort } from './wire.js';
|
|
70
72
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,OAAO,EACP,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,33 +1,53 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { observed } from './observation.js';
|
|
2
|
+
import { answer, AUTHORIZATION_ENDED, carried, envelope, PORT_CLOSED, PROTOCOL_MISMATCH } from './wire.js';
|
|
2
3
|
export function connectMdRuntime(port) {
|
|
3
4
|
let sequence = 0;
|
|
4
5
|
let refusal = null;
|
|
5
|
-
let ended =
|
|
6
|
+
let ended = null;
|
|
6
7
|
const calls = new Map();
|
|
7
|
-
const
|
|
8
|
-
const
|
|
8
|
+
const opening = new Map();
|
|
9
|
+
const observations = new Map();
|
|
9
10
|
const send = (message)=>{
|
|
10
11
|
port.postMessage(envelope(message));
|
|
11
12
|
};
|
|
13
|
+
function begin(id, topic, first) {
|
|
14
|
+
const handle = observed(first, ()=>{
|
|
15
|
+
observations.delete(id);
|
|
16
|
+
if (refusal === null) send({
|
|
17
|
+
kind: 'stop',
|
|
18
|
+
id
|
|
19
|
+
});
|
|
20
|
+
}, topic === 'query');
|
|
21
|
+
observations.set(id, {
|
|
22
|
+
topic,
|
|
23
|
+
handle
|
|
24
|
+
});
|
|
25
|
+
return handle.observation;
|
|
26
|
+
}
|
|
12
27
|
function refuse(reported) {
|
|
13
28
|
refusal = reported;
|
|
14
|
-
for (const
|
|
15
|
-
|
|
29
|
+
for (const { topic, handle } of observations.values()){
|
|
30
|
+
if (topic === 'connection-refusal') handle.receive(reported);
|
|
31
|
+
}
|
|
16
32
|
const failure = new Error(reported.reason);
|
|
33
|
+
for (const [id, waiting] of opening){
|
|
34
|
+
if (waiting.topic === 'connection-refusal') waiting.settle(begin(id, waiting.topic, reported));
|
|
35
|
+
else waiting.fail(failure);
|
|
36
|
+
}
|
|
37
|
+
opening.clear();
|
|
17
38
|
for (const waiting of calls.values())waiting.fail(failure);
|
|
18
39
|
calls.clear();
|
|
19
|
-
for (const listener of listeners.values()){
|
|
20
|
-
if (listener.topic === 'connection-refusal') listener.notify(reported);
|
|
21
|
-
}
|
|
22
40
|
}
|
|
23
|
-
function end() {
|
|
24
|
-
ended
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
41
|
+
function end(reason) {
|
|
42
|
+
if (ended !== null) return;
|
|
43
|
+
ended = reason;
|
|
44
|
+
const failure = new Error(reason);
|
|
45
|
+
for (const waiting of opening.values())waiting.fail(failure);
|
|
46
|
+
opening.clear();
|
|
28
47
|
for (const waiting of calls.values())waiting.fail(failure);
|
|
29
48
|
calls.clear();
|
|
30
|
-
|
|
49
|
+
for (const { handle } of observations.values())handle.end();
|
|
50
|
+
observations.clear();
|
|
31
51
|
}
|
|
32
52
|
port.addEventListener('message', (event)=>{
|
|
33
53
|
const wire = carried(event.data);
|
|
@@ -43,34 +63,35 @@ export function connectMdRuntime(port) {
|
|
|
43
63
|
return;
|
|
44
64
|
}
|
|
45
65
|
if (message.kind === 'ended') {
|
|
46
|
-
end();
|
|
66
|
+
end(AUTHORIZATION_ENDED);
|
|
47
67
|
return;
|
|
48
68
|
}
|
|
49
69
|
if (message.kind === 'event') {
|
|
50
|
-
|
|
70
|
+
observations.get(message.id)?.handle.receive(message.value);
|
|
51
71
|
return;
|
|
52
72
|
}
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
if (message.kind === 'failure')
|
|
57
|
-
|
|
58
|
-
subscribing.fail(new Error(message.message));
|
|
59
|
-
} else subscribing.settle();
|
|
73
|
+
const waiting = opening.get(message.id);
|
|
74
|
+
if (waiting !== undefined) {
|
|
75
|
+
opening.delete(message.id);
|
|
76
|
+
if (message.kind === 'failure') waiting.fail(new Error(message.message));
|
|
77
|
+
else waiting.settle(begin(message.id, waiting.topic, message.value));
|
|
60
78
|
return;
|
|
61
79
|
}
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
80
|
+
const called = calls.get(message.id);
|
|
81
|
+
if (called === undefined) return;
|
|
64
82
|
calls.delete(message.id);
|
|
65
|
-
if (message.kind === 'failure')
|
|
66
|
-
else
|
|
83
|
+
if (message.kind === 'failure') called.fail(new Error(message.message));
|
|
84
|
+
else called.settle(message.value);
|
|
85
|
+
});
|
|
86
|
+
port.addEventListener('close', ()=>{
|
|
87
|
+
end(PORT_CLOSED);
|
|
67
88
|
});
|
|
68
89
|
port.start();
|
|
69
90
|
send({
|
|
70
91
|
kind: 'hello'
|
|
71
92
|
});
|
|
72
93
|
function ask(member, input) {
|
|
73
|
-
if (ended) return Promise.reject(new Error(
|
|
94
|
+
if (ended !== null) return Promise.reject(new Error(ended));
|
|
74
95
|
if (refusal !== null) return Promise.reject(new Error(refusal.reason));
|
|
75
96
|
const id = sequence += 1;
|
|
76
97
|
return new Promise((settle, fail)=>{
|
|
@@ -86,27 +107,16 @@ export function connectMdRuntime(port) {
|
|
|
86
107
|
});
|
|
87
108
|
});
|
|
88
109
|
}
|
|
89
|
-
function watch(topic, input
|
|
90
|
-
if (ended) return Promise.reject(new Error(
|
|
110
|
+
function watch(topic, input) {
|
|
111
|
+
if (ended !== null) return Promise.reject(new Error(ended));
|
|
91
112
|
const id = sequence += 1;
|
|
92
|
-
listeners.set(id, {
|
|
93
|
-
topic,
|
|
94
|
-
notify
|
|
95
|
-
});
|
|
96
|
-
const end = ()=>{
|
|
97
|
-
if (!listeners.delete(id)) return;
|
|
98
|
-
if (refusal === null) send({
|
|
99
|
-
kind: 'stop',
|
|
100
|
-
id
|
|
101
|
-
});
|
|
102
|
-
};
|
|
103
113
|
if (refusal !== null) {
|
|
104
|
-
|
|
105
|
-
return Promise.resolve(end);
|
|
114
|
+
return topic === 'connection-refusal' ? Promise.resolve(begin(id, topic, refusal)) : Promise.reject(new Error(refusal.reason));
|
|
106
115
|
}
|
|
107
116
|
return new Promise((settle, fail)=>{
|
|
108
|
-
|
|
109
|
-
|
|
117
|
+
opening.set(id, {
|
|
118
|
+
topic,
|
|
119
|
+
settle,
|
|
110
120
|
fail
|
|
111
121
|
});
|
|
112
122
|
send({
|
|
@@ -213,19 +223,7 @@ export function connectMdRuntime(port) {
|
|
|
213
223
|
storageLoss: ()=>ask('storageLoss', []),
|
|
214
224
|
persistence: ()=>ask('persistence', []),
|
|
215
225
|
deploymentFacts: ()=>ask('deploymentFacts', []),
|
|
216
|
-
observe (topic,
|
|
217
|
-
if (topic === 'conversation') {
|
|
218
|
-
return watch(topic, [
|
|
219
|
-
second,
|
|
220
|
-
third
|
|
221
|
-
], fourth);
|
|
222
|
-
}
|
|
223
|
-
const positional = topic === 'query' || topic === 'queue';
|
|
224
|
-
const notify = positional ? third : second;
|
|
225
|
-
return watch(topic, positional ? [
|
|
226
|
-
second
|
|
227
|
-
] : [], notify);
|
|
228
|
-
},
|
|
226
|
+
observe: (topic, ...input)=>watch(topic, input),
|
|
229
227
|
reauthorize: ()=>ask('reauthorize', [])
|
|
230
228
|
};
|
|
231
229
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/client.ts"],"sourcesContent":["import type {\n AppRoom,\n AppSlot,\n ConnectionRefusal,\n HistoryQuery,\n RoomTypes,\n SavedRoomDraft,\n SaveResult,\n} from './connection.js';\nimport type { HistoryResult } from './adapter.js';\nimport type {\n ChatDraft,\n ConversationEntry,\n ConversationOptions,\n ConversationView,\n} from './conversation.js';\nimport type { CallResult, QueueEntry, SubmissionOutcome } from './outcome.js';\nimport type { DocumentQuery, DocumentResult, GroupQuery, GroupResult } from './query.js';\nimport type { RoomDraft, RoomDraftParts, RoomDraftWrite } from './room-draft.js';\nimport type { SearchRequest, SearchResult } from './search.js';\nimport type { SyncStatus } from './status.js';\nimport {\n answer,\n AUTHORIZATION_ENDED,\n carried,\n envelope,\n PROTOCOL_MISMATCH,\n type RuntimePort,\n type WireMember,\n type WireRequest,\n type WireTopic,\n} from './wire.js';\n\nexport type MdRuntimeClient = {\n rooms(): Promise<readonly AppRoom[]>;\n slots(): Promise<readonly AppSlot[]>;\n query: {\n (query: DocumentQuery): Promise<DocumentResult>;\n (query: GroupQuery): Promise<GroupResult>;\n };\n search(request: SearchRequest): Promise<SearchResult>;\n types(locator: string): Promise<RoomTypes>;\n syncStatus(): Promise<SyncStatus>;\n roomDraft: {\n list(): Promise<readonly RoomDraft[]>;\n read(room: string, path: string): Promise<RoomDraft | null>;\n write(\n room: string,\n path: string,\n revision: string | null,\n parts: RoomDraftParts,\n ): Promise<RoomDraftWrite>;\n discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;\n };\n save(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;\n outcome(identifier: string): Promise<SubmissionOutcome | null>;\n presentation: {\n read(): Promise<unknown>;\n write(value: unknown): Promise<void>;\n };\n conversation: {\n list(): Promise<readonly ConversationEntry[]>;\n read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;\n create(input: unknown): Promise<CallResult>;\n send(conversation: string): Promise<CallResult>;\n answer(conversation: string, answer: unknown): Promise<CallResult>;\n interrupt(conversation: string): Promise<CallResult>;\n kill(conversation: string): Promise<CallResult>;\n cancel(conversation: string, turn: string): Promise<CallResult>;\n delete(conversation: string): Promise<CallResult>;\n };\n chatDraft: {\n write(conversation: string, draft: ChatDraft): Promise<void>;\n discard(conversation: string): Promise<void>;\n };\n history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryResult>;\n call(name: string, input: unknown): Promise<CallResult>;\n log(): Promise<string>;\n storageLoss(): Promise<string | null>;\n persistence(): Promise<boolean>;\n deploymentFacts(): Promise<unknown>;\n observe: {\n (topic: 'deployment-facts', listener: (value: unknown) => void): Promise<() => void>;\n (topic: 'rooms', listener: (rooms: readonly AppRoom[]) => void): Promise<() => void>;\n (\n topic: 'connection-refusal',\n listener: (refusal: ConnectionRefusal | null) => void,\n ): Promise<() => void>;\n (topic: 'storage-loss', listener: (statement: string | null) => void): Promise<() => void>;\n (topic: 'sync-status', listener: (status: SyncStatus) => void): Promise<() => void>;\n (\n topic: 'query',\n query: DocumentQuery,\n listener: (result: DocumentResult) => void,\n ): Promise<() => void>;\n (\n topic: 'query',\n query: GroupQuery,\n listener: (result: GroupResult) => void,\n ): Promise<() => void>;\n (\n topic: 'queue',\n locator: string,\n listener: (entries: readonly QueueEntry[]) => void,\n ): Promise<() => void>;\n (\n topic: 'room-drafts',\n listener: (roomDrafts: readonly RoomDraft[]) => void,\n ): Promise<() => void>;\n (topic: 'presentation', listener: (value: unknown) => void): Promise<() => void>;\n (\n topic: 'conversation',\n conversation: string,\n options: ConversationOptions,\n listener: (view: ConversationView) => void,\n ): Promise<() => void>;\n };\n reauthorize(): Promise<void>;\n};\n\nexport function connectMdRuntime(port: RuntimePort): MdRuntimeClient {\n let sequence = 0;\n let refusal: ConnectionRefusal | null = null;\n let ended = false;\n const calls = new Map<\n number,\n { settle: (value: unknown) => void; fail: (error: Error) => void }\n >();\n const acks = new Map<number, { settle: () => void; fail: (error: Error) => void }>();\n const listeners = new Map<number, { topic: WireTopic; notify: (value: unknown) => void }>();\n\n const send = (message: WireRequest) => {\n port.postMessage(envelope(message));\n };\n\n function refuse(reported: ConnectionRefusal) {\n refusal = reported;\n for (const waiting of acks.values()) waiting.settle();\n acks.clear();\n const failure = new Error(reported.reason);\n for (const waiting of calls.values()) waiting.fail(failure);\n calls.clear();\n for (const listener of listeners.values()) {\n if (listener.topic === 'connection-refusal') listener.notify(reported);\n }\n }\n\n function end() {\n ended = true;\n const failure = new Error(AUTHORIZATION_ENDED);\n for (const waiting of acks.values()) waiting.fail(failure);\n acks.clear();\n for (const waiting of calls.values()) waiting.fail(failure);\n calls.clear();\n listeners.clear();\n }\n\n port.addEventListener('message', (event) => {\n const wire = carried(event.data);\n if (wire === null) return;\n if (!wire.matching) {\n refuse(PROTOCOL_MISMATCH);\n return;\n }\n const message = answer(wire.message);\n if (message === null) return;\n if (message.kind === 'refusal') {\n refuse(message.refusal);\n return;\n }\n if (message.kind === 'ended') {\n end();\n return;\n }\n if (message.kind === 'event') {\n listeners.get(message.id)?.notify(message.value);\n return;\n }\n const subscribing = acks.get(message.id);\n if (subscribing !== undefined) {\n acks.delete(message.id);\n if (message.kind === 'failure') {\n listeners.delete(message.id);\n subscribing.fail(new Error(message.message));\n } else subscribing.settle();\n return;\n }\n const waiting = calls.get(message.id);\n if (waiting === undefined) return;\n calls.delete(message.id);\n if (message.kind === 'failure') waiting.fail(new Error(message.message));\n else waiting.settle(message.value);\n });\n port.start();\n send({ kind: 'hello' });\n\n function ask<T>(member: WireMember, input: readonly unknown[]): Promise<T> {\n if (ended) return Promise.reject(new Error(AUTHORIZATION_ENDED));\n if (refusal !== null) return Promise.reject(new Error(refusal.reason));\n const id = (sequence += 1);\n return new Promise<T>((settle, fail) => {\n calls.set(id, { settle: settle as (value: unknown) => void, fail });\n send({ kind: 'call', id, member, input });\n });\n }\n\n function watch(\n topic: WireTopic,\n input: readonly unknown[],\n notify: (value: unknown) => void,\n ): Promise<() => void> {\n if (ended) return Promise.reject(new Error(AUTHORIZATION_ENDED));\n const id = (sequence += 1);\n listeners.set(id, { topic, notify });\n const end = () => {\n if (!listeners.delete(id)) return;\n if (refusal === null) send({ kind: 'stop', id });\n };\n if (refusal !== null) {\n if (topic === 'connection-refusal') notify(refusal);\n return Promise.resolve(end);\n }\n return new Promise<() => void>((settle, fail) => {\n acks.set(id, { settle: () => settle(end), fail });\n send({ kind: 'observe', id, topic, input });\n });\n }\n\n return {\n rooms: () => ask<readonly AppRoom[]>('rooms', []),\n slots: () => ask<readonly AppSlot[]>('slots', []),\n query: ((query: DocumentQuery | GroupQuery) =>\n ask('query', [query])) as MdRuntimeClient['query'],\n search: (request: SearchRequest) => ask<SearchResult>('search', [request]),\n types: (locator: string) => ask<RoomTypes>('types', [locator]),\n syncStatus: () => ask<SyncStatus>('syncStatus', []),\n roomDraft: {\n list: () => ask<readonly RoomDraft[]>('roomDraft.list', []),\n read: (room: string, path: string) => ask<RoomDraft | null>('roomDraft.read', [room, path]),\n write: (room: string, path: string, revision: string | null, parts: RoomDraftParts) =>\n ask<RoomDraftWrite>('roomDraft.write', [room, path, revision, parts]),\n discard: (room: string, path: string, revision: string) =>\n ask<RoomDraftWrite>('roomDraft.discard', [room, path, revision]),\n },\n save: (room: string, roomDrafts: readonly SavedRoomDraft[]) =>\n ask<SaveResult>('save', [room, roomDrafts]),\n outcome: (identifier: string) => ask<SubmissionOutcome | null>('outcome', [identifier]),\n presentation: {\n read: () => ask<unknown>('presentation.read', []),\n write: (value: unknown) => ask<void>('presentation.write', [value]),\n },\n conversation: {\n list: () => ask<readonly ConversationEntry[]>('conversation.list', []),\n read: (conversation: string, options?: ConversationOptions) =>\n ask<ConversationView>('conversation.read', [conversation, options]),\n create: (input: unknown) => ask<CallResult>('conversation.create', [input]),\n send: (conversation: string) => ask<CallResult>('conversation.send', [conversation]),\n answer: (conversation: string, answer: unknown) =>\n ask<CallResult>('conversation.answer', [conversation, answer]),\n interrupt: (conversation: string) =>\n ask<CallResult>('conversation.interrupt', [conversation]),\n kill: (conversation: string) => ask<CallResult>('conversation.kill', [conversation]),\n cancel: (conversation: string, turn: string) =>\n ask<CallResult>('conversation.cancel', [conversation, turn]),\n delete: (conversation: string) => ask<CallResult>('conversation.delete', [conversation]),\n },\n chatDraft: {\n write: (conversation: string, draft: ChatDraft) =>\n ask<void>('chatDraft.write', [conversation, draft]),\n discard: (conversation: string) => ask<void>('chatDraft.discard', [conversation]),\n },\n history: (locator: string, path: string, query?: HistoryQuery) =>\n ask<HistoryResult>('history', [locator, path, query]),\n call: (name: string, input: unknown) => ask<CallResult>('call', [name, input]),\n log: () => ask<string>('log', []),\n storageLoss: () => ask<string | null>('storageLoss', []),\n persistence: () => ask<boolean>('persistence', []),\n deploymentFacts: () => ask<unknown>('deploymentFacts', []),\n observe(\n topic: WireTopic,\n second: unknown,\n third?: ConversationOptions | ((value: never) => void),\n fourth?: (value: never) => void,\n ) {\n if (topic === 'conversation') {\n return watch(topic, [second, third], fourth as (value: unknown) => void);\n }\n const positional = topic === 'query' || topic === 'queue';\n const notify = (positional ? third : second) as (value: unknown) => void;\n return watch(topic, positional ? [second] : [], notify);\n },\n reauthorize: () => ask<void>('reauthorize', []),\n };\n}\n\nexport type { RuntimePort } from './wire.js';\n"],"names":["answer","AUTHORIZATION_ENDED","carried","envelope","PROTOCOL_MISMATCH","connectMdRuntime","port","sequence","refusal","ended","calls","Map","acks","listeners","send","message","postMessage","refuse","reported","waiting","values","settle","clear","failure","Error","reason","fail","listener","topic","notify","end","addEventListener","event","wire","data","matching","kind","get","id","value","subscribing","undefined","delete","start","ask","member","input","Promise","reject","set","watch","resolve","rooms","slots","query","search","request","types","locator","syncStatus","roomDraft","list","read","room","path","write","revision","parts","discard","save","roomDrafts","outcome","identifier","presentation","conversation","options","create","interrupt","kill","cancel","turn","chatDraft","draft","history","call","name","log","storageLoss","persistence","deploymentFacts","observe","second","third","fourth","positional","reauthorize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/client.ts"],"sourcesContent":["import type {\n AppRoom,\n AppSlot,\n ConnectionRefusal,\n HistoryQuery,\n RoomTypes,\n SavedRoomDraft,\n SaveResult,\n} from './connection.js';\nimport type { HistoryResult } from './adapter.js';\nimport type {\n ChatDraft,\n ConversationEntry,\n ConversationOptions,\n ConversationView,\n} from './conversation.js';\nimport { observed, type Observation, type Observed } from './observation.js';\nimport type { CallResult, QueueEntry, SubmissionOutcome } from './outcome.js';\nimport type { DocumentQuery, DocumentResult, GroupQuery, GroupResult } from './query.js';\nimport type { RoomDraft, RoomDraftParts, RoomDraftWrite } from './room-draft.js';\nimport type { SearchRequest, SearchResult } from './search.js';\nimport type { SyncStatus } from './status.js';\nimport {\n answer,\n AUTHORIZATION_ENDED,\n carried,\n envelope,\n PORT_CLOSED,\n PROTOCOL_MISMATCH,\n type RuntimePort,\n type WireMember,\n type WireRequest,\n type WireTopic,\n} from './wire.js';\n\nexport type MdRuntimeClient = {\n rooms(): Promise<readonly AppRoom[]>;\n slots(): Promise<readonly AppSlot[]>;\n query: {\n (query: DocumentQuery): Promise<DocumentResult>;\n (query: GroupQuery): Promise<GroupResult>;\n };\n search(request: SearchRequest): Promise<SearchResult>;\n types(locator: string): Promise<RoomTypes>;\n syncStatus(): Promise<SyncStatus>;\n roomDraft: {\n list(): Promise<readonly RoomDraft[]>;\n read(room: string, path: string): Promise<RoomDraft | null>;\n write(\n room: string,\n path: string,\n revision: string | null,\n parts: RoomDraftParts,\n ): Promise<RoomDraftWrite>;\n discard(room: string, path: string, revision: string): Promise<RoomDraftWrite>;\n };\n save(room: string, roomDrafts: readonly SavedRoomDraft[]): Promise<SaveResult>;\n outcome(identifier: string): Promise<SubmissionOutcome | null>;\n presentation: {\n read(): Promise<unknown>;\n write(value: unknown): Promise<void>;\n };\n conversation: {\n list(): Promise<readonly ConversationEntry[]>;\n read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;\n create(input: unknown): Promise<CallResult>;\n send(conversation: string): Promise<CallResult>;\n answer(conversation: string, answer: unknown): Promise<CallResult>;\n interrupt(conversation: string): Promise<CallResult>;\n kill(conversation: string): Promise<CallResult>;\n cancel(conversation: string, turn: string): Promise<CallResult>;\n delete(conversation: string): Promise<CallResult>;\n };\n chatDraft: {\n write(conversation: string, draft: ChatDraft): Promise<void>;\n discard(conversation: string): Promise<void>;\n };\n history(locator: string, path: string, query?: HistoryQuery): Promise<HistoryResult>;\n call(name: string, input: unknown): Promise<CallResult>;\n log(): Promise<string>;\n storageLoss(): Promise<string | null>;\n persistence(): Promise<boolean>;\n deploymentFacts(): Promise<unknown>;\n observe: {\n (topic: 'deployment-facts'): Promise<Observation<unknown>>;\n (topic: 'rooms'): Promise<Observation<readonly AppRoom[]>>;\n (topic: 'connection-refusal'): Promise<Observation<ConnectionRefusal | null>>;\n (topic: 'storage-loss'): Promise<Observation<string | null>>;\n (topic: 'sync-status'): Promise<Observation<SyncStatus>>;\n (topic: 'query', query: DocumentQuery): Promise<Observation<DocumentResult>>;\n (topic: 'query', query: GroupQuery): Promise<Observation<GroupResult>>;\n (topic: 'queue', locator: string): Promise<Observation<readonly QueueEntry[]>>;\n (topic: 'room-drafts'): Promise<Observation<readonly RoomDraft[]>>;\n (topic: 'presentation'): Promise<Observation<unknown>>;\n (\n topic: 'conversation',\n conversation: string,\n options: ConversationOptions,\n ): Promise<Observation<ConversationView>>;\n };\n reauthorize(): Promise<void>;\n};\n\nexport function connectMdRuntime(port: RuntimePort): MdRuntimeClient {\n let sequence = 0;\n let refusal: ConnectionRefusal | null = null;\n let ended: string | null = null;\n const calls = new Map<\n number,\n { settle: (value: unknown) => void; fail: (error: Error) => void }\n >();\n const opening = new Map<\n number,\n {\n topic: WireTopic;\n settle: (observation: Observation<unknown>) => void;\n fail: (error: Error) => void;\n }\n >();\n const observations = new Map<number, { topic: WireTopic; handle: Observed }>();\n\n const send = (message: WireRequest) => {\n port.postMessage(envelope(message));\n };\n\n function begin(id: number, topic: WireTopic, first: unknown): Observation<unknown> {\n const handle = observed(\n first,\n () => {\n observations.delete(id);\n if (refusal === null) send({ kind: 'stop', id });\n },\n topic === 'query',\n );\n observations.set(id, { topic, handle });\n return handle.observation;\n }\n\n function refuse(reported: ConnectionRefusal) {\n refusal = reported;\n for (const { topic, handle } of observations.values()) {\n if (topic === 'connection-refusal') handle.receive(reported);\n }\n const failure = new Error(reported.reason);\n for (const [id, waiting] of opening) {\n if (waiting.topic === 'connection-refusal')\n waiting.settle(begin(id, waiting.topic, reported));\n else waiting.fail(failure);\n }\n opening.clear();\n for (const waiting of calls.values()) waiting.fail(failure);\n calls.clear();\n }\n\n function end(reason: string) {\n if (ended !== null) return;\n ended = reason;\n const failure = new Error(reason);\n for (const waiting of opening.values()) waiting.fail(failure);\n opening.clear();\n for (const waiting of calls.values()) waiting.fail(failure);\n calls.clear();\n for (const { handle } of observations.values()) handle.end();\n observations.clear();\n }\n\n port.addEventListener('message', (event) => {\n const wire = carried(event.data);\n if (wire === null) return;\n if (!wire.matching) {\n refuse(PROTOCOL_MISMATCH);\n return;\n }\n const message = answer(wire.message);\n if (message === null) return;\n if (message.kind === 'refusal') {\n refuse(message.refusal);\n return;\n }\n if (message.kind === 'ended') {\n end(AUTHORIZATION_ENDED);\n return;\n }\n if (message.kind === 'event') {\n observations.get(message.id)?.handle.receive(message.value);\n return;\n }\n const waiting = opening.get(message.id);\n if (waiting !== undefined) {\n opening.delete(message.id);\n if (message.kind === 'failure') waiting.fail(new Error(message.message));\n else waiting.settle(begin(message.id, waiting.topic, message.value));\n return;\n }\n const called = calls.get(message.id);\n if (called === undefined) return;\n calls.delete(message.id);\n if (message.kind === 'failure') called.fail(new Error(message.message));\n else called.settle(message.value);\n });\n port.addEventListener('close', () => {\n end(PORT_CLOSED);\n });\n port.start();\n send({ kind: 'hello' });\n\n function ask<T>(member: WireMember, input: readonly unknown[]): Promise<T> {\n if (ended !== null) return Promise.reject(new Error(ended));\n if (refusal !== null) return Promise.reject(new Error(refusal.reason));\n const id = (sequence += 1);\n return new Promise<T>((settle, fail) => {\n calls.set(id, { settle: settle as (value: unknown) => void, fail });\n send({ kind: 'call', id, member, input });\n });\n }\n\n function watch(topic: WireTopic, input: readonly unknown[]): Promise<Observation<unknown>> {\n if (ended !== null) return Promise.reject(new Error(ended));\n const id = (sequence += 1);\n if (refusal !== null) {\n return topic === 'connection-refusal'\n ? Promise.resolve(begin(id, topic, refusal))\n : Promise.reject(new Error(refusal.reason));\n }\n return new Promise((settle, fail) => {\n opening.set(id, { topic, settle, fail });\n send({ kind: 'observe', id, topic, input });\n });\n }\n\n return {\n rooms: () => ask<readonly AppRoom[]>('rooms', []),\n slots: () => ask<readonly AppSlot[]>('slots', []),\n query: ((query: DocumentQuery | GroupQuery) =>\n ask('query', [query])) as MdRuntimeClient['query'],\n search: (request: SearchRequest) => ask<SearchResult>('search', [request]),\n types: (locator: string) => ask<RoomTypes>('types', [locator]),\n syncStatus: () => ask<SyncStatus>('syncStatus', []),\n roomDraft: {\n list: () => ask<readonly RoomDraft[]>('roomDraft.list', []),\n read: (room: string, path: string) => ask<RoomDraft | null>('roomDraft.read', [room, path]),\n write: (room: string, path: string, revision: string | null, parts: RoomDraftParts) =>\n ask<RoomDraftWrite>('roomDraft.write', [room, path, revision, parts]),\n discard: (room: string, path: string, revision: string) =>\n ask<RoomDraftWrite>('roomDraft.discard', [room, path, revision]),\n },\n save: (room: string, roomDrafts: readonly SavedRoomDraft[]) =>\n ask<SaveResult>('save', [room, roomDrafts]),\n outcome: (identifier: string) => ask<SubmissionOutcome | null>('outcome', [identifier]),\n presentation: {\n read: () => ask<unknown>('presentation.read', []),\n write: (value: unknown) => ask<void>('presentation.write', [value]),\n },\n conversation: {\n list: () => ask<readonly ConversationEntry[]>('conversation.list', []),\n read: (conversation: string, options?: ConversationOptions) =>\n ask<ConversationView>('conversation.read', [conversation, options]),\n create: (input: unknown) => ask<CallResult>('conversation.create', [input]),\n send: (conversation: string) => ask<CallResult>('conversation.send', [conversation]),\n answer: (conversation: string, answer: unknown) =>\n ask<CallResult>('conversation.answer', [conversation, answer]),\n interrupt: (conversation: string) =>\n ask<CallResult>('conversation.interrupt', [conversation]),\n kill: (conversation: string) => ask<CallResult>('conversation.kill', [conversation]),\n cancel: (conversation: string, turn: string) =>\n ask<CallResult>('conversation.cancel', [conversation, turn]),\n delete: (conversation: string) => ask<CallResult>('conversation.delete', [conversation]),\n },\n chatDraft: {\n write: (conversation: string, draft: ChatDraft) =>\n ask<void>('chatDraft.write', [conversation, draft]),\n discard: (conversation: string) => ask<void>('chatDraft.discard', [conversation]),\n },\n history: (locator: string, path: string, query?: HistoryQuery) =>\n ask<HistoryResult>('history', [locator, path, query]),\n call: (name: string, input: unknown) => ask<CallResult>('call', [name, input]),\n log: () => ask<string>('log', []),\n storageLoss: () => ask<string | null>('storageLoss', []),\n persistence: () => ask<boolean>('persistence', []),\n deploymentFacts: () => ask<unknown>('deploymentFacts', []),\n observe: ((topic: WireTopic, ...input: unknown[]) =>\n watch(topic, input)) as MdRuntimeClient['observe'],\n reauthorize: () => ask<void>('reauthorize', []),\n };\n}\n\nexport type { Observation } from './observation.js';\nexport type { RuntimePort } from './wire.js';\n"],"names":["observed","answer","AUTHORIZATION_ENDED","carried","envelope","PORT_CLOSED","PROTOCOL_MISMATCH","connectMdRuntime","port","sequence","refusal","ended","calls","Map","opening","observations","send","message","postMessage","begin","id","topic","first","handle","delete","kind","set","observation","refuse","reported","values","receive","failure","Error","reason","waiting","settle","fail","clear","end","addEventListener","event","wire","data","matching","get","value","undefined","called","start","ask","member","input","Promise","reject","watch","resolve","rooms","slots","query","search","request","types","locator","syncStatus","roomDraft","list","read","room","path","write","revision","parts","discard","save","roomDrafts","outcome","identifier","presentation","conversation","options","create","interrupt","kill","cancel","turn","chatDraft","draft","history","call","name","log","storageLoss","persistence","deploymentFacts","observe","reauthorize"],"mappings":"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"}
|
package/dist/connection.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type TypesResult } from './model.js';
|
|
2
|
+
import { type Observation } from './observation.js';
|
|
2
3
|
import { type DocumentQuery, type DocumentResult, type GroupQuery, type GroupResult } from './query.js';
|
|
3
4
|
import { type SearchRequest, type SearchResult } from './search.js';
|
|
4
5
|
import { type Adapter, type Authorization, type HistoryResult, type ProviderRefusal } from './adapter.js';
|
|
@@ -101,18 +102,24 @@ export type MdRuntime = {
|
|
|
101
102
|
storageLoss(): string | null;
|
|
102
103
|
persistence(): boolean;
|
|
103
104
|
observe: {
|
|
104
|
-
(topic: 'rooms'
|
|
105
|
-
(topic: 'connection-refusal'
|
|
106
|
-
(topic: 'storage-loss'
|
|
107
|
-
(topic: 'sync-status'
|
|
108
|
-
(topic: 'query', query: DocumentQuery
|
|
109
|
-
(topic: 'query', query: GroupQuery
|
|
110
|
-
(topic: 'queue', locator: string
|
|
111
|
-
(topic: 'room-drafts'
|
|
112
|
-
(topic: 'presentation', app: string
|
|
113
|
-
(topic: 'conversation', conversation: string, options: ConversationOptions
|
|
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>>;
|
|
114
115
|
};
|
|
115
116
|
reauthorize(): Promise<void>;
|
|
116
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
|
+
};
|
|
117
123
|
export declare function createMdRuntime(options: MdRuntimeOptions): MdRuntime;
|
|
124
|
+
export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
|
|
118
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":"AACA,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
|