@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.
Files changed (57) hide show
  1. package/AGENTS.md +55 -19
  2. package/README.md +7 -6
  3. package/dist/adapter.d.ts +30 -2
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +15 -2
  7. package/dist/bootstrap.d.ts.map +1 -1
  8. package/dist/bootstrap.js +1 -0
  9. package/dist/client.d.ts +6 -3
  10. package/dist/client.d.ts.map +1 -1
  11. package/dist/client.js +35 -0
  12. package/dist/connection.d.ts +8 -5
  13. package/dist/connection.d.ts.map +1 -1
  14. package/dist/connection.js +70 -27
  15. package/dist/conversation.d.ts +17 -6
  16. package/dist/conversation.d.ts.map +1 -1
  17. package/dist/conversation.js +167 -78
  18. package/dist/host.d.ts +1 -0
  19. package/dist/host.d.ts.map +1 -1
  20. package/dist/host.js +1 -0
  21. package/dist/index.d.ts +3 -3
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/memory.d.ts +3 -1
  24. package/dist/memory.d.ts.map +1 -1
  25. package/dist/memory.js +20 -1
  26. package/dist/model.d.ts +10 -6
  27. package/dist/model.d.ts.map +1 -1
  28. package/dist/model.js +6 -3
  29. package/dist/paths.d.ts +0 -1
  30. package/dist/paths.d.ts.map +1 -1
  31. package/dist/paths.js +0 -16
  32. package/dist/query.d.ts +1 -1
  33. package/dist/query.d.ts.map +1 -1
  34. package/dist/query.js +71 -33
  35. package/dist/reach.d.ts.map +1 -1
  36. package/dist/reach.js +9 -16
  37. package/dist/react.d.ts +39 -0
  38. package/dist/react.d.ts.map +1 -0
  39. package/dist/react.js +63 -0
  40. package/dist/read-side.d.ts.map +1 -1
  41. package/dist/read-side.js +102 -46
  42. package/dist/replica.d.ts +3 -3
  43. package/dist/replica.d.ts.map +1 -1
  44. package/dist/replica.js +4 -3
  45. package/dist/rows.d.ts +2 -1
  46. package/dist/rows.d.ts.map +1 -1
  47. package/dist/rows.js +75 -38
  48. package/dist/save.d.ts +1 -0
  49. package/dist/save.d.ts.map +1 -1
  50. package/dist/save.js +89 -45
  51. package/dist/store.d.ts +5 -1
  52. package/dist/store.d.ts.map +1 -1
  53. package/dist/store.js +13 -2
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -1
  56. package/dist/wire.js +2 -0
  57. package/package.json +14 -2
@@ -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
- cards: declaredCards,
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
- ...withdrawn.map((batch) => ({ batch, returned: { kind: 'withdrawn' } })).reverse(),
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 withdrawn)
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 declaredCards() {
858
+ function declaredAgents() {
845
859
  for (const capability of capabilities) {
846
- if (capability.conversationCards !== undefined)
847
- return capability.conversationCards;
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
- stale.add(room.locator);
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
- options.adapter.roomStream?.hold(heldRooms([...discovered.values()]));
1530
- }
1552
+ if (attempt === 'opened' && !handed)
1553
+ progress.reachable = false;
1531
1554
  }
1532
1555
  finally {
1533
1556
  notifyReady();
1534
1557
  }
1535
- if (attempt === 'opened')
1558
+ if (attempt !== 'opened') {
1559
+ await finishOpening(progress);
1536
1560
  return;
1537
- await finishOpening(progress);
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);
@@ -1,18 +1,28 @@
1
- import type { ConversationAction, ConversationCards, ConversationEvent, ConversationMessage, ConversationStream, ProcessCommand, SessionOption, TurnContext } from './adapter.js';
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, QueryDocument } from './query.js';
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
- card: Required<QueryDocument>;
12
- agent: Required<QueryDocument> | null;
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
- cards(): ConversationCards | undefined;
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): void;
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":"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"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}