@agentshouse/mdruntime 0.1.0-alpha.45 → 0.1.0-alpha.47

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/dist/adapter.d.ts CHANGED
@@ -22,7 +22,6 @@ export type ReplicaAdmission = {
22
22
  admission: 'admitted' | 'unavailable';
23
23
  };
24
24
  export type DiscoveredRoom = {
25
- collectionRoot: string;
26
25
  name: string;
27
26
  locator: string;
28
27
  roomVersion: string;
@@ -30,6 +29,7 @@ export type DiscoveredRoom = {
30
29
  replica: ReplicaAdmission;
31
30
  attachedModel: ModelIdentity | null;
32
31
  typedSelection?: TypedSelection;
32
+ untypedFolders?: readonly string[];
33
33
  providerOwnedPaths: readonly string[];
34
34
  };
35
35
  export type Capability = {
@@ -66,6 +66,47 @@ export type WorkingNote = {
66
66
  noteId: string;
67
67
  text: string;
68
68
  };
69
+ export type PlanStep = {
70
+ label: string;
71
+ priority?: string;
72
+ status: string;
73
+ };
74
+ export type ProcessCommand = {
75
+ [field: string]: unknown;
76
+ name: string;
77
+ description: string;
78
+ input?: {
79
+ [field: string]: unknown;
80
+ hint: string;
81
+ } | null;
82
+ };
83
+ type SelectValue = {
84
+ [field: string]: unknown;
85
+ value: string;
86
+ name: string;
87
+ description?: string | null;
88
+ };
89
+ type SelectGroup = {
90
+ [field: string]: unknown;
91
+ group: string;
92
+ name: string;
93
+ options: readonly SelectValue[];
94
+ };
95
+ type SessionOptionNaming = {
96
+ [field: string]: unknown;
97
+ id: string;
98
+ name: string;
99
+ description?: string | null;
100
+ category?: string | null;
101
+ };
102
+ export type SessionOption = (SessionOptionNaming & {
103
+ type: 'select';
104
+ currentValue: string;
105
+ options: readonly SelectValue[] | readonly SelectGroup[];
106
+ }) | (SessionOptionNaming & {
107
+ type: 'boolean';
108
+ currentValue: boolean;
109
+ });
69
110
  export type ConversationEvent = {
70
111
  kind: 'growing-text';
71
112
  conversation: string;
@@ -75,7 +116,7 @@ export type ConversationEvent = {
75
116
  kind: 'plan';
76
117
  conversation: string;
77
118
  turn: string;
78
- plan: unknown;
119
+ plan: readonly PlanStep[];
79
120
  } | {
80
121
  kind: 'working-note';
81
122
  conversation: string;
@@ -91,11 +132,11 @@ export type ConversationEvent = {
91
132
  } | {
92
133
  kind: 'commands';
93
134
  conversation: string;
94
- commands: readonly unknown[];
135
+ commands: readonly ProcessCommand[];
95
136
  } | {
96
137
  kind: 'options';
97
138
  conversation: string;
98
- options: readonly unknown[];
139
+ options: readonly SessionOption[];
99
140
  } | {
100
141
  kind: 'accepted-message';
101
142
  conversation: string;
@@ -201,7 +242,7 @@ export type RefreshRequest = {
201
242
  locator: string;
202
243
  selection: string;
203
244
  fromRoomVersion: string;
204
- reach?: string;
245
+ minPosition?: string;
205
246
  pageToken?: PageToken;
206
247
  };
207
248
  export type RefreshPage = {
@@ -299,7 +340,6 @@ export type ActionResult = {
299
340
  export type ModelRequest = {
300
341
  locator: string;
301
342
  attached: 'collection';
302
- collectionRoot: string;
303
343
  model: ModelIdentity | null;
304
344
  } | {
305
345
  locator: string;
@@ -330,4 +370,5 @@ export type Adapter = {
330
370
  conversations?: ConversationStream;
331
371
  serviceMode?: ServiceModeSignal;
332
372
  };
373
+ export {};
333
374
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,eAAO,MAAM,sBAAsB,YACjC,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,cAAc,EACd,kBAAkB,EAClB,yBAAyB,CACjB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAA;CAAE,CAAC;AAE5F,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,qBAAqB,GACrB,mBAAmB,GACnB,qBAAqB,GACrB,wBAAwB,GACxB,mBAAmB,GACnB,qBAAqB,GACrB,qBAAqB,GACrB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAClD,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,SAAS;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,SAAS;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,EAAE,CAAC;KACjE,EAAE,CAAC;IACJ,YAAY,EAAE,SAAS,UAAU,EAAE,CAAC;IACpC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG;IAC5C,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,CAAC;CACnE,CAAC;AACF,MAAM,MAAM,cAAc,GACtB,oBAAoB,GACpB,eAAe,GACf,oBAAoB,GACpB,aAAa,CAAC;AAElB,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAErF,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB,WAAW,GACX;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACD,CAAC,eAAe,GAAG;IACjB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C,CAAC,GACF,CAAC,eAAe,GAAG;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C,CAAC,GACF,gBAAgB,GAChB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB,cAAc,CAAC;AAEnB,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IACtC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB,cAAc,CAAC;AAEnB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,aAAa,CAAA;CAAE,GACvD,CAAC,eAAe,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,GACxC,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE,GAChG;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY,EAAE,uBAAuB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACjF,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAChE,SAAS,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7F,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACvF,MAAM,CACJ,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GACvC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACvF,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACpF,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACvE,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/workspace/packages/mdruntime/src/adapter.ts"],"sourcesContent":["import type { ModelIdentity, ModelResult } from './model.js';\nimport type { ChangeBatch } from './change.js';\n\nexport type Authorization = object;\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const VERSION_1_CAPABILITIES = [\n 'stable-file-ids',\n 'ranked-provider-search',\n 'room-version-notifications',\n 'room-history',\n 'provider-actions',\n 'move-reference-rewrites',\n] as const;\n\nexport type MdModelIdentity = {\n identity: string;\n version: string;\n};\n\nexport type TypedSelection = {\n roots: readonly string[];\n attachedModel: ModelIdentity | null;\n};\n\nexport type OperationScopes = {\n read: readonly string[];\n sync: readonly string[];\n write: readonly string[];\n delete: readonly string[];\n};\nexport type ReplicaAdmission = { selection: string; admission: 'admitted' | 'unavailable' };\n\nexport type DiscoveredRoom = {\n collectionRoot: string;\n name: string;\n locator: string;\n roomVersion: string;\n operations: OperationScopes;\n replica: ReplicaAdmission;\n attachedModel: ModelIdentity | null;\n typedSelection?: TypedSelection;\n providerOwnedPaths: readonly string[];\n};\n\nexport type Capability = {\n name: string;\n limits?: readonly ProviderLimit[];\n actions?: readonly ActionDeclaration[];\n conversationCards?: ConversationCards;\n};\n\nexport type ConversationCards = {\n locator: string;\n type: string;\n identity: string;\n agent: string;\n};\n\nexport type ConversationAction =\n | 'conversation.create'\n | 'conversation.send'\n | 'conversation.answer'\n | 'conversation.interrupt'\n | 'conversation.kill'\n | 'conversation.cancel'\n | 'conversation.delete'\n | 'conversation.history';\n\nexport type ConversationMessage = {\n identity: string;\n turn: string;\n text: string;\n message: unknown;\n};\n\nexport type AcceptedMessage = ConversationMessage & { position: string };\n\nexport type ConversationHistoryRequest = {\n conversation: string;\n after?: string;\n};\n\nexport type ConversationHistoryPage = {\n messages: readonly AcceptedMessage[];\n next?: string;\n};\n\nexport type WorkingNote = { noteId: string; text: string };\n\nexport type ConversationEvent =\n | { kind: 'growing-text'; conversation: string; turn: string; text: string }\n | { kind: 'plan'; conversation: string; turn: string; plan: unknown }\n | { kind: 'working-note'; conversation: string; note: WorkingNote | null }\n | { kind: 'questions'; conversation: string; questions: readonly unknown[] }\n | { kind: 'process'; conversation: string; running: boolean }\n | { kind: 'commands'; conversation: string; commands: readonly unknown[] }\n | { kind: 'options'; conversation: string; options: readonly unknown[] }\n | { kind: 'accepted-message'; conversation: string; message: AcceptedMessage }\n | { kind: 'gap'; conversation: string };\n\nexport type ConversationStream = {\n replicate(conversations: readonly string[]): void;\n observe(notify: (event: ConversationEvent) => void): () => void;\n};\n\nexport type ActionDeclaration = {\n name: string;\n inputShape: unknown;\n resultKind: unknown;\n};\n\nexport type ProviderLimit = {\n name: string;\n value?: number | string;\n};\n\nexport type HistoryRetention =\n | { kind: 'duration'; seconds: number }\n | { kind: 'no-declared-time-bound' };\n\nexport type Retention = {\n history: HistoryRetention;\n outcome: number;\n refreshHorizon: number;\n};\n\nexport type Discovery = {\n kind: 'discovery';\n supportedVersions: readonly number[];\n mdModel: MdModelIdentity;\n rooms: readonly DiscoveredRoom[];\n slots?: readonly {\n slot: string;\n entries: readonly { locator: string; segment: string | null }[];\n }[];\n capabilities: readonly Capability[];\n providerLimits: readonly ProviderLimit[];\n retention: Retention;\n};\n\nexport type TransportUncertainty = { kind: 'transport-uncertainty' };\nexport type RoomNotReadable = { kind: 'room-not-readable'; locator: string };\nexport type RevokedAuthorization = { kind: 'revoked-authorization' };\n\nexport type ProviderRefusal = {\n code: string;\n fields: Readonly<Record<string, unknown>>;\n};\n\nexport type ScopedRefusal = ProviderRefusal & {\n kind: 'scoped-refusal';\n locator: string;\n scope: 'content' | 'sync' | 'model' | 'operation' | 'undisclosed';\n};\nexport type AdapterFailure =\n | TransportUncertainty\n | RoomNotReadable\n | RevokedAuthorization\n | ScopedRefusal;\n\nexport type ContractUnavailable = ProviderRefusal & { kind: 'contract-unavailable' };\n\nexport type DiscoverResult =\n | Discovery\n | TransportUncertainty\n | RevokedAuthorization\n | ContractUnavailable;\n\nexport type PageToken = string;\n\nexport type ChangeAuthor =\n | { kind: 'user'; id: string; name: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HeadChange = { author: ChangeAuthor | null; time: string };\n\nexport type BootstrapRequest = {\n locator: string;\n selection: string;\n pageToken?: PageToken;\n};\n\nexport type BootstrapPage = {\n kind: 'bootstrap';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type BootstrapResult = BootstrapPage | AdapterFailure;\n\nexport type RefreshRequest = {\n locator: string;\n selection: string;\n fromRoomVersion: string;\n reach?: string;\n pageToken?: PageToken;\n};\n\nexport type RefreshPage = {\n kind: 'net-advancement';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n removals: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type RefreshResult =\n | { kind: 'still-current' }\n | RefreshPage\n | { kind: 'beyond-horizon' }\n | RetryableRefusal\n | AdapterFailure;\n\nexport type MutationRequest = {\n locator: string;\n changeBatch: ChangeBatch;\n upload?: unknown;\n};\n\nexport type RetryableRefusal = ProviderRefusal & {\n kind: 'retryable-refusal';\n reset?: string;\n};\n\nexport type ServiceMode = 'open' | 'write-halted';\n\nexport type ServiceModeSignal = {\n observe(notify: (mode: ServiceMode) => void): () => void;\n};\n\nexport type MutationResult =\n | {\n kind: 'accepted';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n removals: readonly string[];\n author?: string;\n time?: string;\n }\n | (ProviderRefusal & {\n kind: 'conflicted';\n roomVersion?: string;\n affected: Readonly<Record<string, string>>;\n })\n | (ProviderRefusal & {\n kind: 'rejected';\n affected: Readonly<Record<string, string>>;\n })\n | RetryableRefusal\n | { kind: 'write-halted' }\n | { kind: 'expired' }\n | AdapterFailure;\n\nexport type HistoryAuthor =\n | { kind: 'user'; id: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HistoryRevision = {\n revision: string;\n author: HistoryAuthor;\n time: string;\n};\n\nexport type HistoryRequest = {\n locator: string;\n path: string;\n revision?: string;\n pageToken?: PageToken;\n};\n\nexport type HistoryResult =\n | {\n kind: 'history';\n revisions: readonly HistoryRevision[];\n pageToken?: PageToken;\n }\n | {\n kind: 'revision';\n content: string;\n }\n | { kind: 'no-history' }\n | AdapterFailure;\n\nexport type ActionRequest = {\n name: string;\n input: unknown;\n};\n\nexport type RoomVersionAt = {\n locator: string;\n roomVersion: string;\n};\n\nexport type ActionResult =\n | { kind: 'action'; result: unknown; at?: RoomVersionAt }\n | (ProviderRefusal & { kind: 'rejected' })\n | AdapterFailure;\n\nexport type ModelRequest =\n | { locator: string; attached: 'collection'; collectionRoot: string; model: ModelIdentity | null }\n | {\n locator: string;\n attached: 'typed-selection';\n roots: readonly string[];\n model: ModelIdentity | null;\n };\n\nexport type RoomVersionNotification = {\n locator: string;\n roomVersion: string;\n modelChanged?: true;\n};\n\nexport type SelectedRooms = {\n select(locators: readonly string[]): void;\n observe(notify: (notification: RoomVersionNotification) => void): () => void;\n};\n\nexport type Adapter = {\n model(authorization: Authorization, request: ModelRequest): Promise<ModelResult>;\n authorize(): Promise<Authorization>;\n discover(authorization: Authorization): Promise<DiscoverResult>;\n bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;\n refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;\n mutate(\n authorization: Authorization,\n request: MutationRequest,\n keep: (upload: unknown) => Promise<void>,\n ): Promise<MutationResult>;\n history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;\n action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;\n reached(locator: string, roomVersion: string, target: string): boolean;\n roomVersions?: SelectedRooms;\n conversations?: ConversationStream;\n serviceMode?: ServiceModeSignal;\n};\n"],"names":["ROOM_CONTRACT_VERSION","VERSION_1_CAPABILITIES"],"mappings":"AAKA,OAAO,MAAMA,wBAAwB,EAAE;AAEvC,OAAO,MAAMC,yBAAyB;IACpC;IACA;IACA;IACA;IACA;IACA;CACD,CAAU"}
1
+ {"version":3,"sources":["/workspace/packages/mdruntime/src/adapter.ts"],"sourcesContent":["import type { ModelIdentity, ModelResult } from './model.js';\nimport type { ChangeBatch } from './change.js';\n\nexport type Authorization = object;\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const VERSION_1_CAPABILITIES = [\n 'stable-file-ids',\n 'ranked-provider-search',\n 'room-version-notifications',\n 'room-history',\n 'provider-actions',\n 'move-reference-rewrites',\n] as const;\n\nexport type MdModelIdentity = {\n identity: string;\n version: string;\n};\n\nexport type TypedSelection = {\n roots: readonly string[];\n attachedModel: ModelIdentity | null;\n};\n\nexport type OperationScopes = {\n read: readonly string[];\n sync: readonly string[];\n write: readonly string[];\n delete: readonly string[];\n};\nexport type ReplicaAdmission = { selection: string; admission: 'admitted' | 'unavailable' };\n\nexport type DiscoveredRoom = {\n name: string;\n locator: string;\n roomVersion: string;\n operations: OperationScopes;\n replica: ReplicaAdmission;\n attachedModel: ModelIdentity | null;\n typedSelection?: TypedSelection;\n untypedFolders?: readonly string[];\n providerOwnedPaths: readonly string[];\n};\n\nexport type Capability = {\n name: string;\n limits?: readonly ProviderLimit[];\n actions?: readonly ActionDeclaration[];\n conversationCards?: ConversationCards;\n};\n\nexport type ConversationCards = {\n locator: string;\n type: string;\n identity: string;\n agent: string;\n};\n\nexport type ConversationAction =\n | 'conversation.create'\n | 'conversation.send'\n | 'conversation.answer'\n | 'conversation.interrupt'\n | 'conversation.kill'\n | 'conversation.cancel'\n | 'conversation.delete'\n | 'conversation.history';\n\nexport type ConversationMessage = {\n identity: string;\n turn: string;\n text: string;\n message: unknown;\n};\n\nexport type AcceptedMessage = ConversationMessage & { position: string };\n\nexport type ConversationHistoryRequest = {\n conversation: string;\n after?: string;\n};\n\nexport type ConversationHistoryPage = {\n messages: readonly AcceptedMessage[];\n next?: string;\n};\n\nexport type WorkingNote = { noteId: string; text: string };\n\nexport type PlanStep = { label: string; priority?: string; status: string };\n\nexport type ProcessCommand = {\n [field: string]: unknown;\n name: string;\n description: string;\n input?: { [field: string]: unknown; hint: string } | null;\n};\n\ntype SelectValue = {\n [field: string]: unknown;\n value: string;\n name: string;\n description?: string | null;\n};\n\ntype SelectGroup = {\n [field: string]: unknown;\n group: string;\n name: string;\n options: readonly SelectValue[];\n};\n\ntype SessionOptionNaming = {\n [field: string]: unknown;\n id: string;\n name: string;\n description?: string | null;\n category?: string | null;\n};\n\nexport type SessionOption =\n | (SessionOptionNaming & {\n type: 'select';\n currentValue: string;\n options: readonly SelectValue[] | readonly SelectGroup[];\n })\n | (SessionOptionNaming & { type: 'boolean'; currentValue: boolean });\n\nexport type ConversationEvent =\n | { kind: 'growing-text'; conversation: string; turn: string; text: string }\n | { kind: 'plan'; conversation: string; turn: string; plan: readonly PlanStep[] }\n | { kind: 'working-note'; conversation: string; note: WorkingNote | null }\n | { kind: 'questions'; conversation: string; questions: readonly unknown[] }\n | { kind: 'process'; conversation: string; running: boolean }\n | { kind: 'commands'; conversation: string; commands: readonly ProcessCommand[] }\n | { kind: 'options'; conversation: string; options: readonly SessionOption[] }\n | { kind: 'accepted-message'; conversation: string; message: AcceptedMessage }\n | { kind: 'gap'; conversation: string };\n\nexport type ConversationStream = {\n replicate(conversations: readonly string[]): void;\n observe(notify: (event: ConversationEvent) => void): () => void;\n};\n\nexport type ActionDeclaration = {\n name: string;\n inputShape: unknown;\n resultKind: unknown;\n};\n\nexport type ProviderLimit = {\n name: string;\n value?: number | string;\n};\n\nexport type HistoryRetention =\n | { kind: 'duration'; seconds: number }\n | { kind: 'no-declared-time-bound' };\n\nexport type Retention = {\n history: HistoryRetention;\n outcome: number;\n refreshHorizon: number;\n};\n\nexport type Discovery = {\n kind: 'discovery';\n supportedVersions: readonly number[];\n mdModel: MdModelIdentity;\n rooms: readonly DiscoveredRoom[];\n slots?: readonly {\n slot: string;\n entries: readonly { locator: string; segment: string | null }[];\n }[];\n capabilities: readonly Capability[];\n providerLimits: readonly ProviderLimit[];\n retention: Retention;\n};\n\nexport type TransportUncertainty = { kind: 'transport-uncertainty' };\nexport type RoomNotReadable = { kind: 'room-not-readable'; locator: string };\nexport type RevokedAuthorization = { kind: 'revoked-authorization' };\n\nexport type ProviderRefusal = {\n code: string;\n fields: Readonly<Record<string, unknown>>;\n};\n\nexport type ScopedRefusal = ProviderRefusal & {\n kind: 'scoped-refusal';\n locator: string;\n scope: 'content' | 'sync' | 'model' | 'operation' | 'undisclosed';\n};\nexport type AdapterFailure =\n | TransportUncertainty\n | RoomNotReadable\n | RevokedAuthorization\n | ScopedRefusal;\n\nexport type ContractUnavailable = ProviderRefusal & { kind: 'contract-unavailable' };\n\nexport type DiscoverResult =\n | Discovery\n | TransportUncertainty\n | RevokedAuthorization\n | ContractUnavailable;\n\nexport type PageToken = string;\n\nexport type ChangeAuthor =\n | { kind: 'user'; id: string; name: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HeadChange = { author: ChangeAuthor | null; time: string };\n\nexport type BootstrapRequest = {\n locator: string;\n selection: string;\n pageToken?: PageToken;\n};\n\nexport type BootstrapPage = {\n kind: 'bootstrap';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type BootstrapResult = BootstrapPage | AdapterFailure;\n\nexport type RefreshRequest = {\n locator: string;\n selection: string;\n fromRoomVersion: string;\n minPosition?: string;\n pageToken?: PageToken;\n};\n\nexport type RefreshPage = {\n kind: 'net-advancement';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n removals: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type RefreshResult =\n | { kind: 'still-current' }\n | RefreshPage\n | { kind: 'beyond-horizon' }\n | RetryableRefusal\n | AdapterFailure;\n\nexport type MutationRequest = {\n locator: string;\n changeBatch: ChangeBatch;\n upload?: unknown;\n};\n\nexport type RetryableRefusal = ProviderRefusal & {\n kind: 'retryable-refusal';\n reset?: string;\n};\n\nexport type ServiceMode = 'open' | 'write-halted';\n\nexport type ServiceModeSignal = {\n observe(notify: (mode: ServiceMode) => void): () => void;\n};\n\nexport type MutationResult =\n | {\n kind: 'accepted';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n removals: readonly string[];\n author?: string;\n time?: string;\n }\n | (ProviderRefusal & {\n kind: 'conflicted';\n roomVersion?: string;\n affected: Readonly<Record<string, string>>;\n })\n | (ProviderRefusal & {\n kind: 'rejected';\n affected: Readonly<Record<string, string>>;\n })\n | RetryableRefusal\n | { kind: 'write-halted' }\n | { kind: 'expired' }\n | AdapterFailure;\n\nexport type HistoryAuthor =\n | { kind: 'user'; id: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HistoryRevision = {\n revision: string;\n author: HistoryAuthor;\n time: string;\n};\n\nexport type HistoryRequest = {\n locator: string;\n path: string;\n revision?: string;\n pageToken?: PageToken;\n};\n\nexport type HistoryResult =\n | {\n kind: 'history';\n revisions: readonly HistoryRevision[];\n pageToken?: PageToken;\n }\n | {\n kind: 'revision';\n content: string;\n }\n | { kind: 'no-history' }\n | AdapterFailure;\n\nexport type ActionRequest = {\n name: string;\n input: unknown;\n};\n\nexport type RoomVersionAt = {\n locator: string;\n roomVersion: string;\n};\n\nexport type ActionResult =\n | { kind: 'action'; result: unknown; at?: RoomVersionAt }\n | (ProviderRefusal & { kind: 'rejected' })\n | AdapterFailure;\n\nexport type ModelRequest =\n | { locator: string; attached: 'collection'; model: ModelIdentity | null }\n | {\n locator: string;\n attached: 'typed-selection';\n roots: readonly string[];\n model: ModelIdentity | null;\n };\n\nexport type RoomVersionNotification = {\n locator: string;\n roomVersion: string;\n modelChanged?: true;\n};\n\nexport type SelectedRooms = {\n select(locators: readonly string[]): void;\n observe(notify: (notification: RoomVersionNotification) => void): () => void;\n};\n\nexport type Adapter = {\n model(authorization: Authorization, request: ModelRequest): Promise<ModelResult>;\n authorize(): Promise<Authorization>;\n discover(authorization: Authorization): Promise<DiscoverResult>;\n bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;\n refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;\n mutate(\n authorization: Authorization,\n request: MutationRequest,\n keep: (upload: unknown) => Promise<void>,\n ): Promise<MutationResult>;\n history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;\n action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;\n reached(locator: string, roomVersion: string, target: string): boolean;\n roomVersions?: SelectedRooms;\n conversations?: ConversationStream;\n serviceMode?: ServiceModeSignal;\n};\n"],"names":["ROOM_CONTRACT_VERSION","VERSION_1_CAPABILITIES"],"mappings":"AAKA,OAAO,MAAMA,wBAAwB,EAAE;AAEvC,OAAO,MAAMC,yBAAyB;IACpC;IACA;IACA;IACA;IACA;IACA;CACD,CAAU"}
@@ -1,7 +1,8 @@
1
1
  import type { ModelState } from './model.js';
2
2
  import type { Adapter, AdapterFailure, Authorization, DiscoveredRoom } from './adapter.js';
3
3
  import { type Staged } from './replica.js';
4
- export type BootstrapOutcome = Staged | AdapterFailure;
4
+ import { type Unconfirmed } from './transfer.js';
5
+ export type BootstrapOutcome = Staged | Unconfirmed | AdapterFailure;
5
6
  export declare function bootstrapRoom(adapter: Adapter, authorization: Authorization, room: DiscoveredRoom, models: {
6
7
  collection: ModelState;
7
8
  selection: ModelState;
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EAEf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAGvD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEvD,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,EACzD,UAAU,EAAE,MAAM,OAAO,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA4C3B"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,aAAa,EACb,cAAc,EAEf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,CAAC;AAErE,wBAAsB,aAAa,CACjC,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAE,EACzD,UAAU,EAAE,MAAM,OAAO,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA4C3B"}
package/dist/bootstrap.js CHANGED
@@ -35,7 +35,6 @@ export async function bootstrapRoom(adapter, authorization, room, models, contin
35
35
  }
36
36
  return readStaged({
37
37
  locator: room.locator,
38
- collectionRoot: room.collectionRoot,
39
38
  name: room.name,
40
39
  operations: room.operations,
41
40
  replica: room.replica,
@@ -43,6 +42,7 @@ export async function bootstrapRoom(adapter, authorization, room, models, contin
43
42
  model: models.collection,
44
43
  typedSelection: room.typedSelection ?? null,
45
44
  selectionModel: models.selection,
45
+ untypedFolders: room.untypedFolders ?? [],
46
46
  providerOwnedPaths: room.providerOwnedPaths,
47
47
  roomVersion,
48
48
  documents,
@@ -1 +1 @@
1
- {"version":3,"sources":["/workspace/packages/mdruntime/src/bootstrap.ts"],"sourcesContent":["import type { ModelState } from './model.js';\nimport type {\n Adapter,\n AdapterFailure,\n Authorization,\n DiscoveredRoom,\n HeadChange,\n} from './adapter.js';\nimport { readStaged, type Staged } from './replica.js';\nimport { unconfirmed } from './transfer.js';\n\nexport type BootstrapOutcome = Staged | AdapterFailure;\n\nexport async function bootstrapRoom(\n adapter: Adapter,\n authorization: Authorization,\n room: DiscoveredRoom,\n models: { collection: ModelState; selection: ModelState },\n continuing: () => boolean,\n): Promise<BootstrapOutcome> {\n const first = await adapter.bootstrap(authorization, {\n locator: room.locator,\n selection: room.replica.selection,\n });\n if (first.kind !== 'bootstrap') return first;\n const roomVersion = first.roomVersion;\n const documents: Record<string, string> = { ...first.documents };\n const revisions: Record<string, string> = { ...first.revisions };\n const changes: Record<string, HeadChange> = { ...first.changes };\n const binaryTargets = new Set(first.binaryTargets);\n let pageToken = first.pageToken;\n while (pageToken !== undefined) {\n if (!continuing()) return unconfirmed;\n const page = await adapter.bootstrap(authorization, {\n locator: room.locator,\n selection: room.replica.selection,\n pageToken,\n });\n if (page.kind !== 'bootstrap') return page;\n if (page.roomVersion !== roomVersion) return unconfirmed;\n Object.assign(documents, page.documents);\n Object.assign(revisions, page.revisions);\n Object.assign(changes, page.changes);\n for (const target of page.binaryTargets) binaryTargets.add(target);\n pageToken = page.pageToken;\n }\n return readStaged({\n locator: room.locator,\n collectionRoot: room.collectionRoot,\n name: room.name,\n operations: room.operations,\n replica: room.replica,\n attachedModel: room.attachedModel,\n model: models.collection,\n typedSelection: room.typedSelection ?? null,\n selectionModel: models.selection,\n providerOwnedPaths: room.providerOwnedPaths,\n roomVersion,\n documents,\n binaryTargets: [...binaryTargets].sort(),\n revisions,\n changes,\n });\n}\n"],"names":["readStaged","unconfirmed","bootstrapRoom","adapter","authorization","room","models","continuing","first","bootstrap","locator","selection","replica","kind","roomVersion","documents","revisions","changes","binaryTargets","Set","pageToken","undefined","page","Object","assign","target","add","collectionRoot","name","operations","attachedModel","model","collection","typedSelection","selectionModel","providerOwnedPaths","sort"],"mappings":"AAQA,SAASA,UAAU,QAAqB,eAAe;AACvD,SAASC,WAAW,QAAQ,gBAAgB;AAI5C,OAAO,eAAeC,cACpBC,OAAgB,EAChBC,aAA4B,EAC5BC,IAAoB,EACpBC,MAAyD,EACzDC,UAAyB;IAEzB,MAAMC,QAAQ,MAAML,QAAQM,SAAS,CAACL,eAAe;QACnDM,SAASL,KAAKK,OAAO;QACrBC,WAAWN,KAAKO,OAAO,CAACD,SAAS;IACnC;IACA,IAAIH,MAAMK,IAAI,KAAK,aAAa,OAAOL;IACvC,MAAMM,cAAcN,MAAMM,WAAW;IACrC,MAAMC,YAAoC;QAAE,GAAGP,MAAMO,SAAS;IAAC;IAC/D,MAAMC,YAAoC;QAAE,GAAGR,MAAMQ,SAAS;IAAC;IAC/D,MAAMC,UAAsC;QAAE,GAAGT,MAAMS,OAAO;IAAC;IAC/D,MAAMC,gBAAgB,IAAIC,IAAIX,MAAMU,aAAa;IACjD,IAAIE,YAAYZ,MAAMY,SAAS;IAC/B,MAAOA,cAAcC,UAAW;QAC9B,IAAI,CAACd,cAAc,OAAON;QAC1B,MAAMqB,OAAO,MAAMnB,QAAQM,SAAS,CAACL,eAAe;YAClDM,SAASL,KAAKK,OAAO;YACrBC,WAAWN,KAAKO,OAAO,CAACD,SAAS;YACjCS;QACF;QACA,IAAIE,KAAKT,IAAI,KAAK,aAAa,OAAOS;QACtC,IAAIA,KAAKR,WAAW,KAAKA,aAAa,OAAOb;QAC7CsB,OAAOC,MAAM,CAACT,WAAWO,KAAKP,SAAS;QACvCQ,OAAOC,MAAM,CAACR,WAAWM,KAAKN,SAAS;QACvCO,OAAOC,MAAM,CAACP,SAASK,KAAKL,OAAO;QACnC,KAAK,MAAMQ,UAAUH,KAAKJ,aAAa,CAAEA,cAAcQ,GAAG,CAACD;QAC3DL,YAAYE,KAAKF,SAAS;IAC5B;IACA,OAAOpB,WAAW;QAChBU,SAASL,KAAKK,OAAO;QACrBiB,gBAAgBtB,KAAKsB,cAAc;QACnCC,MAAMvB,KAAKuB,IAAI;QACfC,YAAYxB,KAAKwB,UAAU;QAC3BjB,SAASP,KAAKO,OAAO;QACrBkB,eAAezB,KAAKyB,aAAa;QACjCC,OAAOzB,OAAO0B,UAAU;QACxBC,gBAAgB5B,KAAK4B,cAAc,IAAI;QACvCC,gBAAgB5B,OAAOK,SAAS;QAChCwB,oBAAoB9B,KAAK8B,kBAAkB;QAC3CrB;QACAC;QACAG,eAAe;eAAIA;SAAc,CAACkB,IAAI;QACtCpB;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["/workspace/packages/mdruntime/src/bootstrap.ts"],"sourcesContent":["import type { ModelState } from './model.js';\nimport type {\n Adapter,\n AdapterFailure,\n Authorization,\n DiscoveredRoom,\n HeadChange,\n} from './adapter.js';\nimport { readStaged, type Staged } from './replica.js';\nimport { unconfirmed, type Unconfirmed } from './transfer.js';\n\nexport type BootstrapOutcome = Staged | Unconfirmed | AdapterFailure;\n\nexport async function bootstrapRoom(\n adapter: Adapter,\n authorization: Authorization,\n room: DiscoveredRoom,\n models: { collection: ModelState; selection: ModelState },\n continuing: () => boolean,\n): Promise<BootstrapOutcome> {\n const first = await adapter.bootstrap(authorization, {\n locator: room.locator,\n selection: room.replica.selection,\n });\n if (first.kind !== 'bootstrap') return first;\n const roomVersion = first.roomVersion;\n const documents: Record<string, string> = { ...first.documents };\n const revisions: Record<string, string> = { ...first.revisions };\n const changes: Record<string, HeadChange> = { ...first.changes };\n const binaryTargets = new Set(first.binaryTargets);\n let pageToken = first.pageToken;\n while (pageToken !== undefined) {\n if (!continuing()) return unconfirmed;\n const page = await adapter.bootstrap(authorization, {\n locator: room.locator,\n selection: room.replica.selection,\n pageToken,\n });\n if (page.kind !== 'bootstrap') return page;\n if (page.roomVersion !== roomVersion) return unconfirmed;\n Object.assign(documents, page.documents);\n Object.assign(revisions, page.revisions);\n Object.assign(changes, page.changes);\n for (const target of page.binaryTargets) binaryTargets.add(target);\n pageToken = page.pageToken;\n }\n return readStaged({\n locator: room.locator,\n name: room.name,\n operations: room.operations,\n replica: room.replica,\n attachedModel: room.attachedModel,\n model: models.collection,\n typedSelection: room.typedSelection ?? null,\n selectionModel: models.selection,\n untypedFolders: room.untypedFolders ?? [],\n providerOwnedPaths: room.providerOwnedPaths,\n roomVersion,\n documents,\n binaryTargets: [...binaryTargets].sort(),\n revisions,\n changes,\n });\n}\n"],"names":["readStaged","unconfirmed","bootstrapRoom","adapter","authorization","room","models","continuing","first","bootstrap","locator","selection","replica","kind","roomVersion","documents","revisions","changes","binaryTargets","Set","pageToken","undefined","page","Object","assign","target","add","name","operations","attachedModel","model","collection","typedSelection","selectionModel","untypedFolders","providerOwnedPaths","sort"],"mappings":"AAQA,SAASA,UAAU,QAAqB,eAAe;AACvD,SAASC,WAAW,QAA0B,gBAAgB;AAI9D,OAAO,eAAeC,cACpBC,OAAgB,EAChBC,aAA4B,EAC5BC,IAAoB,EACpBC,MAAyD,EACzDC,UAAyB;IAEzB,MAAMC,QAAQ,MAAML,QAAQM,SAAS,CAACL,eAAe;QACnDM,SAASL,KAAKK,OAAO;QACrBC,WAAWN,KAAKO,OAAO,CAACD,SAAS;IACnC;IACA,IAAIH,MAAMK,IAAI,KAAK,aAAa,OAAOL;IACvC,MAAMM,cAAcN,MAAMM,WAAW;IACrC,MAAMC,YAAoC;QAAE,GAAGP,MAAMO,SAAS;IAAC;IAC/D,MAAMC,YAAoC;QAAE,GAAGR,MAAMQ,SAAS;IAAC;IAC/D,MAAMC,UAAsC;QAAE,GAAGT,MAAMS,OAAO;IAAC;IAC/D,MAAMC,gBAAgB,IAAIC,IAAIX,MAAMU,aAAa;IACjD,IAAIE,YAAYZ,MAAMY,SAAS;IAC/B,MAAOA,cAAcC,UAAW;QAC9B,IAAI,CAACd,cAAc,OAAON;QAC1B,MAAMqB,OAAO,MAAMnB,QAAQM,SAAS,CAACL,eAAe;YAClDM,SAASL,KAAKK,OAAO;YACrBC,WAAWN,KAAKO,OAAO,CAACD,SAAS;YACjCS;QACF;QACA,IAAIE,KAAKT,IAAI,KAAK,aAAa,OAAOS;QACtC,IAAIA,KAAKR,WAAW,KAAKA,aAAa,OAAOb;QAC7CsB,OAAOC,MAAM,CAACT,WAAWO,KAAKP,SAAS;QACvCQ,OAAOC,MAAM,CAACR,WAAWM,KAAKN,SAAS;QACvCO,OAAOC,MAAM,CAACP,SAASK,KAAKL,OAAO;QACnC,KAAK,MAAMQ,UAAUH,KAAKJ,aAAa,CAAEA,cAAcQ,GAAG,CAACD;QAC3DL,YAAYE,KAAKF,SAAS;IAC5B;IACA,OAAOpB,WAAW;QAChBU,SAASL,KAAKK,OAAO;QACrBiB,MAAMtB,KAAKsB,IAAI;QACfC,YAAYvB,KAAKuB,UAAU;QAC3BhB,SAASP,KAAKO,OAAO;QACrBiB,eAAexB,KAAKwB,aAAa;QACjCC,OAAOxB,OAAOyB,UAAU;QACxBC,gBAAgB3B,KAAK2B,cAAc,IAAI;QACvCC,gBAAgB3B,OAAOK,SAAS;QAChCuB,gBAAgB7B,KAAK6B,cAAc,IAAI,EAAE;QACzCC,oBAAoB9B,KAAK8B,kBAAkB;QAC3CrB;QACAC;QACAG,eAAe;eAAIA;SAAc,CAACkB,IAAI;QACtCpB;QACAC;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;IACvB,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAmBF,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,KAAK,EAAE,OAAO,GAAG,IAAI,EACrB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,SAAS,CAiDX;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,SAAS,CAUX;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAUrE"}
1
+ {"version":3,"file":"change-set.d.ts","sourceRoot":"","sources":["../src/change-set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiC,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAU,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;IACvB,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IACnC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAwBF,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,KAAK,EAAE,OAAO,GAAG,IAAI,EACrB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CAClB,GACL,SAAS,CAkDX;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,SAAS,CAUX;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAUrE"}
@@ -1,11 +1,15 @@
1
+ import { untyped } from './collection.js';
1
2
  import { sameChange } from './overlay.js';
2
3
  import { beneath } from './paths.js';
3
- import { compositionOf } from './replica.js';
4
+ import { compositionOf, sameMembership } from './replica.js';
4
5
  import { rowsOf } from './rows.js';
5
6
  function rowsAt(locator, replica, path) {
6
- const document = replica?.visible.collection.documents[path];
7
7
  if (replica === null) return [];
8
- if (document === undefined && !replica.visible.binaryTargets.includes(path)) return [];
8
+ const document = replica.visible.collection.documents[path];
9
+ const carried = Object.hasOwn(replica.visible.documents, path) && untyped(replica.confirmed.record.untypedFolders, path);
10
+ if (document === undefined && !carried && !replica.visible.binaryTargets.includes(path)) {
11
+ return [];
12
+ }
9
13
  return rowsOf(locator, path, document ?? null, compositionOf(replica.confirmed.record), replica.visible.changes[path] ?? null);
10
14
  }
11
15
  function modelShape(model) {
@@ -23,11 +27,12 @@ export function changeSet(locator, before, after, changed = {}) {
23
27
  const newRoom = after?.confirmed.record;
24
28
  const collectionChanged = oldRoom !== undefined && newRoom !== undefined && modelShape(oldRoom.model) !== modelShape(newRoom.model);
25
29
  const selectionChanged = oldRoom !== undefined && newRoom !== undefined && modelShape(oldRoom.selectionModel) !== modelShape(newRoom.selectionModel);
30
+ const reclassified = oldRoom !== undefined && newRoom !== undefined && !sameMembership(oldRoom, newRoom);
26
31
  for (const path of paths){
27
32
  const selected = newRoom?.typedSelection?.roots.some((root)=>beneath(root, path)) ?? false;
28
- const inCollection = newRoom !== undefined && (newRoom.collectionRoot === '' || beneath(newRoom.collectionRoot, path));
29
- const retyped = selected ? selectionChanged : inCollection && collectionChanged;
30
- if (before?.visible.documents[path] === after?.visible.documents[path] && before?.visible.binaryTargets.includes(path) === after?.visible.binaryTargets.includes(path) && before?.visible.revisions[path] === after?.visible.revisions[path] && sameChange(before?.visible.changes[path], after?.visible.changes[path]) && !retyped) continue;
33
+ const carried = newRoom !== undefined && untyped(newRoom.untypedFolders, path);
34
+ const retyped = selected ? selectionChanged : !carried && collectionChanged;
35
+ if (before?.visible.documents[path] === after?.visible.documents[path] && before?.visible.binaryTargets.includes(path) === after?.visible.binaryTargets.includes(path) && before?.visible.revisions[path] === after?.visible.revisions[path] && sameChange(before?.visible.changes[path], after?.visible.changes[path]) && !retyped && !reclassified) continue;
31
36
  documents.push({
32
37
  locator,
33
38
  path,
@@ -1 +1 @@
1
- {"version":3,"sources":["/workspace/packages/mdruntime/src/change-set.ts"],"sourcesContent":["import { sameChange } from './overlay.js';\nimport { beneath } from './paths.js';\nimport { compositionOf, type Replica } from './replica.js';\nimport { rowsOf, type Row } from './rows.js';\n\nexport type DocumentChange = {\n locator: string;\n path: string;\n before: readonly Row[];\n after: readonly Row[];\n};\n\nexport type MessageChange = { conversation: string; identity: string };\n\nexport type ChangeSet = {\n documents: readonly DocumentChange[];\n drafts: readonly { locator: string; path: string }[];\n rooms: readonly string[];\n queues: readonly string[];\n presentations: readonly string[];\n messages: readonly MessageChange[];\n conversations: readonly string[];\n};\n\nfunction rowsAt(locator: string, replica: Replica | null, path: string): readonly Row[] {\n const document = replica?.visible.collection.documents[path];\n if (replica === null) return [];\n if (document === undefined && !replica.visible.binaryTargets.includes(path)) return [];\n return rowsOf(\n locator,\n path,\n document ?? null,\n compositionOf(replica.confirmed.record),\n replica.visible.changes[path] ?? null,\n );\n}\n\nfunction modelShape(model: Replica['confirmed']['record']['model']): string {\n return model.status === 'unavailable' ? 'unavailable' : JSON.stringify(model.types);\n}\n\nexport function changeSet(\n locator: string,\n before: Replica | null,\n after: Replica | null,\n changed: {\n drafts?: readonly string[];\n room?: boolean;\n queue?: boolean;\n presentation?: string;\n } = {},\n): ChangeSet {\n const paths = new Set([\n ...Object.keys(before?.visible.documents ?? {}),\n ...Object.keys(after?.visible.documents ?? {}),\n ...(before?.visible.binaryTargets ?? []),\n ...(after?.visible.binaryTargets ?? []),\n ]);\n const documents: DocumentChange[] = [];\n const oldRoom = before?.confirmed.record;\n const newRoom = after?.confirmed.record;\n const collectionChanged =\n oldRoom !== undefined &&\n newRoom !== undefined &&\n modelShape(oldRoom.model) !== modelShape(newRoom.model);\n const selectionChanged =\n oldRoom !== undefined &&\n newRoom !== undefined &&\n modelShape(oldRoom.selectionModel) !== modelShape(newRoom.selectionModel);\n for (const path of paths) {\n const selected = newRoom?.typedSelection?.roots.some((root) => beneath(root, path)) ?? false;\n const inCollection =\n newRoom !== undefined &&\n (newRoom.collectionRoot === '' || beneath(newRoom.collectionRoot, path));\n const retyped = selected ? selectionChanged : inCollection && collectionChanged;\n if (\n before?.visible.documents[path] === after?.visible.documents[path] &&\n before?.visible.binaryTargets.includes(path) ===\n after?.visible.binaryTargets.includes(path) &&\n before?.visible.revisions[path] === after?.visible.revisions[path] &&\n sameChange(before?.visible.changes[path], after?.visible.changes[path]) &&\n !retyped\n )\n continue;\n documents.push({\n locator,\n path,\n before: rowsAt(locator, before, path),\n after: rowsAt(locator, after, path),\n });\n }\n return {\n documents,\n drafts: (changed.drafts ?? []).map((path) => ({ locator, path })),\n rooms: changed.room ? [locator] : [],\n queues: changed.queue ? [locator] : [],\n presentations: changed.presentation === undefined ? [] : [changed.presentation],\n messages: [],\n conversations: [],\n };\n}\n\nexport function conversationChangeSet(\n messages: readonly MessageChange[],\n conversations: readonly string[],\n): ChangeSet {\n return {\n documents: [],\n drafts: [],\n rooms: [],\n queues: [],\n presentations: [],\n messages,\n conversations: [...new Set(conversations)],\n };\n}\n\nexport function mergeChangeSets(sets: readonly ChangeSet[]): ChangeSet {\n return {\n documents: sets.flatMap((set) => set.documents),\n drafts: sets.flatMap((set) => set.drafts),\n rooms: [...new Set(sets.flatMap((set) => set.rooms))],\n queues: [...new Set(sets.flatMap((set) => set.queues))],\n presentations: [...new Set(sets.flatMap((set) => set.presentations))],\n messages: sets.flatMap((set) => set.messages),\n conversations: [...new Set(sets.flatMap((set) => set.conversations))],\n };\n}\n"],"names":["sameChange","beneath","compositionOf","rowsOf","rowsAt","locator","replica","path","document","visible","collection","documents","undefined","binaryTargets","includes","confirmed","record","changes","modelShape","model","status","JSON","stringify","types","changeSet","before","after","changed","paths","Set","Object","keys","oldRoom","newRoom","collectionChanged","selectionChanged","selectionModel","selected","typedSelection","roots","some","root","inCollection","collectionRoot","retyped","revisions","push","drafts","map","rooms","room","queues","queue","presentations","presentation","messages","conversations","conversationChangeSet","mergeChangeSets","sets","flatMap","set"],"mappings":"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"}
1
+ {"version":3,"sources":["/workspace/packages/mdruntime/src/change-set.ts"],"sourcesContent":["import { untyped } from './collection.js';\nimport { sameChange } from './overlay.js';\nimport { beneath } from './paths.js';\nimport { compositionOf, sameMembership, type Replica } from './replica.js';\nimport { rowsOf, type Row } from './rows.js';\n\nexport type DocumentChange = {\n locator: string;\n path: string;\n before: readonly Row[];\n after: readonly Row[];\n};\n\nexport type MessageChange = { conversation: string; identity: string };\n\nexport type ChangeSet = {\n documents: readonly DocumentChange[];\n drafts: readonly { locator: string; path: string }[];\n rooms: readonly string[];\n queues: readonly string[];\n presentations: readonly string[];\n messages: readonly MessageChange[];\n conversations: readonly string[];\n};\n\nfunction rowsAt(locator: string, replica: Replica | null, path: string): readonly Row[] {\n if (replica === null) return [];\n const document = replica.visible.collection.documents[path];\n const carried =\n Object.hasOwn(replica.visible.documents, path) &&\n untyped(replica.confirmed.record.untypedFolders, path);\n if (document === undefined && !carried && !replica.visible.binaryTargets.includes(path)) {\n return [];\n }\n return rowsOf(\n locator,\n path,\n document ?? null,\n compositionOf(replica.confirmed.record),\n replica.visible.changes[path] ?? null,\n );\n}\n\nfunction modelShape(model: Replica['confirmed']['record']['model']): string {\n return model.status === 'unavailable' ? 'unavailable' : JSON.stringify(model.types);\n}\n\nexport function changeSet(\n locator: string,\n before: Replica | null,\n after: Replica | null,\n changed: {\n drafts?: readonly string[];\n room?: boolean;\n queue?: boolean;\n presentation?: string;\n } = {},\n): ChangeSet {\n const paths = new Set([\n ...Object.keys(before?.visible.documents ?? {}),\n ...Object.keys(after?.visible.documents ?? {}),\n ...(before?.visible.binaryTargets ?? []),\n ...(after?.visible.binaryTargets ?? []),\n ]);\n const documents: DocumentChange[] = [];\n const oldRoom = before?.confirmed.record;\n const newRoom = after?.confirmed.record;\n const collectionChanged =\n oldRoom !== undefined &&\n newRoom !== undefined &&\n modelShape(oldRoom.model) !== modelShape(newRoom.model);\n const selectionChanged =\n oldRoom !== undefined &&\n newRoom !== undefined &&\n modelShape(oldRoom.selectionModel) !== modelShape(newRoom.selectionModel);\n const reclassified =\n oldRoom !== undefined && newRoom !== undefined && !sameMembership(oldRoom, newRoom);\n for (const path of paths) {\n const selected = newRoom?.typedSelection?.roots.some((root) => beneath(root, path)) ?? false;\n const carried = newRoom !== undefined && untyped(newRoom.untypedFolders, path);\n const retyped = selected ? selectionChanged : !carried && collectionChanged;\n if (\n before?.visible.documents[path] === after?.visible.documents[path] &&\n before?.visible.binaryTargets.includes(path) ===\n after?.visible.binaryTargets.includes(path) &&\n before?.visible.revisions[path] === after?.visible.revisions[path] &&\n sameChange(before?.visible.changes[path], after?.visible.changes[path]) &&\n !retyped &&\n !reclassified\n )\n continue;\n documents.push({\n locator,\n path,\n before: rowsAt(locator, before, path),\n after: rowsAt(locator, after, path),\n });\n }\n return {\n documents,\n drafts: (changed.drafts ?? []).map((path) => ({ locator, path })),\n rooms: changed.room ? [locator] : [],\n queues: changed.queue ? [locator] : [],\n presentations: changed.presentation === undefined ? [] : [changed.presentation],\n messages: [],\n conversations: [],\n };\n}\n\nexport function conversationChangeSet(\n messages: readonly MessageChange[],\n conversations: readonly string[],\n): ChangeSet {\n return {\n documents: [],\n drafts: [],\n rooms: [],\n queues: [],\n presentations: [],\n messages,\n conversations: [...new Set(conversations)],\n };\n}\n\nexport function mergeChangeSets(sets: readonly ChangeSet[]): ChangeSet {\n return {\n documents: sets.flatMap((set) => set.documents),\n drafts: sets.flatMap((set) => set.drafts),\n rooms: [...new Set(sets.flatMap((set) => set.rooms))],\n queues: [...new Set(sets.flatMap((set) => set.queues))],\n presentations: [...new Set(sets.flatMap((set) => set.presentations))],\n messages: sets.flatMap((set) => set.messages),\n conversations: [...new Set(sets.flatMap((set) => set.conversations))],\n };\n}\n"],"names":["untyped","sameChange","beneath","compositionOf","sameMembership","rowsOf","rowsAt","locator","replica","path","document","visible","collection","documents","carried","Object","hasOwn","confirmed","record","untypedFolders","undefined","binaryTargets","includes","changes","modelShape","model","status","JSON","stringify","types","changeSet","before","after","changed","paths","Set","keys","oldRoom","newRoom","collectionChanged","selectionChanged","selectionModel","reclassified","selected","typedSelection","roots","some","root","retyped","revisions","push","drafts","map","rooms","room","queues","queue","presentations","presentation","messages","conversations","conversationChangeSet","mergeChangeSets","sets","flatMap","set"],"mappings":"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"}
@@ -1,20 +1,21 @@
1
1
  import { type Document, type Validation } from '@agentshouse/mdmodel';
2
2
  import type { ModelState } from './model.js';
3
3
  import type { MdModelIdentity } from './adapter.js';
4
- import { type Refused, type Unconfirmed } from './transfer.js';
4
+ import type { Refused } from './transfer.js';
5
5
  export declare const MD_MODEL: MdModelIdentity;
6
6
  export type Collection = {
7
7
  documents: Readonly<Record<string, Document>>;
8
8
  composition: Composition;
9
9
  };
10
10
  export type Composition = {
11
- collectionRoot: string;
12
11
  model: ModelState;
13
12
  selection: {
14
13
  roots: readonly string[];
15
14
  model: ModelState;
16
15
  } | null;
16
+ untypedFolders: readonly string[];
17
17
  };
18
+ export declare function untyped(roots: readonly string[], path: string): boolean;
18
19
  export declare function governing(composition: Composition, path: string): ModelState;
19
20
  type Previous = {
20
21
  text: Readonly<Record<string, string>>;
@@ -24,7 +25,7 @@ export declare function parseCollection(text: Readonly<Record<string, string>>,
24
25
  export declare function readCollection(text: Readonly<Record<string, string>>, composition: Composition, previous?: Previous): {
25
26
  kind: 'read';
26
27
  collection: Collection;
27
- } | Refused | Unconfirmed;
28
+ } | Refused;
28
29
  export declare function validRoot(root: unknown): root is string;
29
30
  export declare function validateCollection(text: Readonly<Record<string, string>>, binaryTargets: readonly string[], composition: Composition): Validation;
30
31
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,UAAU,EAEhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAe,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAIhG,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE,CAAC;AASF,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAI5E;AAED,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAanF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,QAAQ,GAClB,UAAU,CAOZ;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,QAAQ,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,GAAG,WAAW,CAoBlE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEvD;AA0CD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,WAAW,EAAE,WAAW,GACvB,UAAU,CA0CZ"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,UAAU,EAEhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAO,MAAM,QAAQ,EAAE,eAAwE,CAAC;AAIhG,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE;QAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,CAAC;AASF,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAI5E;AAED,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAanF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,QAAQ,GAClB,UAAU,CAQZ;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,QAAQ,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CASpD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,MAAM,CAEvD;AAwBD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACtC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,WAAW,EAAE,WAAW,GACvB,UAAU,CA4BZ"}
@@ -1,6 +1,5 @@
1
1
  import { parse, validate, VERSION } from '@agentshouse/mdmodel';
2
2
  import { beneath, normalize } from './paths.js';
3
- import { unconfirmed } from './transfer.js';
4
3
  export const MD_MODEL = {
5
4
  identity: '@agentshouse/mdmodel',
6
5
  version: VERSION
@@ -11,6 +10,9 @@ const NO_TYPES = {
11
10
  function selected(composition, path) {
12
11
  return composition.selection !== null && composition.selection.roots.some((root)=>beneath(root, path));
13
12
  }
13
+ export function untyped(roots, path) {
14
+ return roots.some((root)=>beneath(root, path));
15
+ }
14
16
  export function governing(composition, path) {
15
17
  return composition.selection !== null && selected(composition, path) ? composition.selection.model : composition.model;
16
18
  }
@@ -24,6 +26,7 @@ function parsedAt(text, path, previous) {
24
26
  export function parseCollection(text, composition, previous) {
25
27
  const documents = {};
26
28
  for (const path of Object.keys(text).sort()){
29
+ if (untyped(composition.untypedFolders, path)) continue;
27
30
  const parsed = parsedAt(text, path, previous);
28
31
  if (parsed.ok) documents[path] = parsed.document;
29
32
  }
@@ -33,23 +36,14 @@ export function parseCollection(text, composition, previous) {
33
36
  };
34
37
  }
35
38
  export function readCollection(text, composition, previous) {
36
- if (!validRoot(composition.collectionRoot)) return unconfirmed;
37
39
  const documents = {};
38
40
  for (const path of Object.keys(text).sort()){
41
+ if (untyped(composition.untypedFolders, path)) continue;
39
42
  const parsed = parsedAt(text, path, previous);
40
43
  if (!parsed.ok) return {
41
44
  kind: 'refused',
42
45
  refusal: parsed.refusal
43
46
  };
44
- const { type } = parsed.document;
45
- if (!member(path, composition.collectionRoot) && !selected(composition, path) && type !== undefined && type !== 'any') return {
46
- kind: 'refused',
47
- refusal: {
48
- rule: 'outside-collection-type',
49
- file: path,
50
- version: VERSION
51
- }
52
- };
53
47
  documents[path] = parsed.document;
54
48
  }
55
49
  return {
@@ -63,10 +57,7 @@ export function readCollection(text, composition, previous) {
63
57
  export function validRoot(root) {
64
58
  return typeof root === 'string' && normalize(root) === root;
65
59
  }
66
- function member(path, root) {
67
- return root === '' || path.startsWith(`${root}/`);
68
- }
69
- function validateAgainst(documents, binaryTargets, prefix, model) {
60
+ function validateAgainst(documents, binaryTargets, model) {
70
61
  if (model.status === 'unavailable') {
71
62
  const typed = Object.entries(documents).find(([, content])=>{
72
63
  const parsed = parse(content);
@@ -75,56 +66,30 @@ function validateAgainst(documents, binaryTargets, prefix, model) {
75
66
  if (typed !== undefined) return {
76
67
  verdict: 'refuse',
77
68
  rule: 'model-unavailable',
78
- file: `${prefix}${typed[0]}`,
69
+ file: typed[0],
79
70
  version: VERSION
80
71
  };
81
72
  }
82
- const verdict = validate(documents, {
73
+ return validate(documents, {
83
74
  binaryTargets
84
75
  }, model.status === 'unavailable' ? NO_TYPES : {
85
76
  types: model.types
86
77
  });
87
- if (verdict.verdict === 'accept') return verdict;
88
- return {
89
- ...verdict,
90
- file: `${prefix}${verdict.file}`,
91
- ...verdict.referrers === undefined ? {} : {
92
- referrers: verdict.referrers.map((path)=>`${prefix}${path}`)
93
- }
94
- };
95
78
  }
96
79
  export function validateCollection(text, binaryTargets, composition) {
97
- const prefix = composition.collectionRoot === '' ? '' : `${composition.collectionRoot}/`;
98
80
  const collection = {};
99
81
  const selection = {};
100
82
  for (const [path, content] of Object.entries(text)){
101
- if (member(path, composition.collectionRoot)) {
102
- collection[path.slice(prefix.length)] = content;
103
- continue;
104
- }
105
- if (selected(composition, path)) {
106
- selection[path] = content;
107
- continue;
108
- }
109
- const parsed = parse(content, path);
110
- if (!parsed.ok) return {
111
- verdict: 'refuse',
112
- ...parsed.refusal
113
- };
114
- if (Object.hasOwn(parsed.document.fields, 'type') && parsed.document.fields.type !== 'any') {
115
- return {
116
- verdict: 'refuse',
117
- rule: 'outside-collection-type',
118
- file: path,
119
- version: VERSION
120
- };
121
- }
83
+ if (untyped(composition.untypedFolders, path)) continue;
84
+ if (selected(composition, path)) selection[path] = content;
85
+ else collection[path] = content;
122
86
  }
87
+ const linked = binaryTargets.filter((path)=>!untyped(composition.untypedFolders, path));
123
88
  const verdicts = [
124
- validateAgainst(collection, binaryTargets.filter((path)=>member(path, composition.collectionRoot)).map((path)=>path.slice(prefix.length)), prefix, composition.model)
89
+ validateAgainst(collection, linked.filter((path)=>!selected(composition, path)), composition.model)
125
90
  ];
126
91
  if (composition.selection !== null) {
127
- verdicts.push(validateAgainst(selection, binaryTargets.filter((path)=>selected(composition, path)), '', composition.selection.model));
92
+ verdicts.push(validateAgainst(selection, linked.filter((path)=>selected(composition, path)), composition.selection.model));
128
93
  }
129
94
  const refusals = verdicts.filter((verdict)=>verdict.verdict === 'refuse');
130
95
  if (refusals.length === 0) return verdicts[0];
@@ -1 +1 @@
1
- {"version":3,"sources":["/workspace/packages/mdruntime/src/collection.ts"],"sourcesContent":["import {\n parse,\n validate,\n VERSION,\n type Document,\n type ParseResult,\n type Validation,\n type VerifiedModel,\n} from '@agentshouse/mdmodel';\nimport { beneath, normalize } from './paths.js';\nimport type { ModelState } from './model.js';\nimport type { MdModelIdentity } from './adapter.js';\nimport { unconfirmed, type Refused, type Unconfirmed } from './transfer.js';\n\nexport const MD_MODEL: MdModelIdentity = { identity: '@agentshouse/mdmodel', version: VERSION };\n\nconst NO_TYPES: VerifiedModel = { types: {} };\n\nexport type Collection = {\n documents: Readonly<Record<string, Document>>;\n composition: Composition;\n};\n\nexport type Composition = {\n collectionRoot: string;\n model: ModelState;\n selection: { roots: readonly string[]; model: ModelState } | null;\n};\n\nfunction selected(composition: Composition, path: string): boolean {\n return (\n composition.selection !== null &&\n composition.selection.roots.some((root) => beneath(root, path))\n );\n}\n\nexport function governing(composition: Composition, path: string): ModelState {\n return composition.selection !== null && selected(composition, path)\n ? composition.selection.model\n : composition.model;\n}\n\ntype Previous = { text: Readonly<Record<string, string>>; collection: Collection };\n\nfunction parsedAt(\n text: Readonly<Record<string, string>>,\n path: string,\n previous: Previous | undefined,\n): ParseResult {\n const retained = previous?.collection.documents[path];\n return retained !== undefined && previous?.text[path] === text[path]\n ? { ok: true, document: retained }\n : parse(text[path], path);\n}\n\nexport function parseCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: Previous,\n): Collection {\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n const parsed = parsedAt(text, path, previous);\n if (parsed.ok) documents[path] = parsed.document;\n }\n return { documents, composition };\n}\n\nexport function readCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: Previous,\n): { kind: 'read'; collection: Collection } | Refused | Unconfirmed {\n if (!validRoot(composition.collectionRoot)) return unconfirmed;\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n const parsed = parsedAt(text, path, previous);\n if (!parsed.ok) return { kind: 'refused', refusal: parsed.refusal };\n const { type } = parsed.document;\n if (\n !member(path, composition.collectionRoot) &&\n !selected(composition, path) &&\n type !== undefined &&\n type !== 'any'\n )\n return {\n kind: 'refused',\n refusal: { rule: 'outside-collection-type', file: path, version: VERSION },\n };\n documents[path] = parsed.document;\n }\n return { kind: 'read', collection: { documents, composition } };\n}\n\nexport function validRoot(root: unknown): root is string {\n return typeof root === 'string' && normalize(root) === root;\n}\n\nfunction member(path: string, root: string): boolean {\n return root === '' || path.startsWith(`${root}/`);\n}\n\ntype Refusal = Extract<Validation, { verdict: 'refuse' }>;\n\nfunction validateAgainst(\n documents: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n prefix: string,\n model: ModelState,\n): Validation {\n if (model.status === 'unavailable') {\n const typed = Object.entries(documents).find(([, content]) => {\n const parsed = parse(content);\n return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';\n });\n if (typed !== undefined)\n return {\n verdict: 'refuse',\n rule: 'model-unavailable',\n file: `${prefix}${typed[0]}`,\n version: VERSION,\n };\n }\n const verdict = validate(\n documents,\n { binaryTargets },\n model.status === 'unavailable' ? NO_TYPES : { types: model.types },\n );\n if (verdict.verdict === 'accept') return verdict;\n return {\n ...verdict,\n file: `${prefix}${verdict.file}`,\n ...(verdict.referrers === undefined\n ? {}\n : { referrers: verdict.referrers.map((path) => `${prefix}${path}`) }),\n };\n}\n\nexport function validateCollection(\n text: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n composition: Composition,\n): Validation {\n const prefix = composition.collectionRoot === '' ? '' : `${composition.collectionRoot}/`;\n const collection: Record<string, string> = {};\n const selection: Record<string, string> = {};\n for (const [path, content] of Object.entries(text)) {\n if (member(path, composition.collectionRoot)) {\n collection[path.slice(prefix.length)] = content;\n continue;\n }\n if (selected(composition, path)) {\n selection[path] = content;\n continue;\n }\n const parsed = parse(content, path);\n if (!parsed.ok) return { verdict: 'refuse', ...parsed.refusal };\n if (Object.hasOwn(parsed.document.fields, 'type') && parsed.document.fields.type !== 'any') {\n return { verdict: 'refuse', rule: 'outside-collection-type', file: path, version: VERSION };\n }\n }\n const verdicts = [\n validateAgainst(\n collection,\n binaryTargets\n .filter((path) => member(path, composition.collectionRoot))\n .map((path) => path.slice(prefix.length)),\n prefix,\n composition.model,\n ),\n ];\n if (composition.selection !== null) {\n verdicts.push(\n validateAgainst(\n selection,\n binaryTargets.filter((path) => selected(composition, path)),\n '',\n composition.selection.model,\n ),\n );\n }\n const refusals = verdicts.filter((verdict): verdict is Refusal => verdict.verdict === 'refuse');\n if (refusals.length === 0) return verdicts[0];\n return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];\n}\n"],"names":["parse","validate","VERSION","beneath","normalize","unconfirmed","MD_MODEL","identity","version","NO_TYPES","types","selected","composition","path","selection","roots","some","root","governing","model","parsedAt","text","previous","retained","collection","documents","undefined","ok","document","parseCollection","Object","keys","sort","parsed","readCollection","validRoot","collectionRoot","kind","refusal","type","member","rule","file","startsWith","validateAgainst","binaryTargets","prefix","status","typed","entries","find","content","verdict","referrers","map","validateCollection","slice","length","hasOwn","fields","verdicts","filter","push","refusals"],"mappings":"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"}
1
+ {"version":3,"sources":["/workspace/packages/mdruntime/src/collection.ts"],"sourcesContent":["import {\n parse,\n validate,\n VERSION,\n type Document,\n type ParseResult,\n type Validation,\n type VerifiedModel,\n} from '@agentshouse/mdmodel';\nimport { beneath, normalize } from './paths.js';\nimport type { ModelState } from './model.js';\nimport type { MdModelIdentity } from './adapter.js';\nimport type { Refused } from './transfer.js';\n\nexport const MD_MODEL: MdModelIdentity = { identity: '@agentshouse/mdmodel', version: VERSION };\n\nconst NO_TYPES: VerifiedModel = { types: {} };\n\nexport type Collection = {\n documents: Readonly<Record<string, Document>>;\n composition: Composition;\n};\n\nexport type Composition = {\n model: ModelState;\n selection: { roots: readonly string[]; model: ModelState } | null;\n untypedFolders: readonly string[];\n};\n\nfunction selected(composition: Composition, path: string): boolean {\n return (\n composition.selection !== null &&\n composition.selection.roots.some((root) => beneath(root, path))\n );\n}\n\nexport function untyped(roots: readonly string[], path: string): boolean {\n return roots.some((root) => beneath(root, path));\n}\n\nexport function governing(composition: Composition, path: string): ModelState {\n return composition.selection !== null && selected(composition, path)\n ? composition.selection.model\n : composition.model;\n}\n\ntype Previous = { text: Readonly<Record<string, string>>; collection: Collection };\n\nfunction parsedAt(\n text: Readonly<Record<string, string>>,\n path: string,\n previous: Previous | undefined,\n): ParseResult {\n const retained = previous?.collection.documents[path];\n return retained !== undefined && previous?.text[path] === text[path]\n ? { ok: true, document: retained }\n : parse(text[path], path);\n}\n\nexport function parseCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: Previous,\n): Collection {\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n if (untyped(composition.untypedFolders, path)) continue;\n const parsed = parsedAt(text, path, previous);\n if (parsed.ok) documents[path] = parsed.document;\n }\n return { documents, composition };\n}\n\nexport function readCollection(\n text: Readonly<Record<string, string>>,\n composition: Composition,\n previous?: Previous,\n): { kind: 'read'; collection: Collection } | Refused {\n const documents: Record<string, Document> = {};\n for (const path of Object.keys(text).sort()) {\n if (untyped(composition.untypedFolders, path)) continue;\n const parsed = parsedAt(text, path, previous);\n if (!parsed.ok) return { kind: 'refused', refusal: parsed.refusal };\n documents[path] = parsed.document;\n }\n return { kind: 'read', collection: { documents, composition } };\n}\n\nexport function validRoot(root: unknown): root is string {\n return typeof root === 'string' && normalize(root) === root;\n}\n\ntype Refusal = Extract<Validation, { verdict: 'refuse' }>;\n\nfunction validateAgainst(\n documents: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n model: ModelState,\n): Validation {\n if (model.status === 'unavailable') {\n const typed = Object.entries(documents).find(([, content]) => {\n const parsed = parse(content);\n return parsed.ok && parsed.document.type !== undefined && parsed.document.type !== 'any';\n });\n if (typed !== undefined)\n return { verdict: 'refuse', rule: 'model-unavailable', file: typed[0], version: VERSION };\n }\n return validate(\n documents,\n { binaryTargets },\n model.status === 'unavailable' ? NO_TYPES : { types: model.types },\n );\n}\n\nexport function validateCollection(\n text: Readonly<Record<string, string>>,\n binaryTargets: readonly string[],\n composition: Composition,\n): Validation {\n const collection: Record<string, string> = {};\n const selection: Record<string, string> = {};\n for (const [path, content] of Object.entries(text)) {\n if (untyped(composition.untypedFolders, path)) continue;\n if (selected(composition, path)) selection[path] = content;\n else collection[path] = content;\n }\n const linked = binaryTargets.filter((path) => !untyped(composition.untypedFolders, path));\n const verdicts = [\n validateAgainst(\n collection,\n linked.filter((path) => !selected(composition, path)),\n composition.model,\n ),\n ];\n if (composition.selection !== null) {\n verdicts.push(\n validateAgainst(\n selection,\n linked.filter((path) => selected(composition, path)),\n composition.selection.model,\n ),\n );\n }\n const refusals = verdicts.filter((verdict): verdict is Refusal => verdict.verdict === 'refuse');\n if (refusals.length === 0) return verdicts[0];\n return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];\n}\n"],"names":["parse","validate","VERSION","beneath","normalize","MD_MODEL","identity","version","NO_TYPES","types","selected","composition","path","selection","roots","some","root","untyped","governing","model","parsedAt","text","previous","retained","collection","documents","undefined","ok","document","parseCollection","Object","keys","sort","untypedFolders","parsed","readCollection","kind","refusal","validRoot","validateAgainst","binaryTargets","status","typed","entries","find","content","type","verdict","rule","file","validateCollection","linked","filter","verdicts","push","refusals","length"],"mappings":"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"}
@@ -16,7 +16,6 @@ export type AppTypedSelection = {
16
16
  model: TypesResult;
17
17
  };
18
18
  export type AppRoom = {
19
- collectionRoot: string;
20
19
  name: string;
21
20
  locator: string;
22
21
  operations: import('./adapter.js').OperationScopes;
@@ -24,6 +23,7 @@ export type AppRoom = {
24
23
  attachedModel: import('./model.js').ModelIdentity | null;
25
24
  model: TypesResult;
26
25
  typedSelection: AppTypedSelection | null;
26
+ untypedFolders: readonly string[];
27
27
  providerOwnedPaths: readonly string[];
28
28
  roomVersion: string | null;
29
29
  synchronizationAvailable: boolean;