@agentshouse/mdruntime-families 0.1.0-cb4fa0f3f8f25 → 0.1.0-cb5bf9bcc7bae

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.
@@ -32,25 +32,20 @@ export type Capability = {
32
32
  name: string;
33
33
  limits?: readonly ProviderLimit[];
34
34
  actions?: readonly ActionDeclaration[];
35
- conversationAgents?: ConversationAgents;
36
- };
37
- export type ConversationAgents = {
38
- locator: string;
39
- type: string;
40
- identity: string;
41
- name: string;
42
- retired?: string;
43
35
  };
44
36
  export type ListedConversation = {
45
37
  conversation: string;
46
38
  agent: string;
39
+ agentName: string;
40
+ agentRetired: boolean;
47
41
  name: string;
48
42
  created: string;
49
43
  finished: string | null;
50
44
  outcome: string | null;
51
45
  waiting: boolean;
46
+ newest: string | null;
52
47
  };
53
- export type ConversationAction = 'conversation.create' | 'conversation.send' | 'conversation.answer' | 'conversation.interrupt' | 'conversation.kill' | 'conversation.cancel' | 'conversation.delete' | 'conversation.history';
48
+ export type ConversationAction = 'conversations/create' | 'conversations/send' | 'conversations/interaction/answer' | 'conversations/interrupt' | 'conversations/kill' | 'conversations/delete';
54
49
  export type ConversationMessage = {
55
50
  identity: string;
56
51
  turn: string;
@@ -141,6 +136,10 @@ export type SessionOption = (SessionOptionNaming & {
141
136
  type: 'boolean';
142
137
  currentValue: boolean;
143
138
  });
139
+ export type RunningSubagent = {
140
+ description: string;
141
+ activity: string | null;
142
+ };
144
143
  export type ConversationEvent = {
145
144
  kind: 'turn';
146
145
  conversation: string;
@@ -166,6 +165,10 @@ export type ConversationEvent = {
166
165
  kind: 'starting';
167
166
  conversation: string;
168
167
  step: string | null;
168
+ } | {
169
+ kind: 'subagents';
170
+ conversation: string;
171
+ subagents: readonly RunningSubagent[];
169
172
  } | {
170
173
  kind: 'link';
171
174
  conversation: string;
@@ -184,6 +187,9 @@ export type ConversationEvent = {
184
187
  } | {
185
188
  kind: 'list';
186
189
  entries: readonly ListedConversation[];
190
+ whole: boolean;
191
+ more: boolean;
192
+ cursor: string | null;
187
193
  } | {
188
194
  kind: 'listed';
189
195
  entry: ListedConversation;
@@ -191,9 +197,17 @@ export type ConversationEvent = {
191
197
  kind: 'unlisted';
192
198
  conversation: string;
193
199
  };
200
+ export type ListedAgent = {
201
+ agent: string;
202
+ name: string;
203
+ retired: boolean;
204
+ };
194
205
  export type ConversationStream = {
195
206
  replicate(conversations: readonly string[]): void;
207
+ hold(cursor: string | null): void;
196
208
  observe(notify: (event: ConversationEvent) => void): () => void;
209
+ agents?(): Promise<readonly ListedAgent[] | null>;
210
+ history?(request: ConversationHistoryRequest): Promise<ActionResult>;
197
211
  };
198
212
  export type ActionDeclaration = {
199
213
  name: string;
@@ -223,10 +237,6 @@ export type Discovery = {
223
237
  providerLimits: readonly ProviderLimit[];
224
238
  retention: Retention;
225
239
  member?: Member;
226
- covered?: readonly string[];
227
- };
228
- export type DiscoveryScope = {
229
- readonly authorities: readonly string[];
230
240
  };
231
241
  export type TransportUncertainty = {
232
242
  kind: 'transport-uncertainty';
@@ -255,7 +265,7 @@ export type ContractUnavailable = ProviderRefusal & {
255
265
  export type DiscoverResult = Discovery | TransportUncertainty | RevokedAuthorization | ContractUnavailable;
256
266
  export type PageToken = string;
257
267
  export type ChangeAuthor = {
258
- kind: Open<'user' | 'site' | 'inbox'>;
268
+ kind: Open<'user' | 'site' | 'inbox' | 'app'>;
259
269
  id: string;
260
270
  name: string;
261
271
  };
@@ -289,11 +299,10 @@ export type BootstrapRequest = {
289
299
  selection: string;
290
300
  pageToken?: PageToken;
291
301
  held?: HeldContent;
292
- received?: Uint8Array;
293
302
  arriving?: (bytes: number) => void;
303
+ signal?: AbortSignal;
294
304
  };
295
305
  export type BootstrapInventory = {
296
- readonly parts: number;
297
306
  readonly bytes: number;
298
307
  };
299
308
  export type RoomModels = {
@@ -310,8 +319,7 @@ export type BootstrapPage = {
310
319
  binaryFiles: Readonly<Record<string, BinaryFile>>;
311
320
  folders?: readonly string[];
312
321
  pageToken?: PageToken;
313
- inventory?: BootstrapInventory;
314
- received?: Uint8Array;
322
+ bytes?: number;
315
323
  };
316
324
  export type BootstrapResult = BootstrapPage | {
317
325
  kind: 'beyond-horizon';
@@ -386,7 +394,7 @@ export type HistoryAuthor = {
386
394
  kind: 'user';
387
395
  id: string;
388
396
  } | {
389
- kind: 'site' | 'inbox';
397
+ kind: 'site' | 'inbox' | 'app';
390
398
  id: string;
391
399
  name: string;
392
400
  };
@@ -469,52 +477,44 @@ export type HeldRoom = {
469
477
  locator: string;
470
478
  roomVersion: string;
471
479
  };
472
- export type HeldRevisions = (locator: string, paths: readonly string[]) => Promise<ReadonlyMap<string, string>>;
480
+ export type RoomChange = {
481
+ kind: 'room-change';
482
+ locator: string;
483
+ from: string;
484
+ roomVersion: string;
485
+ read(): Promise<RefreshPage>;
486
+ };
487
+ export type AuthorityChange = {
488
+ kind: 'authority-changed';
489
+ rooms: readonly DiscoveredRoom[];
490
+ left: readonly string[];
491
+ member?: Member;
492
+ };
473
493
  export type RoomStreamEvent = {
474
494
  kind: 'opened';
495
+ } | {
496
+ kind: 'discovered';
497
+ discovery: Discovery;
475
498
  } | {
476
499
  kind: 'closed';
477
500
  revoked: boolean;
478
501
  lost: boolean;
479
502
  } | {
480
- kind: 'opening';
503
+ kind: 'caught-up';
481
504
  expired: readonly string[];
482
- } | {
483
- kind: 'authority-changed';
484
- scope?: DiscoveryScope;
485
- } | {
486
- kind: 'room-version';
487
- locator: string;
488
- roomVersion: string;
489
- };
490
- export type KeptReceipt = {
491
- key: string;
492
- head: unknown;
493
- };
494
- export type StreamReceipts = {
495
- heads(): Promise<readonly KeptReceipt[]>;
496
- parts(key: string, count: number): Promise<readonly unknown[]>;
497
- keep(key: string, head: unknown, part?: {
498
- index: number;
499
- value: unknown;
500
- }): Promise<void>;
501
- drop(keys: readonly string[]): Promise<void>;
502
- };
505
+ } | AuthorityChange | RoomChange;
503
506
  export type RoomStream = {
504
507
  hold(rooms: readonly HeldRoom[]): void;
505
- reopen(): void;
506
- published(locator: string, roomVersion: string): void;
507
- observe(notify: (event: RoomStreamEvent) => void, receipts: StreamReceipts, revisions: HeldRevisions): () => void;
508
+ observe(notify: (event: RoomStreamEvent) => void): () => void;
508
509
  };
509
510
  export type Adapter = {
510
511
  readonly localSaves?: true;
511
- readonly exhaustiveDiscovery?: true;
512
512
  readonly roomTypes?: string;
513
513
  readonly nameableRoomTypes?: readonly string[];
514
514
  authorize(): Promise<Authorization>;
515
- discover(authorization: Authorization, scope?: DiscoveryScope): Promise<DiscoverResult>;
515
+ discover?(authorization: Authorization): Promise<DiscoverResult>;
516
516
  bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;
517
- refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;
517
+ refresh?(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;
518
518
  mutate(authorization: Authorization, request: MutationRequest, keep: (upload: unknown) => Promise<void>): Promise<MutationResult>;
519
519
  history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;
520
520
  binary(authorization: Authorization, request: BinaryRequest): Promise<BinaryResult>;
@@ -1,6 +1,6 @@
1
1
  import type { AppRoom, ConnectionRefusal, HistoryQuery, RoomSchemas, SavedParts, SavedRoomDraft, SaveResult } from './connection.js';
2
2
  import type { Member, ServiceMode } from './adapter.js';
3
- import type { ChatDraft, ConversationAgent, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
3
+ import type { ChatDraft, ConversationAgent, ConversationAnswer, ConversationEntry, ConversationOptions, ConversationView } from './conversation.js';
4
4
  import { type Observation } from './observation.js';
5
5
  import type { AttachAnswer, BinaryAnswer, CallResult, DownloadAnswer, HistoryAnswer, Offline, QueueEntry, Resolution } from './outcome.js';
6
6
  import type { DocumentQuery, DocumentResult, GroupQuery, GroupResult, PendingResult } from './query.js';
@@ -35,10 +35,9 @@ export type MdRuntimeClient = {
35
35
  read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;
36
36
  create(input: unknown): Promise<CallResult>;
37
37
  send(conversation: string, operation?: string, draft?: ChatDraft): Promise<CallResult | Offline>;
38
- answer(conversation: string, answer: unknown): Promise<CallResult>;
38
+ answer(conversation: string, answer: ConversationAnswer): Promise<CallResult>;
39
39
  interrupt(conversation: string): Promise<CallResult>;
40
40
  kill(conversation: string): Promise<CallResult>;
41
- cancel(conversation: string, turn: string): Promise<CallResult>;
42
41
  delete(conversation: string): Promise<CallResult>;
43
42
  };
44
43
  chatDraft: {
@@ -1,8 +1,6 @@
1
1
  import { type Document } from '@agentshouse/mdmodel';
2
2
  import type { ModelState } from './model.js';
3
3
  import type { MdModelIdentity } from './adapter.js';
4
- import { type Paths } from './shared.js';
5
- import type { Refused } from './transfer.js';
6
4
  export declare const MD_MODEL: MdModelIdentity;
7
5
  export type Collection = {
8
6
  text: Readonly<Record<string, string>>;
@@ -25,6 +23,5 @@ export declare function selected(composition: Composition, path: string): boolea
25
23
  export declare function governing(composition: Composition, path: string): ModelState;
26
24
  export declare function collectionOf(text: Readonly<Record<string, string>>, composition: Composition): Collection;
27
25
  export declare function documentsOf(collection: Collection): Generator<number, Iterable<readonly [string, Document]>, void>;
28
- export declare function unreadable(text: Paths<string>, paths?: Iterable<string> | null): Generator<number, Refused | null, void>;
29
26
  export declare function validRoot(root: unknown): root is string;
30
27
  export declare function available(composition: Composition): boolean;
@@ -145,9 +145,7 @@ export type ReadinessPort = {
145
145
  export type ComposedRuntime = RuntimeView & {
146
146
  seed(entry: EntrySeed): void;
147
147
  stop(): Promise<void>;
148
- lose(locators: readonly string[]): Promise<void>;
149
148
  persisted(answer: Persistence): void;
150
- shown(onScreen: boolean): void;
151
149
  within(reach: PortReach | null, port: ReadinessPort): NarrowedView;
152
150
  };
153
151
  export declare function composeRuntime(options: MdRuntimeOptions): ComposedRuntime;
@@ -1,8 +1,7 @@
1
- import type { ConversationAction, ConversationAgents, ConversationEvent, ConversationMessage, ConversationStream, ProcessCommand, SessionOption, TurnContext } from './adapter.js';
1
+ import type { ConversationAction, ConversationEvent, ConversationHistoryRequest, ConversationMessage, ConversationStream, ListedConversation, ProcessCommand, RunningSubagent, SessionOption, TurnContext } from './adapter.js';
2
2
  import { type ChangeSet } from './change-set.js';
3
3
  import type { Open } from './open.js';
4
4
  import { type CallResult, type Offline } from './outcome.js';
5
- import type { DocumentResult, PendingResult } from './query.js';
6
5
  import type { CycleProgress } from './status.js';
7
6
  import type { ChatDraftRecord, HeldConversation, RuntimeStore } from './store.js';
8
7
  export type ConversationState = Open<'working' | 'asking' | 'idle'>;
@@ -10,7 +9,7 @@ export type ConversationEntry = {
10
9
  conversation: string;
11
10
  agent: {
12
11
  identity: string;
13
- name: string | null;
12
+ name: string;
14
13
  };
15
14
  name: string;
16
15
  created: string;
@@ -51,6 +50,7 @@ export type ConversationView = {
51
50
  commands: readonly ProcessCommand[];
52
51
  options: readonly SessionOption[];
53
52
  starting: string | null;
53
+ subagents: readonly RunningSubagent[];
54
54
  link: {
55
55
  connected: boolean;
56
56
  } | null;
@@ -64,26 +64,27 @@ export type ConversationSurface = {
64
64
  read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;
65
65
  create(input: unknown): Promise<CallResult>;
66
66
  send(conversation: string, operation?: string, draft?: ChatDraft): Promise<CallResult | Offline>;
67
- answer(conversation: string, answer: unknown): Promise<CallResult>;
67
+ answer(conversation: string, answer: ConversationAnswer): Promise<CallResult>;
68
68
  interrupt(conversation: string): Promise<CallResult>;
69
69
  kill(conversation: string): Promise<CallResult>;
70
- cancel(conversation: string, turn: string): Promise<CallResult>;
71
70
  delete(conversation: string): Promise<CallResult>;
72
71
  };
72
+ export type ConversationAnswer = {
73
+ interaction_id: string;
74
+ response: unknown;
75
+ };
73
76
  export type ChatDraftSurface = {
74
77
  write(conversation: string, draft: ChatDraft, revision?: string): Promise<void>;
75
78
  prepend(conversation: string, draft: ChatDraft): Promise<void>;
76
79
  discard(conversation: string): Promise<void>;
77
80
  };
78
81
  export type ConversationDependencies = {
79
- agents(): ConversationAgents | undefined;
80
- documents(agents: ConversationAgents, after: string | undefined): Promise<DocumentResult | PendingResult>;
81
82
  call(name: ConversationAction, input: unknown): Promise<CallResult>;
83
+ history(request: ConversationHistoryRequest): Promise<CallResult>;
82
84
  durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;
83
85
  stream(): ConversationStream | undefined;
84
86
  publish(set: ChangeSet): void;
85
87
  online(): boolean;
86
- listed(): boolean;
87
88
  full(): boolean;
88
89
  closed(): boolean;
89
90
  unanswered(): void;
@@ -92,15 +93,13 @@ export type ConversationDependencies = {
92
93
  export type ConversationStore = {
93
94
  surface: ConversationSurface;
94
95
  chatDraft: ChatDraftSurface;
95
- hydrate(held: readonly HeldConversation[], drafts: readonly ChatDraftRecord[]): void;
96
+ hydrate(held: readonly HeldConversation[], drafts: readonly ChatDraftRecord[], list: readonly ListedConversation[] | null, cursor: string | null): void;
96
97
  reconcile(): Promise<void>;
97
98
  catchUp(progress: CycleProgress): Promise<void>;
98
99
  resend(progress: CycleProgress): Promise<void>;
99
100
  current(): boolean;
100
101
  known(): boolean;
101
102
  learned(): void;
102
- declared(): void;
103
- reconnected(): void;
104
103
  reopened(): void;
105
104
  lost(): void;
106
105
  watch(conversation: string, options: ConversationOptions, deliver: (view: ConversationView) => void): () => void;
@@ -2,7 +2,6 @@ import type { Persistence } from './readiness.js';
2
2
  export type RuntimeShell = {
3
3
  persistence: Persistence;
4
4
  generation: string | null;
5
- onScreen: boolean;
6
5
  keepGeneration(value: string): void | Promise<void>;
7
6
  dropGeneration(): void | Promise<void>;
8
7
  cleanUp?(): Promise<number>;
@@ -1,5 +1,5 @@
1
1
  import type { MdRuntimeClient } from './client.js';
2
- import type { ShownAnswer } from './outcome.js';
2
+ import { type ShownAnswer } from './outcome.js';
3
3
  export declare const ROOM_MEDIA = "room-media";
4
4
  type Show = (room: string, path: string, revision?: string) => Promise<ShownAnswer>;
5
5
  export declare function shownBy(show: Show, client: MdRuntimeClient): MdRuntimeClient;
@@ -59,5 +59,4 @@ export declare function modelTypes(state: ModelState): TypesResult;
59
59
  export declare function storedModel(state: ModelState): StoredModel;
60
60
  export declare function cached(state: ModelState): ModelState;
61
61
  export declare function sameModel(left: ModelIdentity, right: ModelIdentity): boolean;
62
- export declare function sameTyping(left: ModelState, right: ModelState): boolean;
63
62
  export declare function referenceField(facts: ValueFacts | undefined): boolean;
@@ -80,8 +80,5 @@ export type QueueEntry = {
80
80
  readonly batch: ChangeBatch;
81
81
  } & (Submission | {
82
82
  readonly state: 'local';
83
- } | {
84
- readonly state: 'accepted';
85
- readonly roomVersion: string;
86
83
  });
87
84
  export {};
@@ -235,7 +235,7 @@ export type GroupShape = {
235
235
  export type PlanArea = {
236
236
  room: string;
237
237
  path: string;
238
- types: readonly string[];
238
+ open: readonly string[];
239
239
  };
240
240
  export type PlanReach = {
241
241
  rooms: readonly string[];
@@ -9,7 +9,7 @@ export type ReachedDocument = {
9
9
  export type ReachedArea = {
10
10
  readonly room: string;
11
11
  readonly path: string;
12
- readonly types: readonly string[];
12
+ readonly open: readonly string[];
13
13
  };
14
14
  export type PortReach = {
15
15
  readonly rooms: readonly string[];
@@ -1,6 +1,6 @@
1
1
  import type { Open } from './open.js';
2
2
  export type CodeAvailability = Open<'stored' | 'absent'>;
3
- export type RoomPreparation = Open<'complete' | 'acquiring' | 'preparing' | 'refused' | 'unadmitted'>;
3
+ export type RoomPreparation = Open<'complete' | 'acquiring' | 'preparing' | 'unadmitted'>;
4
4
  export type RoomCoverage = {
5
5
  readonly room: string;
6
6
  readonly state: RoomPreparation;
@@ -19,28 +19,17 @@ export type Durability = Open<'persistent' | 'best-effort'>;
19
19
  export type ConnectionAvailability = Open<'connected' | 'connecting' | 'unreachable'>;
20
20
  export type HouseOutcome = Open<'open' | 'write-halted' | 'refused'>;
21
21
  export type Space = Open<'full'>;
22
- export type RefusedRoom = {
23
- readonly room: string;
24
- readonly name: string;
25
- readonly file: string;
26
- readonly rule: string;
27
- readonly location: string | null;
28
- };
29
- export type InstallationStep = Open<'listing' | 'downloading' | 'writing' | 'replaying'>;
30
- export type InstallationPause = Open<'hidden'>;
22
+ export type InstallationStep = Open<'downloading' | 'writing' | 'replaying'>;
31
23
  export type InstallationAmount = {
32
24
  readonly done: number;
33
25
  readonly total: number;
34
26
  };
35
27
  export type Installation = {
36
28
  readonly step: InstallationStep | null;
37
- readonly paused: InstallationPause | null;
38
29
  readonly rooms: InstallationAmount;
39
- readonly parts: InstallationAmount;
40
30
  readonly bytes: InstallationAmount;
41
- readonly received: InstallationAmount;
42
31
  };
43
- export type ReadinessStatus = Open<'preparing' | 'paused' | 'refused' | 'ready' | 'lost'>;
32
+ export type ReadinessStatus = Open<'preparing' | 'paused' | 'ready' | 'lost'>;
44
33
  export type Readiness = {
45
34
  readonly status: ReadinessStatus;
46
35
  readonly ready: boolean;
@@ -53,7 +42,6 @@ export type Readiness = {
53
42
  readonly house: HouseOutcome;
54
43
  readonly space: Space | null;
55
44
  readonly installation: Installation;
56
- readonly refused: readonly RefusedRoom[];
57
45
  readonly lost: boolean;
58
46
  };
59
47
  export type ReadinessFacts = Omit<Readiness, 'status' | 'ready' | 'usable' | 'durability' | 'coverage'> & {
@@ -21,4 +21,5 @@ export type Recovery = {
21
21
  retire(): Promise<void>;
22
22
  };
23
23
  export declare function retryDelay(tries: number, firstMs?: number, maxMs?: number): number;
24
+ export declare function untilAnswered<T>(ask: () => Promise<T>, signal: AbortSignal, answered?: (answer: T) => boolean): Promise<T>;
24
25
  export declare function createRecovery(options?: RecoveryOptions): Recovery;
@@ -15,7 +15,7 @@ export type ReplicaRecord = {
15
15
  readonly providerOwnedPaths: readonly string[];
16
16
  readonly roomVersion: string;
17
17
  readonly transfer: string;
18
- readonly inventory: BootstrapInventory | null;
18
+ readonly inventory: BootstrapInventory;
19
19
  readonly key: number;
20
20
  };
21
21
  export type HeldReplica = {
@@ -34,7 +34,6 @@ export type Slice = Layer & {
34
34
  readonly held: ReadonlySet<string>;
35
35
  };
36
36
  export declare function compositionOf(record: Pick<ReplicaRecord, 'model' | 'typedSelection'>, builtIn: ModelState): Composition;
37
- export declare function sameMembership(record: Pick<ReplicaRecord, 'typedSelection'>, other: Pick<ReplicaRecord, 'typedSelection'>): boolean;
38
37
  export declare function storedRecord(record: ReplicaRecord): string;
39
38
  export declare function slicing(entries: readonly HeldEntry[], paths: Iterable<string>): Generator<number, Slice, void>;
40
39
  export declare function entryAt(layer: Layer & {
@@ -40,6 +40,7 @@ export type RoomDraftParts = {
40
40
  };
41
41
  readonly file?: {
42
42
  readonly blob: Blob;
43
+ readonly base?: string | null;
43
44
  };
44
45
  };
45
46
  export type HeldFile = {
@@ -112,7 +113,7 @@ export type RoomDraftWrite = {
112
113
  export declare function staleWrite(current: RoomDraft | null): RoomDraftWrite;
113
114
  export type ChangedPart = {
114
115
  readonly path: string;
115
- readonly part: Open<'field' | 'section' | 'preamble' | 'markdown' | 'creation' | 'move' | 'removal' | 'file'>;
116
+ readonly part: Open<'field' | 'section' | 'preamble' | 'markdown' | 'move' | 'removal' | 'file'>;
116
117
  readonly name?: string;
117
118
  };
118
119
  export type RoomDraftRecord = {
@@ -132,7 +133,7 @@ export declare function held(current: HeldParts | undefined, parts: RoomDraftPar
132
133
  export declare function underneath(parts: HeldParts, path: string, visible: VisibleLayer | undefined): ChangedUnderneath;
133
134
  export declare function heldFile(blob: Blob, base: string | null): Promise<HeldFile>;
134
135
  export declare function binaryBase(visible: VisibleLayer | undefined, path: string): string | null;
135
- export declare function changedParts(path: string, report: ChangedUnderneath): readonly ChangedPart[];
136
+ export declare function changedParts(path: string, parts: HeldParts, visible: VisibleLayer | undefined): readonly ChangedPart[];
136
137
  export type TextParts = {
137
138
  readonly fields?: Readonly<Record<string, {
138
139
  readonly value: unknown;
@@ -149,6 +150,20 @@ export declare function returnedInto(existing: HeldParts | undefined, returned:
149
150
  export declare function moveTarget(move: {
150
151
  readonly to: string;
151
152
  }): string;
153
+ export declare function readSavedParts(named: readonly {
154
+ readonly path: string;
155
+ readonly parts: unknown;
156
+ }[]): readonly {
157
+ readonly path: string;
158
+ readonly parts: RoomDraftParts;
159
+ }[];
160
+ export declare function partsChanges(named: readonly {
161
+ readonly path: string;
162
+ readonly parts: unknown;
163
+ }[]): {
164
+ readonly changes: readonly Change[];
165
+ readonly preconditions: readonly Precondition[];
166
+ };
152
167
  export declare function changesOf(path: string, parts: HeldParts): {
153
168
  changes: readonly Change[];
154
169
  bases: readonly Precondition[];
@@ -1,13 +1,9 @@
1
1
  import type { Open } from './open.js';
2
- import type { ProviderRefusal } from './adapter.js';
3
2
  import type { ReturnReason } from './room-draft.js';
4
3
  export type AttentionEntry = {
5
4
  room: string;
6
5
  path: string;
7
6
  returned: ReturnReason;
8
- } | {
9
- room: string;
10
- refusal: ProviderRefusal;
11
7
  };
12
8
  export type UnsentChange = {
13
9
  room: string;
@@ -1,13 +1,13 @@
1
- import type { BootstrapInventory, Capability, KeptReceipt, Member, ProviderLimit } from './adapter.js';
1
+ import type { BootstrapInventory, Capability, ListedConversation, Member, ProviderLimit } from './adapter.js';
2
2
  import type { ChangeBatch } from './change.js';
3
3
  import { type Composition } from './collection.js';
4
4
  import type { Plan } from './query.js';
5
5
  import type { ReplicaRecord } from './replica.js';
6
6
  import type { Submission } from './outcome.js';
7
7
  import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
8
- import { type ModelState, type StoredModel } from './model.js';
8
+ import type { ModelState, StoredModel } from './model.js';
9
9
  import type { SearchWindow } from './search.js';
10
- import type { CommittedWrite, ConversationWrite, CountedRoom, HeldConversation, HeldEntry, KeptPart, MessageWindow, QueryAnswer, QueryRoom, Referrer, RoomCommit, RuntimeDatabase, SearchAsk, StoredEntry, StoredFile, TypedEntry, View, Walked } from './tables.js';
10
+ import type { CommittedWrite, ConversationWrite, CountedRoom, HeldConversation, HeldEntry, MessageWindow, QueryAnswer, QueryRoom, Referrer, RoomCommit, RuntimeDatabase, SearchAsk, StoredEntry, StoredFile, TypedEntry, View } from './tables.js';
11
11
  export type { ConversationWrite, HeldConversation, MessageWindow } from './tables.js';
12
12
  export type TransferRecord = {
13
13
  readonly locator: string;
@@ -15,8 +15,6 @@ export type TransferRecord = {
15
15
  readonly selection: string;
16
16
  readonly from: string;
17
17
  readonly last: string;
18
- readonly pageToken: string | null;
19
- readonly inventory: BootstrapInventory | null;
20
18
  readonly done: BootstrapInventory;
21
19
  readonly models: {
22
20
  readonly collection: ModelState;
@@ -26,17 +24,11 @@ export type TransferRecord = {
26
24
  export type StoredReplica = Omit<ReplicaRecord, 'model'> & {
27
25
  readonly model: StoredModel;
28
26
  };
29
- export type StoredTransfer = Omit<TransferRecord, 'models'> & {
30
- readonly models: {
31
- readonly collection: StoredModel;
32
- };
33
- };
34
27
  export type PendingState = {
35
28
  readonly drafts: readonly SavedDraft[];
36
29
  readonly submission: Submission;
37
30
  readonly lost: boolean;
38
31
  readonly upload?: unknown;
39
- readonly accepted?: string;
40
32
  };
41
33
  export type TargetRecord = {
42
34
  established: boolean;
@@ -76,10 +68,6 @@ export type AuthoredWrite = {
76
68
  saved?: ReadonlyMap<string, readonly SavedDraft[]>;
77
69
  roomDrafts?: readonly RoomDraftRecord[];
78
70
  consumedRoomDrafts?: readonly string[];
79
- accepted?: readonly {
80
- readonly id: string;
81
- readonly roomVersion: string;
82
- }[];
83
71
  };
84
72
  export type StagedPage = {
85
73
  readonly entries: readonly StoredEntry[];
@@ -91,8 +79,6 @@ export type RefreshedPage = StagedPage & {
91
79
  };
92
80
  export type Opened = {
93
81
  readonly rooms: ReadonlyMap<string, StoredReplica>;
94
- readonly transfers: ReadonlyMap<string, StoredTransfer>;
95
- readonly kept: ReadonlyMap<string, ReadonlyMap<string, number>>;
96
82
  readonly unindexed: ReadonlySet<number>;
97
83
  readonly overlaid: ReadonlyMap<number, ReadonlySet<string>>;
98
84
  readonly erasing: boolean;
@@ -103,6 +89,8 @@ export type Opened = {
103
89
  readonly member: Member | null;
104
90
  readonly targets: Readonly<Record<string, TargetRecord>>;
105
91
  readonly presentation: readonly PresentationRecord[];
92
+ readonly conversationList: readonly ListedConversation[] | null;
93
+ readonly conversationCursor: string | null;
106
94
  };
107
95
  export type Commit = {
108
96
  readonly rooms: readonly RoomCommit[];
@@ -119,7 +107,6 @@ export type RuntimeStore = {
119
107
  entries(key: number, view: View, paths: readonly string[]): Promise<readonly HeldEntry[]>;
120
108
  typed(key: number, view: View, paths: readonly string[]): Promise<readonly TypedEntry[]>;
121
109
  referrers(key: number, view: View, targets: readonly string[], kinds: readonly string[]): Promise<readonly Referrer[]>;
122
- walk(key: number, view: View, after: string | null, bytes: number): Promise<Walked>;
123
110
  files(key: number, view: View, after: string | null, limit: number): Promise<readonly {
124
111
  readonly path: string;
125
112
  readonly revision: string;
@@ -127,15 +114,13 @@ export type RuntimeStore = {
127
114
  folders(key: number, view: View, paths: readonly string[]): Promise<readonly string[]>;
128
115
  typedWithin(key: number, view: View, roots: readonly string[], within: boolean): Promise<boolean>;
129
116
  search(ask: SearchAsk): Promise<SearchWindow>;
130
- stage(record: TransferRecord, composition: Composition, page: StagedPage, written?: string): Promise<number | null>;
131
- transferPart(locator: string, token: string): Promise<Uint8Array | null>;
132
- keepParts(parts: readonly KeptPart[]): Promise<void>;
117
+ stage(record: TransferRecord, composition: Composition, page: StagedPage): Promise<number | null>;
133
118
  refresh(key: number, composition: Composition, page: RefreshedPage): Promise<void>;
134
119
  unrefresh(key: number): Promise<void>;
135
120
  commit(commit: Commit): Promise<CommittedWrite>;
136
121
  fence(locators: readonly string[]): Promise<void>;
137
122
  erase(locator: string | null, limit: number): Promise<boolean>;
138
- abandon(locator: string, kept?: boolean): Promise<number | null>;
123
+ abandon(locator: string): Promise<void>;
139
124
  release(key: number): Promise<void>;
140
125
  rederive(key: number, composition: Composition, bytes: number, ms: number, floor: number): Promise<{
141
126
  readonly done: boolean;
@@ -162,13 +147,6 @@ export type RuntimeStore = {
162
147
  keepRoomDraft(record: RoomDraftRecord, files: readonly StoredFile[]): Promise<void>;
163
148
  discardRoomDraft(locator: string, path: string): Promise<void>;
164
149
  fences(): Promise<readonly string[]>;
165
- receivedHeads(): Promise<readonly KeptReceipt[]>;
166
- receivedParts(key: string, count: number): Promise<readonly unknown[]>;
167
- keepReceived(key: string, head: unknown, part?: {
168
- index: number;
169
- value: unknown;
170
- }): Promise<void>;
171
- dropReceived(keys: readonly string[]): Promise<void>;
172
150
  generation(): Promise<string | null>;
173
151
  rememberGeneration(value: string): Promise<void>;
174
152
  file(key: string, type: string): Promise<Blob>;
@@ -42,16 +42,6 @@ export type ReplicaOpened = {
42
42
  readonly key: number;
43
43
  readonly record: string;
44
44
  }[];
45
- readonly transfers: readonly {
46
- readonly locator: string;
47
- readonly key: number;
48
- readonly record: string;
49
- }[];
50
- readonly kept: readonly {
51
- readonly locator: string;
52
- readonly token: string;
53
- readonly bytes: number;
54
- }[];
55
45
  readonly keys: readonly HeldKey[];
56
46
  readonly facts: Readonly<Record<string, string>>;
57
47
  readonly presentation: readonly {
@@ -96,20 +86,14 @@ export type CountedRoom = {
96
86
  readonly key: number;
97
87
  readonly roots: readonly string[];
98
88
  };
99
- export type Walked = {
100
- readonly entries: readonly HeldEntry[];
101
- readonly next: string | null;
102
- };
103
89
  export declare function entered(connection: Connection, locator: string, composition: Composition, rows: readonly StoredEntry[]): number;
104
90
  export declare function stage(connection: Connection, request: {
105
91
  readonly locator: string;
106
92
  readonly transfer: string;
107
- readonly record: string;
108
93
  readonly key: number | null;
109
94
  readonly fingerprint: string;
110
95
  readonly entries: readonly StoredEntry[];
111
96
  readonly folders: readonly string[];
112
- readonly written?: string;
113
97
  }): number;
114
98
  export declare function refreshing(connection: Connection, request: {
115
99
  readonly key: number;
@@ -123,7 +107,7 @@ export declare function unrefresh(connection: Connection, key: number): null;
123
107
  export declare function counts(connection: Connection, rooms: readonly CountedRoom[]): number[];
124
108
  export declare function commit(connection: Connection, rooms: readonly RoomCommit[]): Committed;
125
109
  export declare function fenceRooms(connection: Connection, locators: readonly string[]): null;
126
- export declare function abandon(connection: Connection, locator: string, kept: boolean): number | null;
110
+ export declare function abandon(connection: Connection, locator: string): null;
127
111
  export declare function release(connection: Connection, key: number): null;
128
112
  export declare function erase(connection: Connection, locator: string | null, limit: number): {
129
113
  readonly remaining: boolean;
@@ -135,19 +119,11 @@ export declare function rederive(connection: Connection, key: number, composed:
135
119
  export declare function entries(connection: Connection, key: number, view: View, list: readonly string[]): HeldEntry[];
136
120
  export declare function typed(connection: Connection, key: number, view: View, list: readonly string[]): TypedEntry[];
137
121
  export declare function referrers(connection: Connection, key: number, view: View, targets: readonly string[], kinds: readonly string[]): Referrer[];
138
- export declare function walk(connection: Connection, key: number, view: View, after: string | null, bytes: number): Walked;
139
122
  export declare function files(connection: Connection, key: number, view: View, after: string | null, limit: number): {
140
123
  readonly path: string;
141
124
  readonly revision: string;
142
125
  }[];
143
126
  export declare function folders(connection: Connection, key: number, view: View, list: readonly string[]): string[];
144
127
  export declare function typedWithin(connection: Connection, key: number, view: View, roots: readonly string[], within: boolean): boolean;
145
- export declare function transferPart(connection: Connection, locator: string, token: string): Uint8Array | null;
146
- export type KeptPart = {
147
- readonly locator: string;
148
- readonly token: string;
149
- readonly part: Uint8Array;
150
- };
151
- export declare function keepParts(connection: Connection, parts: readonly KeptPart[]): null;
152
128
  export declare function opened(connection: Connection): ReplicaOpened;
153
129
  export declare function ended(connection: Connection): void;
@@ -1,12 +1,11 @@
1
1
  import { type QueryAnswer, type QueryRoom } from './compile.js';
2
- import type { KeptReceipt } from './adapter.js';
3
2
  import type { Composed } from './collection.js';
4
3
  import { type SearchAsk } from './fulltext.js';
5
4
  import { type ConversationWrite, type HeldConversation, type MessageWindow } from './messages.js';
6
5
  import type { Plan } from './query.js';
7
6
  import type { SearchWindow } from './search.js';
8
- import { type Committed, type CountedRoom, type HeldEntry, type KeptPart, type ReplicaOpened, type Referrer, type RoomCommit, type StoredEntry, type TypedEntry, type View, type Walked } from './stored.js';
9
- export type { Committed, CountedRoom, HeldEntry, KeptPart, OverlayEntry, ReplicaOpened, Referrer, RoomCommit, StoredEntry, TypedEntry, View, Walked, } from './stored.js';
7
+ import { type Committed, type CountedRoom, type HeldEntry, type ReplicaOpened, type Referrer, type RoomCommit, type StoredEntry, type TypedEntry, type View } from './stored.js';
8
+ export type { Committed, CountedRoom, HeldEntry, OverlayEntry, ReplicaOpened, Referrer, RoomCommit, StoredEntry, TypedEntry, View, } from './stored.js';
10
9
  export type { QueryAnswer, QueryRoom } from './compile.js';
11
10
  export type { SearchAsk } from './fulltext.js';
12
11
  export type { ConversationWrite, HeldConversation, MessageWindow } from './messages.js';
@@ -78,10 +77,6 @@ export type AuthoredRows = {
78
77
  readonly path: string;
79
78
  })[];
80
79
  readonly consumedRoomDrafts?: readonly string[];
81
- readonly amendments?: readonly {
82
- readonly id: string;
83
- readonly amendment: string;
84
- }[];
85
80
  };
86
81
  export type HeldQueues = {
87
82
  readonly queues: readonly {
@@ -182,12 +177,6 @@ export interface RuntimeRequests {
182
177
  readonly targets: readonly string[];
183
178
  readonly kinds: readonly string[];
184
179
  }, readonly Referrer[]>;
185
- readonly 'replica.walk': Asked<{
186
- readonly key: number;
187
- readonly view: View;
188
- readonly after: string | null;
189
- readonly bytes: number;
190
- }, Walked>;
191
180
  readonly 'replica.files': Asked<{
192
181
  readonly key: number;
193
182
  readonly view: View;
@@ -212,28 +201,14 @@ export interface RuntimeRequests {
212
201
  readonly rooms: readonly CountedRoom[];
213
202
  }, readonly number[]>;
214
203
  readonly 'replica.search': Asked<SearchAsk, SearchWindow>;
215
- readonly 'replica.received': Asked<Nothing, readonly KeptReceipt[]>;
216
- readonly 'replica.receivedParts': Asked<{
217
- readonly key: string;
218
- readonly count: number;
219
- }, readonly unknown[]>;
220
204
  readonly 'replica.stage': Asked<{
221
205
  readonly locator: string;
222
206
  readonly transfer: string;
223
- readonly record: string;
224
207
  readonly key: number | null;
225
208
  readonly fingerprint: string;
226
209
  readonly entries: readonly StoredEntry[];
227
210
  readonly folders: readonly string[];
228
- readonly written?: string;
229
211
  }, number | null>;
230
- readonly 'replica.transferPart': Asked<{
231
- readonly locator: string;
232
- readonly token: string;
233
- }, Uint8Array | null>;
234
- readonly 'replica.keepParts': Asked<{
235
- readonly parts: readonly KeptPart[];
236
- }, null>;
237
212
  readonly 'replica.refresh': Asked<{
238
213
  readonly key: number;
239
214
  readonly composed: Composed;
@@ -260,8 +235,7 @@ export interface RuntimeRequests {
260
235
  }>;
261
236
  readonly 'replica.abandon': Asked<{
262
237
  readonly locator: string;
263
- readonly kept: boolean;
264
- }, number | null>;
238
+ }, null>;
265
239
  readonly 'replica.release': Asked<{
266
240
  readonly key: number;
267
241
  }, null>;
@@ -283,17 +257,6 @@ export interface RuntimeRequests {
283
257
  readonly app: string;
284
258
  readonly value: string;
285
259
  }, null>;
286
- readonly 'replica.receive': Asked<{
287
- readonly key: string;
288
- readonly head: string;
289
- readonly part?: {
290
- readonly index: number;
291
- readonly value: string;
292
- };
293
- }, null>;
294
- readonly 'replica.unreceive': Asked<{
295
- readonly keys: readonly string[];
296
- }, null>;
297
260
  readonly 'opened.find': Asked<{
298
261
  readonly locator: string;
299
262
  readonly path: string;
@@ -150,10 +150,6 @@ declare const MEMBERS: {
150
150
  readonly reach: 'within';
151
151
  readonly effect: 'action';
152
152
  };
153
- readonly 'conversation.cancel': {
154
- readonly reach: 'within';
155
- readonly effect: 'action';
156
- };
157
153
  readonly 'conversation.delete': {
158
154
  readonly reach: 'within';
159
155
  readonly effect: 'action';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentshouse/mdruntime-families",
3
- "version": "0.1.0-cb4fa0f3f8f25",
3
+ "version": "0.1.0-cb5bf9bcc7bae",
4
4
  "description": "react-admin and Refine data providers over the MD Runtime client",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -28,7 +28,7 @@
28
28
  "LICENSE"
29
29
  ],
30
30
  "dependencies": {
31
- "@agentshouse/mdmodel": "0.1.0-c9952fa046c11"
31
+ "@agentshouse/mdmodel": "0.1.0-cf528e67c49a9"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "@refinedev/core": ">=5",
@@ -1,15 +0,0 @@
1
- export type Paths<V> = Readonly<Record<string, V>>;
2
- export declare function entriesIn<V>(map: Paths<V>): Generator<readonly [string, V]>;
3
- export declare function keysIn(...maps: readonly Paths<unknown>[]): Generator<number, Set<string>, void>;
4
- export declare function sortedKeys(map: Paths<unknown>): Generator<number, readonly string[], void>;
5
- export declare function sorting(keys: Iterable<string>): Generator<number, readonly string[], void>;
6
- export declare function sharing<V>(map: Paths<V>): Generator<number, Paths<V>, void>;
7
- export declare function shared<V>(map: Paths<V>): Paths<V>;
8
- export declare function patched<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Paths<V>;
9
- export declare function patching<V>(base: Paths<V>, set: Iterable<readonly [string, V]>, removed?: Iterable<string>): Generator<number, Paths<V>, void>;
10
- export declare function sizeOf<V>(map: Paths<V>): number;
11
- export declare function differences<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): Generator<number, ReadonlySet<string>, void>;
12
- export declare function differing<V>(left: Paths<V>, right: Paths<V>, same?: (left: V, right: V) => boolean): ReadonlySet<string>;
13
- export declare function drafted<V>(base: Paths<V>): Record<string, V>;
14
- export declare function settled<V>(draft: Record<string, V>): Paths<V>;
15
- export declare function settling<V>(draft: Record<string, V>): Generator<number, Paths<V>, void>;
@@ -1,9 +0,0 @@
1
- import type { Refusal } from '@agentshouse/mdmodel';
2
- export type Unconfirmed = {
3
- kind: 'unconfirmed';
4
- };
5
- export type Refused = {
6
- kind: 'refused';
7
- refusal: Refusal;
8
- };
9
- export declare const unconfirmed: Unconfirmed;