@agentshouse/mdruntime 0.1.0-c95464765b116 → 0.1.0-c969b8dee6cc8
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 +238 -233
- package/README.md +8 -8
- package/dist/adapter.d.ts +20 -6
- package/dist/adapter.d.ts.map +1 -1
- package/dist/bootstrap.d.ts +2 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +4 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +2 -1
- package/dist/chat/earlier.d.ts +10 -0
- package/dist/chat/earlier.d.ts.map +1 -0
- package/dist/chat/earlier.js +54 -0
- package/dist/chat/kit.js +1 -1
- package/dist/chat/list.d.ts.map +1 -1
- package/dist/chat/list.js +39 -3
- package/dist/chat/provider.d.ts +1 -1
- package/dist/chat/provider.d.ts.map +1 -1
- package/dist/chat/provider.js +35 -27
- package/dist/chat/question.d.ts +1 -1
- package/dist/chat/question.d.ts.map +1 -1
- package/dist/chat/question.js +7 -18
- package/dist/chat/style.js +1 -1
- package/dist/client.d.ts +7 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +16 -5
- package/dist/connection.d.ts +13 -3
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +417 -107
- package/dist/conversation.d.ts +7 -0
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +206 -48
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +1 -1
- package/dist/host.d.ts +8 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +58 -6
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/memory.d.ts +6 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +20 -5
- package/dist/model.d.ts +3 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +1 -1
- package/dist/observation.d.ts +2 -0
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +9 -3
- package/dist/outcome.d.ts +8 -2
- 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 +27 -3
- package/dist/query.d.ts +29 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +36 -7
- package/dist/reach.d.ts +1 -2
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +17 -4
- package/dist/react.d.ts +3 -3
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +7 -17
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +176 -48
- package/dist/reads.d.ts +11 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +98 -0
- package/dist/refresh.d.ts +4 -4
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +6 -0
- package/dist/replica.d.ts +5 -1
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +30 -5
- package/dist/room-draft.d.ts +13 -1
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +2 -2
- package/dist/rows.d.ts +3 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +8 -1
- package/dist/save.d.ts +1 -0
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +17 -1
- package/dist/search.d.ts +28 -7
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +89 -7
- package/dist/seed.d.ts +16 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +75 -0
- package/dist/store.d.ts +20 -5
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +58 -18
- package/dist/windows.d.ts +26 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +93 -0
- package/dist/wire.d.ts +16 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +4 -0
- package/package.json +2 -2
package/dist/conversation.d.ts
CHANGED
|
@@ -36,10 +36,14 @@ export type ChatDraft = {
|
|
|
36
36
|
};
|
|
37
37
|
export type ConversationOptions = {
|
|
38
38
|
limit?: number;
|
|
39
|
+
after?: string;
|
|
40
|
+
total?: true;
|
|
39
41
|
};
|
|
40
42
|
export type ConversationView = {
|
|
41
43
|
conversation: string;
|
|
42
44
|
messages: readonly ConversationMessage[];
|
|
45
|
+
next?: string;
|
|
46
|
+
total?: number;
|
|
43
47
|
turn: RunningTurn | null;
|
|
44
48
|
questions: readonly unknown[];
|
|
45
49
|
process: {
|
|
@@ -64,6 +68,7 @@ export type ConversationSurface = {
|
|
|
64
68
|
};
|
|
65
69
|
export type ChatDraftSurface = {
|
|
66
70
|
write(conversation: string, draft: ChatDraft, revision?: string): Promise<void>;
|
|
71
|
+
prepend(conversation: string, draft: ChatDraft): Promise<void>;
|
|
67
72
|
discard(conversation: string): Promise<void>;
|
|
68
73
|
};
|
|
69
74
|
export type ConversationDependencies = {
|
|
@@ -89,6 +94,7 @@ export type ConversationStore = {
|
|
|
89
94
|
known(): boolean;
|
|
90
95
|
reconnected(): void;
|
|
91
96
|
reopened(): void;
|
|
97
|
+
lost(): void;
|
|
92
98
|
watch(conversation: string, options: ConversationOptions, deliver: (view: ConversationView) => void): () => void;
|
|
93
99
|
watchList(deliver: (entries: readonly ConversationEntry[]) => void): () => void;
|
|
94
100
|
watchAgents(deliver: (agents: readonly ConversationAgent[]) => void): () => void;
|
|
@@ -100,5 +106,6 @@ export type ConversationStore = {
|
|
|
100
106
|
};
|
|
101
107
|
export declare function unheldView(conversation: string): ConversationView;
|
|
102
108
|
export declare const SESSION_STARTED = "Session started";
|
|
109
|
+
export declare function newChat(agent: string): string;
|
|
103
110
|
export declare function createConversationStore(deps: ConversationDependencies): ConversationStore;
|
|
104
111
|
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EAEjB,mBAAmB,EACnB,kBAAkB,EAElB,cAAc,EACd,aAAa,EACb,WAAW,EAEZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAyB,KAAK,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAE5F,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAW,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAkB,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
|
package/dist/conversation.js
CHANGED
|
@@ -3,6 +3,7 @@ import { runtimeError } from './failure.js';
|
|
|
3
3
|
import { declaredFile } from './file.js';
|
|
4
4
|
import { changeBatchIdentity, chatDraftRevision } from './identity.js';
|
|
5
5
|
import { OFFLINE } from './outcome.js';
|
|
6
|
+
import { capped, cursorOf, decodedCursor, FROM_START, messageOrder, precedes } from './windows.js';
|
|
6
7
|
const QUIET = {
|
|
7
8
|
turn: null,
|
|
8
9
|
questions: [],
|
|
@@ -23,6 +24,16 @@ export function unheldView(conversation) {
|
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
26
|
export const SESSION_STARTED = 'Session started';
|
|
27
|
+
const NEW_CHAT = 'new:';
|
|
28
|
+
export function newChat(agent) {
|
|
29
|
+
return `${NEW_CHAT}${agent}`;
|
|
30
|
+
}
|
|
31
|
+
function creationOf(input) {
|
|
32
|
+
if (typeof input !== 'object' || input === null)
|
|
33
|
+
return null;
|
|
34
|
+
const { agent_id: agent, operation_id: operation } = input;
|
|
35
|
+
return typeof agent === 'string' && typeof operation === 'string' ? { agent, operation } : null;
|
|
36
|
+
}
|
|
26
37
|
function startedTurn(turn, operation) {
|
|
27
38
|
if (operation.op === 'begin')
|
|
28
39
|
return { turn, started: operation.at, parts: [], context: null };
|
|
@@ -72,19 +83,25 @@ function appliedTurn(held, operation) {
|
|
|
72
83
|
parts: held.parts.map((kept, at) => (at === operation.index ? changed : kept)),
|
|
73
84
|
};
|
|
74
85
|
}
|
|
75
|
-
function ordered(left, right) {
|
|
76
|
-
if (left.position !== right.position)
|
|
77
|
-
return left.position < right.position ? -1 : 1;
|
|
78
|
-
if (left.identity !== right.identity)
|
|
79
|
-
return left.identity < right.identity ? -1 : 1;
|
|
80
|
-
return 0;
|
|
81
|
-
}
|
|
82
86
|
function windowOf(held, arriving, limit) {
|
|
83
87
|
const byIdentity = new Map(held.map((message) => [message.identity, message]));
|
|
84
88
|
for (const message of arriving)
|
|
85
89
|
byIdentity.set(message.identity, message);
|
|
86
|
-
const next = [...byIdentity.values()].sort(
|
|
87
|
-
|
|
90
|
+
const next = [...byIdentity.values()].sort(messageOrder);
|
|
91
|
+
const start = Math.max(0, next.length - limit);
|
|
92
|
+
return { messages: next.slice(start), dropped: start > 0 };
|
|
93
|
+
}
|
|
94
|
+
function frameOf(asked, messages, more, total) {
|
|
95
|
+
const oldest = messages[0];
|
|
96
|
+
const next = !more
|
|
97
|
+
? undefined
|
|
98
|
+
: oldest === undefined
|
|
99
|
+
? (asked.after ?? FROM_START)
|
|
100
|
+
: cursorOf([oldest.position, oldest.identity]);
|
|
101
|
+
return {
|
|
102
|
+
...(next === undefined ? {} : { next }),
|
|
103
|
+
...(total === null ? {} : { total }),
|
|
104
|
+
};
|
|
88
105
|
}
|
|
89
106
|
function newestOf(arriving, from) {
|
|
90
107
|
return arriving.reduce((top, message) => (top === null || message.position > top ? message.position : top), from);
|
|
@@ -146,40 +163,61 @@ function historyPages(result) {
|
|
|
146
163
|
}
|
|
147
164
|
return pages;
|
|
148
165
|
}
|
|
149
|
-
function
|
|
166
|
+
function answered(result, field) {
|
|
150
167
|
if (result.kind !== 'action')
|
|
151
168
|
return null;
|
|
152
169
|
const answer = result.result;
|
|
153
170
|
if (typeof answer !== 'object' || answer === null)
|
|
154
171
|
return null;
|
|
155
|
-
const
|
|
156
|
-
return typeof
|
|
172
|
+
const value = answer[field];
|
|
173
|
+
return typeof value === 'string' ? value : null;
|
|
174
|
+
}
|
|
175
|
+
function beforeOf(after) {
|
|
176
|
+
if (after === undefined)
|
|
177
|
+
return null;
|
|
178
|
+
const decoded = typeof after === 'string' ? decodedCursor(after) : null;
|
|
179
|
+
if (decoded?.length === 0)
|
|
180
|
+
return null;
|
|
181
|
+
const [position, identity] = decoded ?? [];
|
|
182
|
+
if (decoded?.length !== 2 || typeof position !== 'string' || typeof identity !== 'string') {
|
|
183
|
+
throw runtimeError('invalid-after', `conversation after must be the next an earlier view returned, got ${String(after)}`);
|
|
184
|
+
}
|
|
185
|
+
return [position, identity];
|
|
157
186
|
}
|
|
158
|
-
function
|
|
159
|
-
const { limit } = options;
|
|
160
|
-
if (limit
|
|
161
|
-
return undefined;
|
|
162
|
-
if (!Number.isInteger(limit) || limit < 0) {
|
|
187
|
+
function askedOf(options) {
|
|
188
|
+
const { limit, after, total } = options;
|
|
189
|
+
if (limit !== undefined && (!Number.isInteger(limit) || limit < 0)) {
|
|
163
190
|
throw runtimeError('invalid-limit', `conversation limit must be a non-negative integer, got ${String(limit)}`);
|
|
164
191
|
}
|
|
165
|
-
return limit;
|
|
192
|
+
return { limit: capped(limit), after, before: beforeOf(after), total: total === true };
|
|
166
193
|
}
|
|
167
194
|
const EXPIRED = { kind: 'rejected', code: 'expired', fields: {}, retryable: false };
|
|
168
195
|
function unwritten(draft) {
|
|
169
196
|
return draft.text === '' && draft.files.length === 0;
|
|
170
197
|
}
|
|
171
198
|
function pending(draft) {
|
|
172
|
-
return
|
|
199
|
+
return {
|
|
200
|
+
...(draft.submitted === undefined ? {} : { submitted: draft.submitted }),
|
|
201
|
+
...(draft.moves === undefined ? {} : { moves: draft.moves }),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function empty(draft) {
|
|
205
|
+
return unwritten(draft) && draft.submitted === undefined && draft.moves === undefined;
|
|
173
206
|
}
|
|
174
207
|
function withSubmitted(draft, submitted) {
|
|
175
208
|
const { submitted: _held, ...unsent } = draft;
|
|
176
209
|
return submitted.length === 0 ? unsent : { ...unsent, submitted };
|
|
177
210
|
}
|
|
211
|
+
function prepended(draft, said) {
|
|
212
|
+
return {
|
|
213
|
+
text: [said.text, draft.text].filter((one) => one !== '').join('\n'),
|
|
214
|
+
files: [...said.files, ...draft.files],
|
|
215
|
+
};
|
|
216
|
+
}
|
|
178
217
|
function returned(draft, submission, others) {
|
|
179
218
|
return withSubmitted({
|
|
180
219
|
conversation: draft.conversation,
|
|
181
|
-
|
|
182
|
-
files: [...submission.files, ...draft.files],
|
|
220
|
+
...prepended(draft, submission),
|
|
183
221
|
revision: chatDraftRevision(),
|
|
184
222
|
}, others);
|
|
185
223
|
}
|
|
@@ -190,10 +228,12 @@ export function createConversationStore(deps) {
|
|
|
190
228
|
const drafts = new Map();
|
|
191
229
|
const sending = new Map();
|
|
192
230
|
const behind = new Set();
|
|
231
|
+
const catching = new Map();
|
|
193
232
|
const gaps = new Map();
|
|
194
233
|
const lives = new Map();
|
|
195
234
|
const views = new Map();
|
|
196
235
|
const listing = new Map();
|
|
236
|
+
const creations = new Set();
|
|
197
237
|
const listWatchers = new Set();
|
|
198
238
|
let listKnown = false;
|
|
199
239
|
const agentWatchers = new Set();
|
|
@@ -205,7 +245,7 @@ export function createConversationStore(deps) {
|
|
|
205
245
|
function liveOf(conversation) {
|
|
206
246
|
return lives.get(conversation) ?? QUIET;
|
|
207
247
|
}
|
|
208
|
-
function viewOf(conversation, held) {
|
|
248
|
+
function viewOf(conversation, held, frame) {
|
|
209
249
|
const draft = drafts.get(conversation);
|
|
210
250
|
const facts = liveOf(conversation);
|
|
211
251
|
return {
|
|
@@ -216,6 +256,7 @@ export function createConversationStore(deps) {
|
|
|
216
256
|
text,
|
|
217
257
|
message,
|
|
218
258
|
})),
|
|
259
|
+
...frame,
|
|
219
260
|
turn: structuredClone(facts.turn),
|
|
220
261
|
questions: structuredClone(facts.questions),
|
|
221
262
|
process: facts.process === null ? null : { ...facts.process },
|
|
@@ -235,16 +276,34 @@ export function createConversationStore(deps) {
|
|
|
235
276
|
const ready = [...view.watchers].filter((watcher) => watcher.ready);
|
|
236
277
|
if (ready.length === 0)
|
|
237
278
|
continue;
|
|
238
|
-
const value = viewOf(conversation, view.window);
|
|
279
|
+
const value = viewOf(conversation, view.window, sharedFrame(view, view.window));
|
|
239
280
|
for (const watcher of ready)
|
|
240
281
|
watcher.notify(value);
|
|
241
282
|
}
|
|
242
283
|
}
|
|
243
|
-
function
|
|
284
|
+
function sharedFrame(view, window) {
|
|
285
|
+
return frameOf(view.asked, window, view.more, view.total);
|
|
286
|
+
}
|
|
287
|
+
async function slide(local, conversation, arriving) {
|
|
288
|
+
let count;
|
|
244
289
|
for (const view of views.values()) {
|
|
245
290
|
if (view.conversation !== conversation || view.window === null)
|
|
246
291
|
continue;
|
|
247
|
-
|
|
292
|
+
if (arriving === null) {
|
|
293
|
+
view.window = [];
|
|
294
|
+
view.more = false;
|
|
295
|
+
if (view.total !== null)
|
|
296
|
+
view.total = 0;
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
const joining = arriving.filter((message) => precedes(message, view.asked.before));
|
|
300
|
+
const next = windowOf(view.window, joining, view.asked.limit);
|
|
301
|
+
view.window = next.messages;
|
|
302
|
+
view.more ||= next.dropped;
|
|
303
|
+
if (view.total !== null && arriving.length > 0) {
|
|
304
|
+
count ??= await local.messageCount(conversation);
|
|
305
|
+
view.total = count;
|
|
306
|
+
}
|
|
248
307
|
}
|
|
249
308
|
}
|
|
250
309
|
function changesOf(conversation, arriving) {
|
|
@@ -332,6 +391,12 @@ export function createConversationStore(deps) {
|
|
|
332
391
|
if (named)
|
|
333
392
|
emitList();
|
|
334
393
|
emitAgents();
|
|
394
|
+
const ended = [...drafts.keys()].filter(retiredChat);
|
|
395
|
+
if (ended.length > 0)
|
|
396
|
+
await remove(ended);
|
|
397
|
+
}
|
|
398
|
+
function retiredChat(conversation) {
|
|
399
|
+
return (conversation.startsWith(NEW_CHAT) && retiredAgents.has(conversation.slice(NEW_CHAT.length)));
|
|
335
400
|
}
|
|
336
401
|
function agentsReady() {
|
|
337
402
|
agentsRead ??= readAgents().catch(() => {
|
|
@@ -387,7 +452,7 @@ export function createConversationStore(deps) {
|
|
|
387
452
|
drafts.delete(conversation);
|
|
388
453
|
behind.delete(conversation);
|
|
389
454
|
setLive(conversation, null);
|
|
390
|
-
slide(conversation, null);
|
|
455
|
+
await slide(local, conversation, null);
|
|
391
456
|
}
|
|
392
457
|
if (changed.length > 0)
|
|
393
458
|
deps.publish(conversationChangeSet(removed, changed));
|
|
@@ -415,11 +480,11 @@ export function createConversationStore(deps) {
|
|
|
415
480
|
if (advances)
|
|
416
481
|
reads.set(conversation, message.position);
|
|
417
482
|
sealTurns(conversation, new Set([message.turn]));
|
|
418
|
-
slide(conversation, [message]);
|
|
483
|
+
await slide(local, conversation, [message]);
|
|
419
484
|
deps.publish(conversationChangeSet(changesOf(conversation, [message]), [conversation]));
|
|
420
485
|
});
|
|
421
486
|
}
|
|
422
|
-
async function readHistories(conversations) {
|
|
487
|
+
async function readHistories(conversations, ended) {
|
|
423
488
|
const generations = new Map(conversations.map((one) => [one, gaps.get(one) ?? 0]));
|
|
424
489
|
let asking = conversations.map((conversation) => ({
|
|
425
490
|
conversation,
|
|
@@ -445,10 +510,33 @@ export function createConversationStore(deps) {
|
|
|
445
510
|
following.push({ conversation: page.conversation, after: page.next });
|
|
446
511
|
}
|
|
447
512
|
}
|
|
513
|
+
for (const { conversation } of asking) {
|
|
514
|
+
if (!following.some((next) => next.conversation === conversation))
|
|
515
|
+
ended(conversation);
|
|
516
|
+
}
|
|
448
517
|
asking = following;
|
|
449
518
|
}
|
|
450
519
|
return null;
|
|
451
520
|
}
|
|
521
|
+
function caughtUp(conversations) {
|
|
522
|
+
const ends = new Map();
|
|
523
|
+
for (const conversation of conversations) {
|
|
524
|
+
const held = new Promise((end) => ends.set(conversation, end));
|
|
525
|
+
catching.set(conversation, held);
|
|
526
|
+
void held.then(() => {
|
|
527
|
+
if (catching.get(conversation) === held)
|
|
528
|
+
catching.delete(conversation);
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
const ended = (conversation) => ends.get(conversation)?.();
|
|
532
|
+
const read = readHistories(conversations, ended);
|
|
533
|
+
const endAll = () => {
|
|
534
|
+
for (const conversation of conversations)
|
|
535
|
+
ended(conversation);
|
|
536
|
+
};
|
|
537
|
+
read.then(endAll, endAll);
|
|
538
|
+
return read;
|
|
539
|
+
}
|
|
452
540
|
function keepPage(conversation, arriving, from, next, generation) {
|
|
453
541
|
return deps.durably(async (local) => {
|
|
454
542
|
if (!replicated.has(conversation))
|
|
@@ -467,7 +555,7 @@ export function createConversationStore(deps) {
|
|
|
467
555
|
sealTurns(conversation, new Set(arriving.map((message) => message.turn)));
|
|
468
556
|
if (whole && (gaps.get(conversation) ?? 0) === generation)
|
|
469
557
|
behind.delete(conversation);
|
|
470
|
-
slide(conversation, arriving);
|
|
558
|
+
await slide(local, conversation, arriving);
|
|
471
559
|
if (arriving.length > 0 || sealing || whole) {
|
|
472
560
|
deps.publish(conversationChangeSet(changesOf(conversation, arriving), [conversation]));
|
|
473
561
|
}
|
|
@@ -516,12 +604,12 @@ export function createConversationStore(deps) {
|
|
|
516
604
|
emit(conversation);
|
|
517
605
|
}
|
|
518
606
|
async function kept(local, conversation, following) {
|
|
519
|
-
if (following === null || (
|
|
607
|
+
if (following === null || empty(following)) {
|
|
520
608
|
await local.dropChatDraft(conversation);
|
|
521
609
|
drafts.delete(conversation);
|
|
522
610
|
}
|
|
523
611
|
else {
|
|
524
|
-
await local.
|
|
612
|
+
await local.keepChatDrafts([following]);
|
|
525
613
|
drafts.set(conversation, following);
|
|
526
614
|
}
|
|
527
615
|
}
|
|
@@ -534,6 +622,29 @@ export function createConversationStore(deps) {
|
|
|
534
622
|
await kept(local, conversation, withSubmitted(held, left));
|
|
535
623
|
return true;
|
|
536
624
|
}
|
|
625
|
+
function moved(agent, operation, to) {
|
|
626
|
+
const from = newChat(agent);
|
|
627
|
+
return deps.durably(async (local) => {
|
|
628
|
+
const held = drafts.get(from);
|
|
629
|
+
const earlier = (held?.moves ?? []).filter((one) => !deps.expired(one));
|
|
630
|
+
if (earlier.includes(operation))
|
|
631
|
+
return;
|
|
632
|
+
const blank = {
|
|
633
|
+
conversation: from,
|
|
634
|
+
text: '',
|
|
635
|
+
files: [],
|
|
636
|
+
revision: chatDraftRevision(),
|
|
637
|
+
};
|
|
638
|
+
const { moves: _answered, ...unsent } = held ?? blank;
|
|
639
|
+
const taken = drafts.has(to) || empty(unsent) ? [] : [{ ...unsent, conversation: to }];
|
|
640
|
+
const left = { ...(taken.length === 0 ? unsent : blank), moves: [...earlier, operation] };
|
|
641
|
+
await local.keepChatDrafts([left, ...taken]);
|
|
642
|
+
drafts.set(from, left);
|
|
643
|
+
for (const one of taken)
|
|
644
|
+
drafts.set(to, one);
|
|
645
|
+
deps.publish(conversationChangeSet([], [from, to]));
|
|
646
|
+
});
|
|
647
|
+
}
|
|
537
648
|
function withDraft(conversation, next) {
|
|
538
649
|
return deps.durably(async (local) => {
|
|
539
650
|
const following = await next(drafts.get(conversation), local);
|
|
@@ -592,7 +703,7 @@ export function createConversationStore(deps) {
|
|
|
592
703
|
deps.unanswered();
|
|
593
704
|
return result;
|
|
594
705
|
}
|
|
595
|
-
const turn =
|
|
706
|
+
const turn = answered(result, 'turn');
|
|
596
707
|
await withDraft(conversation, async (current, local) => {
|
|
597
708
|
const held = current?.submitted?.find((one) => one.operation === submission.operation);
|
|
598
709
|
if (current === undefined || held === undefined || held.turn !== null)
|
|
@@ -621,11 +732,24 @@ export function createConversationStore(deps) {
|
|
|
621
732
|
return entries();
|
|
622
733
|
},
|
|
623
734
|
async read(conversation, options = {}) {
|
|
624
|
-
const
|
|
625
|
-
return deps.durably(async (local) =>
|
|
735
|
+
const asked = askedOf(options);
|
|
736
|
+
return deps.durably(async (local) => {
|
|
737
|
+
const { messages, more } = await local.messageWindow(conversation, asked.limit, asked.before);
|
|
738
|
+
const total = asked.total ? await local.messageCount(conversation) : null;
|
|
739
|
+
return structuredClone(viewOf(conversation, messages, frameOf(asked, messages, more, total)));
|
|
740
|
+
});
|
|
626
741
|
},
|
|
627
|
-
create(input) {
|
|
628
|
-
|
|
742
|
+
async create(input) {
|
|
743
|
+
const result = await deps.call('conversation.create', input);
|
|
744
|
+
const conversation = answered(result, 'conversation');
|
|
745
|
+
if (conversation === null)
|
|
746
|
+
return result;
|
|
747
|
+
if (!listing.has(conversation))
|
|
748
|
+
creations.add(conversation);
|
|
749
|
+
const creation = creationOf(input);
|
|
750
|
+
if (creation !== null)
|
|
751
|
+
await moved(creation.agent, creation.operation, conversation);
|
|
752
|
+
return result;
|
|
629
753
|
},
|
|
630
754
|
async send(conversation, operation = changeBatchIdentity(), draft) {
|
|
631
755
|
if (deps.online()) {
|
|
@@ -674,7 +798,17 @@ export function createConversationStore(deps) {
|
|
|
674
798
|
text: draft.text,
|
|
675
799
|
files: [...draft.files],
|
|
676
800
|
revision,
|
|
677
|
-
...(current
|
|
801
|
+
...(current === undefined ? {} : pending(current)),
|
|
802
|
+
}));
|
|
803
|
+
},
|
|
804
|
+
prepend(conversation, draft) {
|
|
805
|
+
return withDraft(conversation, (current) => ({
|
|
806
|
+
conversation,
|
|
807
|
+
...(current === undefined
|
|
808
|
+
? { text: draft.text, files: [...draft.files] }
|
|
809
|
+
: prepended(current, draft)),
|
|
810
|
+
revision: chatDraftRevision(),
|
|
811
|
+
...(current === undefined ? {} : pending(current)),
|
|
678
812
|
}));
|
|
679
813
|
},
|
|
680
814
|
discard(conversation) {
|
|
@@ -713,7 +847,9 @@ export function createConversationStore(deps) {
|
|
|
713
847
|
const named = new Set(listing.keys());
|
|
714
848
|
const leaving = [
|
|
715
849
|
...new Set([...replicated, ...stored, ...reads.keys(), ...drafts.keys()]),
|
|
716
|
-
].filter((conversation) => !named.has(conversation)
|
|
850
|
+
].filter((conversation) => !named.has(conversation) &&
|
|
851
|
+
!creations.has(conversation) &&
|
|
852
|
+
(!conversation.startsWith(NEW_CHAT) || retiredChat(conversation)));
|
|
717
853
|
for (const conversation of named) {
|
|
718
854
|
if (!replicated.has(conversation))
|
|
719
855
|
behind.add(conversation);
|
|
@@ -724,12 +860,20 @@ export function createConversationStore(deps) {
|
|
|
724
860
|
await remove(leaving);
|
|
725
861
|
},
|
|
726
862
|
async catchUp(progress) {
|
|
727
|
-
const
|
|
728
|
-
|
|
729
|
-
|
|
863
|
+
const owed = (conversation) => behind.has(conversation) && replicated.has(conversation);
|
|
864
|
+
const read = async (conversations) => {
|
|
865
|
+
if (conversations.length === 0 || deps.closed())
|
|
866
|
+
return;
|
|
867
|
+
const failed = await caughtUp(conversations);
|
|
730
868
|
if (failed?.kind === 'transport-uncertainty')
|
|
731
869
|
progress.reachable = false;
|
|
732
|
-
}
|
|
870
|
+
};
|
|
871
|
+
const asking = [...behind].filter(owed).sort();
|
|
872
|
+
const awaited = asking.filter((conversation) => catching.has(conversation));
|
|
873
|
+
await Promise.all([
|
|
874
|
+
read(asking.filter((conversation) => !catching.has(conversation))),
|
|
875
|
+
Promise.all(awaited.map((conversation) => catching.get(conversation))).then(() => read(awaited.filter((conversation) => owed(conversation) && !catching.has(conversation)))),
|
|
876
|
+
]);
|
|
733
877
|
if (behind.size > 0)
|
|
734
878
|
progress.complete = false;
|
|
735
879
|
},
|
|
@@ -771,27 +915,38 @@ export function createConversationStore(deps) {
|
|
|
771
915
|
reopened() {
|
|
772
916
|
sending.clear();
|
|
773
917
|
},
|
|
918
|
+
lost() {
|
|
919
|
+
catching.clear();
|
|
920
|
+
},
|
|
774
921
|
watch(conversation, options, deliver) {
|
|
775
|
-
const
|
|
776
|
-
const key = JSON.stringify([conversation, limit ?? null]);
|
|
922
|
+
const asked = askedOf(options);
|
|
923
|
+
const key = JSON.stringify([conversation, asked.limit, asked.after ?? null, asked.total]);
|
|
777
924
|
const view = views.get(key) ?? {
|
|
778
925
|
conversation,
|
|
779
|
-
|
|
926
|
+
asked,
|
|
780
927
|
watchers: new Set(),
|
|
781
928
|
window: null,
|
|
929
|
+
more: false,
|
|
930
|
+
total: null,
|
|
782
931
|
};
|
|
783
932
|
views.set(key, view);
|
|
784
933
|
const watcher = { notify: deliver, ready: false };
|
|
785
934
|
view.watchers.add(watcher);
|
|
786
935
|
void deps
|
|
787
936
|
.durably(async (local) => {
|
|
788
|
-
view.window
|
|
937
|
+
if (view.window !== null)
|
|
938
|
+
return;
|
|
939
|
+
const { messages, more } = await local.messageWindow(conversation, asked.limit, asked.before);
|
|
940
|
+
view.window = messages;
|
|
941
|
+
view.more = more;
|
|
942
|
+
view.total = asked.total ? await local.messageCount(conversation) : null;
|
|
789
943
|
})
|
|
790
944
|
.then(() => {
|
|
791
945
|
if (deps.closed() || !view.watchers.has(watcher))
|
|
792
946
|
return;
|
|
793
947
|
watcher.ready = true;
|
|
794
|
-
|
|
948
|
+
const window = view.window ?? [];
|
|
949
|
+
watcher.notify(viewOf(conversation, window, sharedFrame(view, window)));
|
|
795
950
|
})
|
|
796
951
|
.catch(() => { });
|
|
797
952
|
return () => {
|
|
@@ -838,12 +993,15 @@ export function createConversationStore(deps) {
|
|
|
838
993
|
if (event.kind === 'list' || event.kind === 'listed' || event.kind === 'unlisted') {
|
|
839
994
|
if (event.kind === 'list') {
|
|
840
995
|
listing.clear();
|
|
841
|
-
for (const entry of event.entries)
|
|
996
|
+
for (const entry of event.entries) {
|
|
842
997
|
listing.set(entry.conversation, { ...entry });
|
|
998
|
+
creations.delete(entry.conversation);
|
|
999
|
+
}
|
|
843
1000
|
listKnown = true;
|
|
844
1001
|
}
|
|
845
1002
|
else if (event.kind === 'listed') {
|
|
846
1003
|
listing.set(event.entry.conversation, { ...event.entry });
|
|
1004
|
+
creations.delete(event.entry.conversation);
|
|
847
1005
|
}
|
|
848
1006
|
else {
|
|
849
1007
|
listing.delete(event.conversation);
|
package/dist/entry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,SAAS,EAEf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AA0D7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAE3E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAMpE;AAkCD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7D;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACzF,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,SAAS,EAEf,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AA0D7E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAE3E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAMpE;AAkCD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7D;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACzF,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,CAsDlE"}
|
package/dist/entry.js
CHANGED
|
@@ -131,7 +131,7 @@ export function entryScope(rooms) {
|
|
|
131
131
|
locator: room.locator,
|
|
132
132
|
path,
|
|
133
133
|
before: [],
|
|
134
|
-
after: rowsOf(room.locator, path, passingFrontmatter(collection, path) ?? null, composition, null, null),
|
|
134
|
+
after: rowsOf(room.locator, path, passingFrontmatter(collection, path) ?? null, composition, null, null, null),
|
|
135
135
|
}));
|
|
136
136
|
});
|
|
137
137
|
readSide.apply({
|
package/dist/host.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type MdRuntimeOptions } from './connection.js';
|
|
2
2
|
import type { RuntimeDemand } from './acquisition.js';
|
|
3
3
|
import type { PortReach } from './reach.js';
|
|
4
|
-
import type { CapacityCause, CodeAvailability, Persistence, Readiness } from './readiness.js';
|
|
4
|
+
import type { CapacityCause, CodeAvailability, Persistence, Readiness, SearchObligation } from './readiness.js';
|
|
5
|
+
import type { EntrySeed } from './seed.js';
|
|
5
6
|
import { type RuntimePort } from './wire.js';
|
|
6
7
|
export type MdRuntimeHostOptions = MdRuntimeOptions & {
|
|
7
8
|
deploymentFacts?: unknown;
|
|
@@ -10,11 +11,14 @@ export type AttachedPort = {
|
|
|
10
11
|
detach(): void;
|
|
11
12
|
narrow(reach: PortReach): void;
|
|
12
13
|
readiness(deliver: (readiness: Readiness) => void): () => void;
|
|
14
|
+
answered(queries: readonly unknown[], done: () => void): void;
|
|
13
15
|
code(code: CodeAvailability, capacity: CapacityCause | null): void;
|
|
16
|
+
search(search: SearchObligation): void;
|
|
14
17
|
};
|
|
15
18
|
export type MdRuntimeHost = {
|
|
16
|
-
attach(port: RuntimePort, app: string, release?: string, reach?: PortReach, code?: CodeAvailability): AttachedPort;
|
|
19
|
+
attach(port: RuntimePort, app: string, release?: string, reach?: PortReach, code?: CodeAvailability, search?: SearchObligation): AttachedPort;
|
|
17
20
|
acquire(demand: RuntimeDemand): void;
|
|
21
|
+
seed(entry: EntrySeed): void;
|
|
18
22
|
persisted(answer: Persistence): void;
|
|
19
23
|
endAuthorization(holder?: string): Promise<void>;
|
|
20
24
|
lose(locators: readonly string[]): Promise<void>;
|
|
@@ -22,8 +26,9 @@ export type MdRuntimeHost = {
|
|
|
22
26
|
};
|
|
23
27
|
export declare function serveMdRuntime(options: MdRuntimeHostOptions): MdRuntimeHost;
|
|
24
28
|
export type { RuntimeDemand } from './acquisition.js';
|
|
29
|
+
export { entrySeedOf, type EntrySeed } from './seed.js';
|
|
25
30
|
export type { PortReach, ReachedDocument } from './reach.js';
|
|
26
|
-
export type { CapacityCause, CodeAvailability, Persistence } from './readiness.js';
|
|
31
|
+
export type { CapacityCause, CodeAvailability, Persistence, SearchObligation, } from './readiness.js';
|
|
27
32
|
export { createRecovery, retryDelay, type Attempt, type Attempted, type AttemptOptions, type Recovery, type RecoveryOptions, } from './recovery.js';
|
|
28
33
|
export { AUTHORED_SCHEMA, authoredBinding, authoredBy, authoredHolder, bindAuthored, openDatabase, STORE_SCHEMA, } from './store.js';
|
|
29
34
|
export type { RuntimePort } from './wire.js';
|
package/dist/host.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,EAItB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAGL,KAAK,WAAW,EAOjB,MAAM,WAAW,CAAC;AAInB,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,IAAI,IAAI,CAAC;IACf,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CACJ,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,SAAS,EACjB,IAAI,CAAC,EAAE,gBAAgB,EACvB,MAAM,CAAC,EAAE,gBAAgB,GACxB,YAAY,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAiHF,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAyK3E;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,EACd,UAAU,EACV,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,eAAe,EACf,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|