@agentshouse/mdruntime-adapter 0.1.0-cfded86738bb2 → 0.1.0-cfe552b74bdf7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +2 -2
  2. package/dist/actions.d.ts +3 -56
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +1 -287
  5. package/dist/adapter.d.ts.map +1 -1
  6. package/dist/adapter.js +158 -326
  7. package/dist/app-reference.d.ts +2 -0
  8. package/dist/app-reference.d.ts.map +1 -0
  9. package/dist/app-reference.js +2 -0
  10. package/dist/crockford.d.ts +4 -0
  11. package/dist/crockford.d.ts.map +1 -0
  12. package/dist/crockford.js +3 -0
  13. package/dist/discovery.d.ts +12 -12
  14. package/dist/discovery.d.ts.map +1 -1
  15. package/dist/discovery.js +44 -51
  16. package/dist/history.d.ts +12 -0
  17. package/dist/history.d.ts.map +1 -0
  18. package/dist/history.js +91 -0
  19. package/dist/house-model.d.ts +892 -0
  20. package/dist/house-model.d.ts.map +1 -0
  21. package/dist/house-model.js +482 -0
  22. package/dist/index.d.ts +9 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +8 -2
  25. package/dist/model.d.ts +5 -2
  26. package/dist/model.d.ts.map +1 -1
  27. package/dist/model.js +10 -29
  28. package/dist/part.d.ts +11 -12
  29. package/dist/part.d.ts.map +1 -1
  30. package/dist/part.js +63 -55
  31. package/dist/read.d.ts +19 -57
  32. package/dist/read.d.ts.map +1 -1
  33. package/dist/read.js +84 -220
  34. package/dist/refusal.d.ts +0 -3
  35. package/dist/refusal.d.ts.map +1 -1
  36. package/dist/refusal.js +0 -5
  37. package/dist/room-stream.d.ts +19 -0
  38. package/dist/room-stream.d.ts.map +1 -0
  39. package/dist/room-stream.js +57 -0
  40. package/dist/room-types.d.ts +2 -1
  41. package/dist/room-types.d.ts.map +1 -1
  42. package/dist/room-types.js +62 -3
  43. package/dist/search.d.ts +5 -0
  44. package/dist/search.d.ts.map +1 -0
  45. package/dist/search.js +47 -0
  46. package/dist/site.d.ts.map +1 -1
  47. package/dist/site.js +75 -157
  48. package/dist/stream.d.ts +13 -14
  49. package/dist/stream.d.ts.map +1 -1
  50. package/dist/stream.js +168 -426
  51. package/dist/transport.d.ts +48 -36
  52. package/dist/transport.d.ts.map +1 -1
  53. package/dist/transport.js +55 -11
  54. package/dist/upload.d.ts.map +1 -1
  55. package/dist/upload.js +26 -15
  56. package/dist/write.d.ts +6 -1
  57. package/dist/write.d.ts.map +1 -1
  58. package/dist/write.js +17 -19
  59. package/package.json +8 -4
  60. package/AGENTS.md +0 -317
  61. package/dist/gather.d.ts +0 -4
  62. package/dist/gather.d.ts.map +0 -1
  63. package/dist/gather.js +0 -35
package/dist/search.js ADDED
@@ -0,0 +1,47 @@
1
+ import { doorRefusal } from './refusal.js';
2
+ import { houseDoorRoute } from './transport.js';
3
+ const ROOMS = '/rooms/';
4
+ const UNCERTAIN = { kind: 'transport-uncertainty' };
5
+ function hitOf(file, locators) {
6
+ if (typeof file !== 'object' || file === null)
7
+ return null;
8
+ const { path, line, snippet } = file;
9
+ if (typeof path !== 'string' || !path.startsWith(ROOMS))
10
+ return null;
11
+ const slash = path.indexOf('/', ROOMS.length);
12
+ if (slash < 0)
13
+ return null;
14
+ const room = locators.get(path.slice(ROOMS.length, slash));
15
+ if (room === undefined)
16
+ return null;
17
+ return {
18
+ room,
19
+ path: path.slice(slash + 1),
20
+ ...(typeof line === 'number' ? { line } : {}),
21
+ ...(typeof snippet === 'string' ? { snippet } : {}),
22
+ };
23
+ }
24
+ export async function houseSearch(transport, tracked, request) {
25
+ const named = request.rooms === null
26
+ ? null
27
+ : tracked.filter((entry) => request.rooms.includes(entry.locator));
28
+ if (named !== null && named.length === 0)
29
+ return { kind: 'found', documents: [] };
30
+ const answer = await transport.door(houseDoorRoute('search'), {
31
+ query: request.text,
32
+ ...(named === null ? {} : { paths: named.map((entry) => `${ROOMS}${entry.handle}`) }),
33
+ });
34
+ if (answer.status === 401)
35
+ return { kind: 'revoked-authorization' };
36
+ const refusal = doorRefusal(answer.body);
37
+ if (refusal !== null)
38
+ return { kind: 'rejected', ...refusal };
39
+ const files = answer.body?.files;
40
+ if (answer.status !== 200 || !Array.isArray(files))
41
+ return UNCERTAIN;
42
+ const locators = new Map(tracked.map((entry) => [entry.handle, entry.locator]));
43
+ return {
44
+ kind: 'found',
45
+ documents: files.flatMap((file) => hitOf(file, locators) ?? []),
46
+ };
47
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAWR,MAAM,wBAAwB,CAAC;AA+BhC,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAoCxB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAoP1F"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../src/site.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAQR,MAAM,wBAAwB,CAAC;AAehC,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAuBxB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAkK1F"}
package/dist/site.js CHANGED
@@ -1,14 +1,13 @@
1
1
  import { stepped } from '@agentshouse/mdruntime';
2
- import { actionOutcome, SITE_SUBMIT } from './actions.js';
2
+ import { actionOutcome } from './actions.js';
3
3
  import { mapDiscovery, parseSiteDiscovery, siteCapabilities, siteTracked, } from './discovery.js';
4
- import { partModels, streamedModels, viewModels } from './model.js';
5
- import { bootstrapping, emptyScope, housePart, manifested, parseEnumeration, parseSiteParted, partInventory, refreshFrom, viewOf, wholeView, } from './read.js';
6
- import { PART_ATTEMPTS, partArrival, partFrame, unverifiedPart } from './part.js';
7
- import { classifyDoor, classifyRead, discoveryFailure } from './refusal.js';
8
- import { HOUSE_ROOM_TYPES } from './room-types.js';
4
+ import { bootstrapping } from './read.js';
5
+ import { roomStreams } from './room-stream.js';
6
+ import { classifyDoor, discoveryFailure } from './refusal.js';
7
+ import { HOUSE_NAMEABLE_ROOM_TYPES, HOUSE_ROOM_TYPES } from './room-types.js';
9
8
  import { houseNotifications } from './stream.js';
10
- import { SITE_DOOR_BOOTSTRAP, SITE_DOOR_DISCOVER, SITE_DOOR_ENUMERATE, SITE_DOOR_SUBMIT, SITE_FILES, } from './transport.js';
11
- import { followsVersion, logPosition, presented, reachedVersion, roomVersion, } from './version.js';
9
+ import { houseSiteRoute, SITE_DOOR_SUBMIT, SITE_FILES, SITE_SUBMISSION, } from './transport.js';
10
+ import { followsVersion, logPosition, presented, reachedVersion, roomVersion } from './version.js';
12
11
  const UNCERTAIN = { kind: 'transport-uncertainty' };
13
12
  function unfound() {
14
13
  return { kind: 'rejected', code: 'file_not_found', fields: {}, retryable: false };
@@ -25,168 +24,96 @@ function siteRoom(tracked) {
25
24
  };
26
25
  }
27
26
  export function createSiteAdapter(transport, snapshot = false) {
28
- const notifications = houseNotifications(transport, 'site');
27
+ const notifications = houseNotifications(transport, 'site', {
28
+ opened: async () => {
29
+ const found = await discovered();
30
+ return found.kind === 'discovery' ? found : null;
31
+ },
32
+ changed: () => null,
33
+ });
29
34
  const tracked = new Map();
30
- const expired = new Map();
35
+ const read = new Map();
36
+ const rooms = roomStreams('site');
31
37
  function fileRoute(request) {
32
38
  const entry = tracked.get(request.locator);
33
39
  if (entry === undefined)
34
40
  return { kind: 'room-not-readable', locator: request.locator };
35
41
  return `${SITE_FILES}${entry.authority}/${encodeURIComponent(request.revision)}/${encodeURIComponent(request.path)}`;
36
42
  }
37
- async function enumerated(entry, from, page) {
38
- const answer = await transport.door(SITE_DOOR_ENUMERATE, {
39
- positions: [
40
- page === undefined
41
- ? presented(entry.authority, from)
42
- : {
43
- ...presented(entry.authority, { position: page.after, logEpoch: from.logEpoch }),
44
- page: { through: page.through, read: page.read },
45
- },
46
- ],
47
- });
48
- const classified = classifyRead(answer.status, answer.body, entry.locator);
49
- if (classified !== null)
50
- return classified;
51
- const found = parseEnumeration(answer.body, 'site');
52
- if (found === null)
53
- return UNCERTAIN;
54
- return viewOf(found, entry) ?? { kind: 'room-not-readable', locator: entry.locator };
55
- }
56
- async function enumeration(entry, from) {
57
- const first = await enumerated(entry, from);
58
- return 'kind' in first ? first : wholeView(first, (page) => enumerated(entry, from, page));
43
+ async function openedRoom(entry, arriving, signal) {
44
+ const cut = read.get(entry.locator);
45
+ const answered = await transport.streamed(`${houseSiteRoute('bootstrap')}/${entry.authority}${cut === undefined ? '' : `?expired=${cut}`}`, signal ?? new AbortController().signal);
46
+ if (answered.room === null)
47
+ return classifyDoor(answered.status, answered.body, entry.locator) ?? UNCERTAIN;
48
+ const head = await rooms.head(entry, answered.room, arriving, signal);
49
+ const at = head.kind === 'bootstrap' ? logPosition(head.roomVersion) : null;
50
+ if (at !== null)
51
+ read.set(entry.locator, at.position);
52
+ return head;
59
53
  }
60
- async function partedRoom(entry) {
61
- const cut = expired.get(entry.locator);
62
- const answer = await transport.read(`${SITE_DOOR_BOOTSTRAP}${entry.authority}${cut === undefined ? '' : `?expired=${cut}`}`);
63
- const classified = classifyDoor(answer.status, answer.body, entry.locator);
64
- if (classified !== null)
65
- return classified;
66
- const room = parseSiteParted(answer.body);
67
- return room === null || room.anchor !== entry.authority ? UNCERTAIN : room;
54
+ async function streamedPage(entry, token) {
55
+ const part = await rooms.part(entry, token);
56
+ if ('kind' in part)
57
+ return part;
58
+ const { folders: _folders, ...page } = await stepped(bootstrapping(part.scope));
59
+ return {
60
+ ...page,
61
+ ...(part.models === undefined ? {} : { models: part.models }),
62
+ ...(part.pageToken === undefined ? {} : { pageToken: part.pageToken }),
63
+ bytes: part.bytes,
64
+ };
68
65
  }
69
- async function fetchedPart(entry, room, listed, received, arriving) {
70
- if (received !== undefined) {
71
- const kept = new Uint8Array(received);
72
- const held = await housePart(room, kept, listed, 'site');
73
- if (held !== null)
74
- return 'kind' in held ? held : { scope: held, frame: kept };
75
- }
76
- for (let attempt = 0; attempt < PART_ATTEMPTS; attempt += 1) {
77
- const answer = await transport.read(`${SITE_DOOR_BOOTSTRAP}${entry.authority}?part=${encodeURIComponent(listed.part)}`, partArrival(listed, arriving));
78
- const failure = classifyRead(answer.status, answer.body, entry.locator);
79
- if (failure?.kind === 'beyond-horizon')
80
- expired.set(entry.locator, room.position);
81
- if (failure !== null)
82
- return failure;
83
- const frame = partFrame(answer.body);
84
- if (frame === null)
85
- continue;
86
- const scope = await housePart(room, frame, listed, 'site');
87
- if (scope !== null)
88
- return 'kind' in scope ? scope : { scope, frame };
89
- }
90
- return unverifiedPart(entry.locator);
91
- }
92
- async function refreshed(entry, fromRoomVersion) {
93
- const from = logPosition(fromRoomVersion);
94
- if (from === null)
95
- return { kind: 'beyond-horizon' };
96
- const streamed = await stepped(notifications.advance(entry, from));
97
- if (streamed !== null) {
98
- const models = await streamedModels(streamed.schemas, entry, 'site');
99
- return models === undefined ? streamed.page : { ...streamed.page, models };
100
- }
101
- const view = await enumeration(entry, from);
102
- if ('kind' in view)
103
- return view;
104
- notifications.reach(entry.authority, view);
105
- const answer = await refreshFrom(view, fromRoomVersion);
106
- if (answer.kind !== 'net-advancement')
107
- return answer;
108
- const models = await viewModels(view, entry);
109
- return models === undefined ? answer : { ...answer, models };
66
+ async function discovered() {
67
+ const answer = await transport.read(houseSiteRoute('discover'));
68
+ const failed = discoveryFailure(answer.status, answer.body);
69
+ if (failed !== null)
70
+ return failed;
71
+ const document = parseSiteDiscovery(answer.body);
72
+ if (document === null)
73
+ return UNCERTAIN;
74
+ const entries = siteTracked(document);
75
+ tracked.clear();
76
+ for (const entry of entries)
77
+ tracked.set(entry.locator, entry);
78
+ notifications.track(entries);
79
+ return mapDiscovery(document, entries.map(siteRoom), siteCapabilities());
110
80
  }
111
81
  return {
112
82
  localSaves: true,
113
- exhaustiveDiscovery: true,
114
83
  roomTypes: HOUSE_ROOM_TYPES,
84
+ nameableRoomTypes: HOUSE_NAMEABLE_ROOM_TYPES,
115
85
  async authorize() {
116
86
  return {};
117
87
  },
118
- async discover() {
119
- const answer = await transport.read(SITE_DOOR_DISCOVER);
120
- const failed = discoveryFailure(answer.status, answer.body);
121
- if (failed !== null)
122
- return failed;
123
- const document = parseSiteDiscovery(answer.body);
124
- if (document === null)
125
- return UNCERTAIN;
126
- const entries = siteTracked(document);
127
- tracked.clear();
128
- for (const entry of entries)
129
- tracked.set(entry.locator, entry);
130
- notifications.track(entries);
131
- return mapDiscovery(document, entries.map(siteRoom), siteCapabilities());
132
- },
133
88
  async bootstrap(_authorization, request) {
134
89
  const entry = tracked.get(request.locator);
135
90
  if (entry === undefined)
136
91
  return { kind: 'room-not-readable', locator: request.locator };
137
- let continued;
138
- let inventory;
139
- if (request.pageToken === undefined) {
140
- const room = await partedRoom(entry);
141
- if ('kind' in room)
142
- return room;
143
- continued = { room, next: 0, seen: [] };
144
- inventory = partInventory(room);
145
- if (inventory.parts > 0)
146
- return manifested(room, inventory, JSON.stringify(continued));
147
- }
148
- else
149
- continued = JSON.parse(request.pageToken);
150
- const listed = continued.room.parts[continued.next];
151
- const sent = listed === undefined
152
- ? { scope: emptyScope(continued.room), frame: null }
153
- : await fetchedPart(entry, continued.room, listed, request.received, request.arriving);
154
- if ('kind' in sent)
155
- return sent;
156
- const { scope } = sent;
157
- notifications.reach(entry.authority, scope);
158
- const next = continued.next + 1;
159
- const more = next < continued.room.parts.length;
160
- const seen = [
161
- ...continued.seen,
162
- ...entry.schemas.filter((schema) => scope.files.some((file) => file.path === schema)),
163
- ];
164
- const models = await partModels(scope, entry, new Set(seen), !more);
165
- const { folders: _folders, ...page } = await stepped(bootstrapping(scope));
166
- return {
167
- ...page,
168
- ...(models === undefined ? {} : { models }),
169
- ...(more ? { pageToken: JSON.stringify({ ...continued, next, seen }) } : {}),
170
- ...(inventory === undefined ? {} : { inventory }),
171
- ...(sent.frame === null ? {} : { received: sent.frame }),
172
- };
92
+ return request.pageToken === undefined
93
+ ? openedRoom(entry, request.arriving, request.signal)
94
+ : streamedPage(entry, request.pageToken);
173
95
  },
174
- async refresh(_authorization, request) {
175
- const entry = tracked.get(request.locator);
176
- if (entry === undefined)
177
- return { kind: 'room-not-readable', locator: request.locator };
178
- if (request.pageToken !== undefined)
179
- return UNCERTAIN;
180
- if (snapshot) {
181
- return request.fromRoomVersion === roomVersion(entry)
182
- ? { kind: 'still-current' }
183
- : { kind: 'beyond-horizon' };
96
+ ...(snapshot
97
+ ? {
98
+ discover: discovered,
99
+ async refresh(_authorization, request) {
100
+ const entry = tracked.get(request.locator);
101
+ if (entry === undefined)
102
+ return { kind: 'room-not-readable', locator: request.locator };
103
+ if (request.pageToken !== undefined)
104
+ return UNCERTAIN;
105
+ return request.fromRoomVersion === roomVersion(entry)
106
+ ? { kind: 'still-current' }
107
+ : { kind: 'beyond-horizon' };
108
+ },
184
109
  }
185
- return refreshed(entry, request.fromRoomVersion);
186
- },
110
+ : {}),
187
111
  async mutate() {
188
112
  return { kind: 'rejected', affected: {}, code: 'write-grant', fields: {}, retryable: false };
189
113
  },
114
+ async attach() {
115
+ return { kind: 'rejected', code: 'write-grant', fields: {}, retryable: false };
116
+ },
190
117
  async history() {
191
118
  return { kind: 'no-history' };
192
119
  },
@@ -218,7 +145,7 @@ export function createSiteAdapter(transport, snapshot = false) {
218
145
  return followsVersion(version, next);
219
146
  },
220
147
  async action(_authorization, request) {
221
- if (request.name !== SITE_SUBMIT) {
148
+ if (request.name !== SITE_SUBMISSION) {
222
149
  return {
223
150
  kind: 'rejected',
224
151
  code: 'action-unimplemented',
@@ -228,7 +155,7 @@ export function createSiteAdapter(transport, snapshot = false) {
228
155
  }
229
156
  if (!transport.online())
230
157
  return UNCERTAIN;
231
- return actionOutcome(await transport.door(SITE_DOOR_SUBMIT, request.input), SITE_SUBMIT);
158
+ return actionOutcome(await transport.door(SITE_DOOR_SUBMIT, request.input), SITE_SUBMISSION);
232
159
  },
233
160
  roomStream: snapshot
234
161
  ? undefined
@@ -237,19 +164,10 @@ export function createSiteAdapter(transport, snapshot = false) {
237
164
  notifications.send(rooms.flatMap((room) => {
238
165
  const entry = tracked.get(room.locator);
239
166
  const at = logPosition(room.roomVersion);
240
- if (entry === undefined || at === null)
241
- return [];
242
- notifications.reach(entry.authority, at);
243
- return [presented(entry.authority, at)];
167
+ return entry === undefined || at === null ? [] : [presented(entry.authority, at)];
244
168
  }));
245
169
  },
246
- reopen: notifications.reopen,
247
170
  observe: notifications.observe,
248
- published(locator, roomVersion) {
249
- const at = logPosition(roomVersion);
250
- if (at !== null)
251
- notifications.published(locator, at);
252
- },
253
171
  },
254
172
  serviceMode: notifications.serviceMode,
255
173
  };
package/dist/stream.d.ts CHANGED
@@ -1,24 +1,23 @@
1
- import { type ConversationStream, type RefreshPage, type RoomStreamEvent, type ServiceModeSignal, type StreamReceipts } from '@agentshouse/mdruntime';
1
+ import { type AuthorityChange, type Discovery, type ConversationStream, type RoomStreamEvent, type ServiceModeSignal } from '@agentshouse/mdruntime';
2
2
  import type { TrackedAuthority } from './discovery.js';
3
- import type { HouseDoor, HouseHeldRoom, HouseMode, HouseStreamEntry } from './transport.js';
4
- import { type LogPosition } from './version.js';
5
- export type HeldRevision = (path: string, revision: string) => boolean;
6
- export type StreamedAdvancement = {
7
- page: RefreshPage;
8
- schemas: ReadonlyMap<string, HouseStreamEntry>;
3
+ import { type HouseDoor, type HouseHeldRoom, type HouseMode, type HouseStreamFrame } from './transport.js';
4
+ export type HouseOpeningFrame = Extract<HouseStreamFrame, {
5
+ type: 'opening';
6
+ }>;
7
+ export type HouseAuthorityChangedFrame = Extract<HouseStreamFrame, {
8
+ type: 'authority_changed';
9
+ }>;
10
+ export type HouseDiscovering = {
11
+ opened(frame: HouseOpeningFrame | null): Promise<Discovery | null>;
12
+ changed(frame: HouseAuthorityChangedFrame): AuthorityChange | null;
9
13
  };
10
14
  export type HouseNotifications = {
11
15
  runtime: string;
12
- observe(notify: (event: RoomStreamEvent) => void, receipts: StreamReceipts): () => void;
16
+ observe(notify: (event: RoomStreamEvent) => void): () => void;
13
17
  send(rooms: readonly HouseHeldRoom[]): void;
14
- published(locator: string, at: LogPosition): void;
15
- reopen(): void;
16
18
  track(authorities: readonly TrackedAuthority[]): void;
17
- reach(authority: string, at: LogPosition): void;
18
- edited(tracked: TrackedAuthority, from: LogPosition): readonly string[];
19
- advance(tracked: TrackedAuthority, from: LogPosition, holds?: HeldRevision): Generator<number, StreamedAdvancement | null, void>;
20
19
  conversations: ConversationStream;
21
20
  serviceMode: ServiceModeSignal;
22
21
  };
23
- export declare function houseNotifications(transport: HouseDoor, mode: HouseMode): HouseNotifications;
22
+ export declare function houseNotifications(transport: HouseDoor, mode: HouseMode, discovering: HouseDiscovering): HouseNotifications;
24
23
  //# sourceMappingURL=stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,eAAe,EAEpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAUvD,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EAEb,SAAS,EAET,gBAAgB,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AA0C7D,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAAC;IACxF,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAClD,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,MAAM,EAAE,CAAC;IACxE,OAAO,CACL,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,EACjB,KAAK,CAAC,EAAE,YAAY,GACnB,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,aAAa,EAAE,kBAAkB,CAAC;IAClC,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAmFF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,kBAAkB,CA8jB5F"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAEpB,KAAK,SAAS,EACd,KAAK,kBAAkB,EAIvB,KAAK,eAAe,EAEpB,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAYvD,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,SAAS,EAGd,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAaxB,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC,gBAAgB,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAAC;AAElG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,KAAK,EAAE,0BAA0B,GAAG,eAAe,GAAG,IAAI,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,GAAG,IAAI,CAAC;IACtD,aAAa,EAAE,kBAAkB,CAAC;IAClC,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAqFF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,gBAAgB,GAC5B,kBAAkB,CA6TpB"}