@agentshouse/mdruntime 0.1.0-c30ed2b8e04d5 → 0.1.0-c389df724fd2f
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 +55 -19
- package/README.md +7 -6
- package/dist/adapter.d.ts +30 -2
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +15 -2
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +1 -0
- package/dist/client.d.ts +6 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +35 -0
- package/dist/connection.d.ts +8 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +70 -27
- package/dist/conversation.d.ts +17 -6
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +167 -78
- package/dist/host.d.ts +1 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/memory.d.ts +3 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +20 -1
- package/dist/model.d.ts +10 -6
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -3
- 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 +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +71 -33
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +9 -16
- package/dist/react.d.ts +39 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +63 -0
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +102 -46
- package/dist/replica.d.ts +3 -3
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +4 -3
- package/dist/rows.d.ts +2 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +75 -38
- package/dist/save.d.ts +1 -0
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +89 -45
- package/dist/store.d.ts +5 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +13 -2
- package/dist/wire.d.ts +2 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +2 -0
- package/package.json +14 -2
package/dist/connection.js
CHANGED
|
@@ -82,6 +82,7 @@ export function composeRuntime(options) {
|
|
|
82
82
|
let withdrawStream;
|
|
83
83
|
const announced = new Map();
|
|
84
84
|
let underway = null;
|
|
85
|
+
let handed = false;
|
|
85
86
|
const submitting = new Map();
|
|
86
87
|
const answering = new Map();
|
|
87
88
|
let complete = false;
|
|
@@ -104,8 +105,10 @@ export function composeRuntime(options) {
|
|
|
104
105
|
let haltedRefusal = false;
|
|
105
106
|
let openSignals = 0;
|
|
106
107
|
const serviceModeListeners = new Set();
|
|
108
|
+
let member = null;
|
|
109
|
+
const memberListeners = new Set();
|
|
107
110
|
const conversations = createConversationStore({
|
|
108
|
-
|
|
111
|
+
agents: declaredAgents,
|
|
109
112
|
documents: (locator) => readSide.query(planOf({ rooms: [locator], select: 'all' }, roomFacts())),
|
|
110
113
|
call: (name, input) => invokeAction(name, input),
|
|
111
114
|
durably,
|
|
@@ -244,6 +247,10 @@ export function composeRuntime(options) {
|
|
|
244
247
|
for (const listener of storageLossListeners)
|
|
245
248
|
listener(storageLoss);
|
|
246
249
|
}
|
|
250
|
+
function emitMember() {
|
|
251
|
+
for (const listener of memberListeners)
|
|
252
|
+
listener(member);
|
|
253
|
+
}
|
|
247
254
|
function moveTo(next) {
|
|
248
255
|
if (closed)
|
|
249
256
|
return;
|
|
@@ -299,10 +306,6 @@ export function composeRuntime(options) {
|
|
|
299
306
|
for (const app of set.presentations)
|
|
300
307
|
emitPresentation(app);
|
|
301
308
|
conversations.changed(set);
|
|
302
|
-
const cards = declaredCards();
|
|
303
|
-
if (cards !== undefined && set.documents.some((change) => change.locator === cards.locator)) {
|
|
304
|
-
scheduleCurrency();
|
|
305
|
-
}
|
|
306
309
|
}
|
|
307
310
|
function stopTimer() {
|
|
308
311
|
if (resetTimer === undefined)
|
|
@@ -399,6 +402,7 @@ export function composeRuntime(options) {
|
|
|
399
402
|
rooms.set(room.locator, {
|
|
400
403
|
name: room.name,
|
|
401
404
|
locator: room.locator,
|
|
405
|
+
handle: room.handle,
|
|
402
406
|
operations: room.operations,
|
|
403
407
|
replica: room.replica,
|
|
404
408
|
model: modelTypes(modelOf(room.locator)),
|
|
@@ -490,7 +494,7 @@ export function composeRuntime(options) {
|
|
|
490
494
|
return model;
|
|
491
495
|
}
|
|
492
496
|
async function hydrate(opened) {
|
|
493
|
-
const [records, queues, kept, presented, held, chatDrafts, lastCompleted, declared, named] = await Promise.all([
|
|
497
|
+
const [records, queues, kept, presented, held, chatDrafts, lastCompleted, declared, named, known,] = await Promise.all([
|
|
494
498
|
opened.all(),
|
|
495
499
|
opened.queues(),
|
|
496
500
|
opened.roomDrafts(),
|
|
@@ -500,9 +504,11 @@ export function composeRuntime(options) {
|
|
|
500
504
|
opened.lastCompleted(),
|
|
501
505
|
opened.providerLimits(),
|
|
502
506
|
opened.capabilities(),
|
|
507
|
+
opened.member(),
|
|
503
508
|
]);
|
|
504
509
|
limits = declared;
|
|
505
510
|
capabilities = named;
|
|
511
|
+
member = known;
|
|
506
512
|
roomDrafts.clear();
|
|
507
513
|
for (const record of kept)
|
|
508
514
|
rememberRoomDraft(record);
|
|
@@ -566,6 +572,8 @@ export function composeRuntime(options) {
|
|
|
566
572
|
applyChangeSet(read);
|
|
567
573
|
if (replicas.size > 0)
|
|
568
574
|
emitRooms();
|
|
575
|
+
if (member !== null)
|
|
576
|
+
emitMember();
|
|
569
577
|
for (const locator of locators)
|
|
570
578
|
emitQueue(locator);
|
|
571
579
|
publishRoomDrafts(false);
|
|
@@ -615,8 +623,12 @@ export function composeRuntime(options) {
|
|
|
615
623
|
async function settle(local, locator, before, confirmed, queue, settling = {}) {
|
|
616
624
|
const withdrawn = withdrawals(confirmed, queue, withdrawable);
|
|
617
625
|
const kept = queue.filter((batch) => !withdrawn.includes(batch));
|
|
626
|
+
const unqueued = withdrawn.map((batch) => ({
|
|
627
|
+
batch,
|
|
628
|
+
returned: landed(batch, confirmed) ? null : { kind: 'withdrawn' },
|
|
629
|
+
}));
|
|
618
630
|
const returning = [
|
|
619
|
-
...
|
|
631
|
+
...[...unqueued].reverse(),
|
|
620
632
|
...(settling.leaving === undefined ? [] : [settling.leaving]),
|
|
621
633
|
];
|
|
622
634
|
const written = new Map();
|
|
@@ -647,8 +659,9 @@ export function composeRuntime(options) {
|
|
|
647
659
|
}
|
|
648
660
|
for (const record of written.values())
|
|
649
661
|
rememberRoomDraft(record);
|
|
650
|
-
for (const batch of
|
|
651
|
-
journal.record(`outcome ${locator} ${batch.id} withdrawn`);
|
|
662
|
+
for (const { batch, returned } of unqueued) {
|
|
663
|
+
journal.record(`outcome ${locator} ${batch.id} ${returned === null ? 'landed' : 'withdrawn'}`);
|
|
664
|
+
}
|
|
652
665
|
replicas.set(locator, replicaOf(confirmed, kept, before));
|
|
653
666
|
return changeSet(locator, before ?? null, replicas.get(locator) ?? null, {
|
|
654
667
|
room: settling.room,
|
|
@@ -744,6 +757,7 @@ export function composeRuntime(options) {
|
|
|
744
757
|
operations: room.operations,
|
|
745
758
|
providerOwnedPaths: room.providerOwnedPaths,
|
|
746
759
|
providerLimits: limits,
|
|
760
|
+
handle: room.handle,
|
|
747
761
|
visible: replica.visible,
|
|
748
762
|
changes: parts.flatMap(({ changes }) => changes),
|
|
749
763
|
bases: parts.flatMap(({ bases }) => bases),
|
|
@@ -841,10 +855,10 @@ export function composeRuntime(options) {
|
|
|
841
855
|
return { kind: 'transport-uncertainty' };
|
|
842
856
|
}
|
|
843
857
|
}
|
|
844
|
-
function
|
|
858
|
+
function declaredAgents() {
|
|
845
859
|
for (const capability of capabilities) {
|
|
846
|
-
if (capability.
|
|
847
|
-
return capability.
|
|
860
|
+
if (capability.conversationAgents !== undefined)
|
|
861
|
+
return capability.conversationAgents;
|
|
848
862
|
}
|
|
849
863
|
return undefined;
|
|
850
864
|
}
|
|
@@ -944,9 +958,9 @@ export function composeRuntime(options) {
|
|
|
944
958
|
if (!continuing())
|
|
945
959
|
return unconfirmed;
|
|
946
960
|
if (refreshed.kind === 'still-current') {
|
|
947
|
-
if (sourceRefusals.has(room.locator))
|
|
948
|
-
return unconfirmed;
|
|
949
961
|
stale.delete(room.locator);
|
|
962
|
+
if (sourceRefusals.has(room.locator))
|
|
963
|
+
return null;
|
|
950
964
|
if (unreadable.delete(room.locator)) {
|
|
951
965
|
scopedRefusals.delete(room.locator);
|
|
952
966
|
list(room, true);
|
|
@@ -976,7 +990,10 @@ export function composeRuntime(options) {
|
|
|
976
990
|
return null;
|
|
977
991
|
}
|
|
978
992
|
async function withhold(withheld, room, local, progress) {
|
|
979
|
-
|
|
993
|
+
if (withheld.kind === 'refused')
|
|
994
|
+
stale.delete(room.locator);
|
|
995
|
+
else
|
|
996
|
+
stale.add(room.locator);
|
|
980
997
|
if (withheld.kind === 'scoped-refusal') {
|
|
981
998
|
await scoped(withheld, room, local);
|
|
982
999
|
}
|
|
@@ -1034,7 +1051,7 @@ export function composeRuntime(options) {
|
|
|
1034
1051
|
logAccepted(room.locator, submitted, accepted);
|
|
1035
1052
|
const applied = options.adapter.reached(room.locator, held, accepted.roomVersion)
|
|
1036
1053
|
? { kind: 'staged', confirmed: current.confirmed }
|
|
1037
|
-
: applyReturned(current.confirmed, accepted.documents, accepted.revisions, accepted.removals, accepted.attachments, options.adapter.follows(room.locator, held, accepted.roomVersion)
|
|
1054
|
+
: applyReturned(current.confirmed, accepted.documents, accepted.revisions, accepted.changes, accepted.removals, accepted.attachments, options.adapter.follows(room.locator, held, accepted.roomVersion)
|
|
1038
1055
|
? accepted.roomVersion
|
|
1039
1056
|
: held, accepted.roomVersion);
|
|
1040
1057
|
if (applied.kind !== 'staged') {
|
|
@@ -1180,7 +1197,8 @@ export function composeRuntime(options) {
|
|
|
1180
1197
|
return;
|
|
1181
1198
|
}
|
|
1182
1199
|
const set = await settle(local, room.locator, current, current.confirmed, current.queue.filter((batch) => batch.id !== head.id), {
|
|
1183
|
-
leaving: result.kind === 'expired' && landed(head, current.confirmed)
|
|
1200
|
+
leaving: (result.kind === 'expired' && landed(head, current.confirmed)) ||
|
|
1201
|
+
(result.kind === 'conflicted' && landed(head, current.confirmed, result.affected))
|
|
1184
1202
|
? { ...left, returned: null }
|
|
1185
1203
|
: left,
|
|
1186
1204
|
});
|
|
@@ -1329,8 +1347,10 @@ export function composeRuntime(options) {
|
|
|
1329
1347
|
const outcome = prepared[index];
|
|
1330
1348
|
return outcome?.status === 'fulfilled' && outcome.value;
|
|
1331
1349
|
});
|
|
1332
|
-
if (attempt === 'opened')
|
|
1350
|
+
if (attempt === 'opened') {
|
|
1333
1351
|
options.adapter.roomStream?.hold(heldRooms(ready));
|
|
1352
|
+
handed = true;
|
|
1353
|
+
}
|
|
1334
1354
|
const loaded = await Promise.allSettled(ready
|
|
1335
1355
|
.filter((room) => attempt === 'unstreamed' || !replicas.has(room.locator))
|
|
1336
1356
|
.map((room) => loadRoom(room, local, progress)));
|
|
@@ -1433,9 +1453,6 @@ export function composeRuntime(options) {
|
|
|
1433
1453
|
}
|
|
1434
1454
|
progress.reachable = false;
|
|
1435
1455
|
progress.complete = false;
|
|
1436
|
-
if (attempt === 'opened') {
|
|
1437
|
-
options.adapter.roomStream?.hold(heldRooms([...discovered.values()]));
|
|
1438
|
-
}
|
|
1439
1456
|
notifyReady();
|
|
1440
1457
|
return;
|
|
1441
1458
|
}
|
|
@@ -1482,6 +1499,12 @@ export function composeRuntime(options) {
|
|
|
1482
1499
|
limits = result.providerLimits;
|
|
1483
1500
|
await local.declare(limits, capabilities);
|
|
1484
1501
|
}
|
|
1502
|
+
const signedIn = result.member ?? null;
|
|
1503
|
+
if (JSON.stringify(signedIn) !== JSON.stringify(member)) {
|
|
1504
|
+
await local.keepMember(signedIn);
|
|
1505
|
+
member = signedIn;
|
|
1506
|
+
emitMember();
|
|
1507
|
+
}
|
|
1485
1508
|
await applyDiscovery(result.rooms, local);
|
|
1486
1509
|
await synchronize(result.rooms, local, progress, attempt);
|
|
1487
1510
|
}
|
|
@@ -1514,6 +1537,7 @@ export function composeRuntime(options) {
|
|
|
1514
1537
|
complete = false;
|
|
1515
1538
|
recorded = false;
|
|
1516
1539
|
moveTo(transferring(status));
|
|
1540
|
+
handed = false;
|
|
1517
1541
|
try {
|
|
1518
1542
|
const local = await openLocal();
|
|
1519
1543
|
if (closed)
|
|
@@ -1525,16 +1549,22 @@ export function composeRuntime(options) {
|
|
|
1525
1549
|
}
|
|
1526
1550
|
catch {
|
|
1527
1551
|
progress.complete = false;
|
|
1528
|
-
if (attempt === 'opened')
|
|
1529
|
-
|
|
1530
|
-
}
|
|
1552
|
+
if (attempt === 'opened' && !handed)
|
|
1553
|
+
progress.reachable = false;
|
|
1531
1554
|
}
|
|
1532
1555
|
finally {
|
|
1533
1556
|
notifyReady();
|
|
1534
1557
|
}
|
|
1535
|
-
if (attempt
|
|
1558
|
+
if (attempt !== 'opened') {
|
|
1559
|
+
await finishOpening(progress);
|
|
1536
1560
|
return;
|
|
1537
|
-
|
|
1561
|
+
}
|
|
1562
|
+
if (handed || closed || progress.reachable)
|
|
1563
|
+
return;
|
|
1564
|
+
underway = null;
|
|
1565
|
+
journal.record('connection reopen');
|
|
1566
|
+
await rest(progress);
|
|
1567
|
+
options.adapter.roomStream?.reopen();
|
|
1538
1568
|
});
|
|
1539
1569
|
}
|
|
1540
1570
|
function closedSocket(revoked) {
|
|
@@ -1764,7 +1794,10 @@ export function composeRuntime(options) {
|
|
|
1764
1794
|
if (stream === undefined || withdrawConversations !== undefined)
|
|
1765
1795
|
return;
|
|
1766
1796
|
withdrawConversations = stream.observe((event) => {
|
|
1767
|
-
conversations.receive(event)
|
|
1797
|
+
if (conversations.receive(event)) {
|
|
1798
|
+
void ready.then(scheduleCurrency);
|
|
1799
|
+
return;
|
|
1800
|
+
}
|
|
1768
1801
|
if (event.kind !== 'gap' || conversations.current())
|
|
1769
1802
|
return;
|
|
1770
1803
|
show();
|
|
@@ -1821,6 +1854,7 @@ export function composeRuntime(options) {
|
|
|
1821
1854
|
storageLossListeners.clear();
|
|
1822
1855
|
statusListeners.clear();
|
|
1823
1856
|
serviceModeListeners.clear();
|
|
1857
|
+
memberListeners.clear();
|
|
1824
1858
|
readSide.close();
|
|
1825
1859
|
queueSubscriptions.clear();
|
|
1826
1860
|
roomDraftListeners.clear();
|
|
@@ -1882,6 +1916,8 @@ export function composeRuntime(options) {
|
|
|
1882
1916
|
if (topic === 'conversation') {
|
|
1883
1917
|
return conversations.watch(input[0], input[1], deliver);
|
|
1884
1918
|
}
|
|
1919
|
+
if (topic === 'conversations')
|
|
1920
|
+
return conversations.watchList(deliver);
|
|
1885
1921
|
if (topic === 'presentation') {
|
|
1886
1922
|
const listener = {
|
|
1887
1923
|
app: input[0],
|
|
@@ -1936,6 +1972,13 @@ export function composeRuntime(options) {
|
|
|
1936
1972
|
serviceModeListeners.delete(deliver);
|
|
1937
1973
|
};
|
|
1938
1974
|
}
|
|
1975
|
+
if (topic === 'member') {
|
|
1976
|
+
memberListeners.add(deliver);
|
|
1977
|
+
deliver(member);
|
|
1978
|
+
return () => {
|
|
1979
|
+
memberListeners.delete(deliver);
|
|
1980
|
+
};
|
|
1981
|
+
}
|
|
1939
1982
|
if (topic === 'queue') {
|
|
1940
1983
|
const queue = { locator: input[0], notify: deliver };
|
|
1941
1984
|
queueSubscriptions.add(queue);
|
package/dist/conversation.d.ts
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
|
-
import type { ConversationAction,
|
|
1
|
+
import type { ConversationAction, ConversationAgents, ConversationEvent, ConversationMessage, ConversationStream, ProcessCommand, SessionOption, TurnContext } from './adapter.js';
|
|
2
2
|
import { type ChangeSet } from './change-set.js';
|
|
3
3
|
import { type ChatDraftFile } from './file.js';
|
|
4
4
|
import type { CallResult } from './outcome.js';
|
|
5
|
-
import type { DocumentResult
|
|
5
|
+
import type { DocumentResult } from './query.js';
|
|
6
6
|
import type { SearchedMessage } from './search.js';
|
|
7
7
|
import type { CycleProgress } from './status.js';
|
|
8
8
|
import type { ChatDraftRecord, HeldConversation, RuntimeStore } from './store.js';
|
|
9
|
+
export type ConversationState = 'working' | 'asking' | 'idle';
|
|
9
10
|
export type ConversationEntry = {
|
|
10
11
|
conversation: string;
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
agent: {
|
|
13
|
+
identity: string;
|
|
14
|
+
name: string | null;
|
|
15
|
+
};
|
|
16
|
+
name: string;
|
|
17
|
+
created: string;
|
|
18
|
+
finished: string | null;
|
|
19
|
+
outcome: string | null;
|
|
20
|
+
state: ConversationState;
|
|
21
|
+
started: string | null;
|
|
13
22
|
};
|
|
14
23
|
export type RunningTurn = {
|
|
15
24
|
turn: string;
|
|
25
|
+
started: string | null;
|
|
16
26
|
parts: readonly unknown[];
|
|
17
27
|
context: TurnContext | null;
|
|
18
28
|
};
|
|
@@ -51,7 +61,7 @@ export type ChatDraftSurface = {
|
|
|
51
61
|
discard(conversation: string): Promise<void>;
|
|
52
62
|
};
|
|
53
63
|
export type ConversationDependencies = {
|
|
54
|
-
|
|
64
|
+
agents(): ConversationAgents | undefined;
|
|
55
65
|
documents(locator: string): Promise<DocumentResult>;
|
|
56
66
|
call(name: ConversationAction, input: unknown): Promise<CallResult>;
|
|
57
67
|
durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;
|
|
@@ -68,8 +78,9 @@ export type ConversationStore = {
|
|
|
68
78
|
current(): boolean;
|
|
69
79
|
reconnected(): void;
|
|
70
80
|
watch(conversation: string, options: ConversationOptions, deliver: (view: ConversationView) => void): () => void;
|
|
81
|
+
watchList(deliver: (entries: readonly ConversationEntry[]) => void): () => void;
|
|
71
82
|
changed(set: ChangeSet): void;
|
|
72
|
-
receive(event: ConversationEvent):
|
|
83
|
+
receive(event: ConversationEvent): boolean;
|
|
73
84
|
messages(): readonly SearchedMessage[];
|
|
74
85
|
message(conversation: string, identity: string): SearchedMessage | null;
|
|
75
86
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
|