@agentshouse/mdruntime 0.1.0-ca7c26c6bc27e → 0.1.0-ca92b54804c33

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 (182) hide show
  1. package/README.md +25 -12
  2. package/dist/adapter.d.ts +199 -54
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/adapter.js +1 -9
  5. package/dist/attached-model.d.ts +7 -10
  6. package/dist/attached-model.d.ts.map +1 -1
  7. package/dist/attached-model.js +40 -28
  8. package/dist/attempt.d.ts +16 -0
  9. package/dist/attempt.d.ts.map +1 -0
  10. package/dist/attempt.js +70 -0
  11. package/dist/binary.d.ts +18 -0
  12. package/dist/binary.d.ts.map +1 -0
  13. package/dist/binary.js +8 -0
  14. package/dist/bootstrap.d.ts +37 -5
  15. package/dist/bootstrap.d.ts.map +1 -1
  16. package/dist/bootstrap.js +336 -51
  17. package/dist/chain.d.ts +12 -0
  18. package/dist/chain.d.ts.map +1 -0
  19. package/dist/chain.js +64 -0
  20. package/dist/change-set.d.ts +9 -14
  21. package/dist/change-set.d.ts.map +1 -1
  22. package/dist/change-set.js +11 -56
  23. package/dist/change.d.ts +46 -0
  24. package/dist/change.d.ts.map +1 -1
  25. package/dist/change.js +34 -0
  26. package/dist/client.d.ts +44 -18
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +161 -30
  29. package/dist/collection.d.ts +13 -14
  30. package/dist/collection.d.ts.map +1 -1
  31. package/dist/collection.js +52 -56
  32. package/dist/compile.d.ts +11 -0
  33. package/dist/compile.d.ts.map +1 -0
  34. package/dist/compile.js +586 -0
  35. package/dist/connection.d.ts +67 -24
  36. package/dist/connection.d.ts.map +1 -1
  37. package/dist/connection.js +4414 -1205
  38. package/dist/context.d.ts +2 -0
  39. package/dist/context.d.ts.map +1 -0
  40. package/dist/context.js +7 -0
  41. package/dist/conversation.d.ts +65 -21
  42. package/dist/conversation.d.ts.map +1 -1
  43. package/dist/conversation.js +922 -273
  44. package/dist/digest.d.ts +7 -0
  45. package/dist/digest.d.ts.map +1 -0
  46. package/dist/digest.js +113 -0
  47. package/dist/durability.d.ts +10 -1
  48. package/dist/durability.d.ts.map +1 -1
  49. package/dist/durability.js +5 -0
  50. package/dist/entry.d.ts +20 -0
  51. package/dist/entry.d.ts.map +1 -0
  52. package/dist/entry.js +161 -0
  53. package/dist/expectation.d.ts +21 -0
  54. package/dist/expectation.d.ts.map +1 -0
  55. package/dist/expectation.js +70 -0
  56. package/dist/failure.d.ts +13 -0
  57. package/dist/failure.d.ts.map +1 -0
  58. package/dist/failure.js +19 -0
  59. package/dist/file.d.ts +2 -19
  60. package/dist/file.d.ts.map +1 -1
  61. package/dist/file.js +7 -122
  62. package/dist/host.d.ts +11 -2
  63. package/dist/host.d.ts.map +1 -1
  64. package/dist/host.js +134 -34
  65. package/dist/identity.d.ts +3 -0
  66. package/dist/identity.d.ts.map +1 -1
  67. package/dist/identity.js +13 -1
  68. package/dist/index.d.ts +24 -10
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +11 -0
  71. package/dist/job.d.ts +14 -0
  72. package/dist/job.d.ts.map +1 -0
  73. package/dist/job.js +28 -0
  74. package/dist/live.d.ts +23 -0
  75. package/dist/live.d.ts.map +1 -0
  76. package/dist/live.js +165 -0
  77. package/dist/media.d.ts +8 -0
  78. package/dist/media.d.ts.map +1 -0
  79. package/dist/media.js +218 -0
  80. package/dist/memory.d.ts +22 -8
  81. package/dist/memory.d.ts.map +1 -1
  82. package/dist/memory.js +299 -94
  83. package/dist/messages.d.ts +28 -0
  84. package/dist/messages.d.ts.map +1 -0
  85. package/dist/messages.js +91 -0
  86. package/dist/model.d.ts +17 -12
  87. package/dist/model.d.ts.map +1 -1
  88. package/dist/model.js +9 -9
  89. package/dist/name.d.ts +4 -0
  90. package/dist/name.d.ts.map +1 -0
  91. package/dist/name.js +122 -0
  92. package/dist/observation.d.ts +22 -4
  93. package/dist/observation.d.ts.map +1 -1
  94. package/dist/observation.js +120 -14
  95. package/dist/open.d.ts +2 -0
  96. package/dist/open.d.ts.map +1 -0
  97. package/dist/open.js +1 -0
  98. package/dist/opened.d.ts +22 -0
  99. package/dist/opened.d.ts.map +1 -0
  100. package/dist/opened.js +107 -0
  101. package/dist/outcome.d.ts +72 -5
  102. package/dist/outcome.d.ts.map +1 -1
  103. package/dist/outcome.js +81 -1
  104. package/dist/overlay.d.ts +16 -5
  105. package/dist/overlay.d.ts.map +1 -1
  106. package/dist/overlay.js +147 -180
  107. package/dist/paths.d.ts +1 -1
  108. package/dist/paths.d.ts.map +1 -1
  109. package/dist/paths.js +4 -16
  110. package/dist/query.d.ts +42 -181
  111. package/dist/query.d.ts.map +1 -1
  112. package/dist/query.js +3 -423
  113. package/dist/reach.d.ts +19 -5
  114. package/dist/reach.d.ts.map +1 -1
  115. package/dist/reach.js +298 -92
  116. package/dist/react.d.ts +45 -0
  117. package/dist/react.d.ts.map +1 -0
  118. package/dist/react.js +54 -0
  119. package/dist/readiness.d.ts +50 -0
  120. package/dist/readiness.d.ts.map +1 -0
  121. package/dist/readiness.js +27 -0
  122. package/dist/recovery.d.ts +26 -0
  123. package/dist/recovery.d.ts.map +1 -0
  124. package/dist/recovery.js +232 -0
  125. package/dist/refresh.d.ts +20 -7
  126. package/dist/refresh.d.ts.map +1 -1
  127. package/dist/refresh.js +155 -59
  128. package/dist/replica.d.ts +61 -34
  129. package/dist/replica.d.ts.map +1 -1
  130. package/dist/replica.js +355 -162
  131. package/dist/room-draft.d.ts +59 -11
  132. package/dist/room-draft.d.ts.map +1 -1
  133. package/dist/room-draft.js +276 -80
  134. package/dist/rows.d.ts +32 -34
  135. package/dist/rows.d.ts.map +1 -1
  136. package/dist/rows.js +65 -87
  137. package/dist/save.d.ts +74 -6
  138. package/dist/save.d.ts.map +1 -1
  139. package/dist/save.js +902 -182
  140. package/dist/search.d.ts +15 -54
  141. package/dist/search.d.ts.map +1 -1
  142. package/dist/search.js +10 -121
  143. package/dist/seed.d.ts +16 -0
  144. package/dist/seed.d.ts.map +1 -0
  145. package/dist/seed.js +75 -0
  146. package/dist/shared.d.ts +15 -0
  147. package/dist/shared.d.ts.map +1 -0
  148. package/dist/shared.js +421 -0
  149. package/dist/status.d.ts +7 -4
  150. package/dist/status.d.ts.map +1 -1
  151. package/dist/status.js +3 -15
  152. package/dist/store.d.ts +174 -68
  153. package/dist/store.d.ts.map +1 -1
  154. package/dist/store.js +367 -360
  155. package/dist/stored.d.ts +156 -0
  156. package/dist/stored.d.ts.map +1 -0
  157. package/dist/stored.js +635 -0
  158. package/dist/tables.d.ts +381 -0
  159. package/dist/tables.d.ts.map +1 -0
  160. package/dist/tables.js +700 -0
  161. package/dist/transfer.d.ts +0 -5
  162. package/dist/transfer.d.ts.map +1 -1
  163. package/dist/turn.d.ts +9 -0
  164. package/dist/turn.d.ts.map +1 -0
  165. package/dist/turn.js +75 -0
  166. package/dist/validation.d.ts +29 -0
  167. package/dist/validation.d.ts.map +1 -0
  168. package/dist/validation.js +104 -0
  169. package/dist/windows.d.ts +11 -0
  170. package/dist/windows.d.ts.map +1 -0
  171. package/dist/windows.js +16 -0
  172. package/dist/wire.d.ts +179 -45
  173. package/dist/wire.d.ts.map +1 -1
  174. package/dist/wire.js +72 -46
  175. package/package.json +33 -10
  176. package/AGENTS.md +0 -215
  177. package/dist/attachment.d.ts +0 -3
  178. package/dist/attachment.d.ts.map +0 -1
  179. package/dist/attachment.js +0 -8
  180. package/dist/read-side.d.ts +0 -18
  181. package/dist/read-side.d.ts.map +0 -1
  182. package/dist/read-side.js +0 -377
@@ -1,10 +1,5 @@
1
- import type { Refusal } from '@agentshouse/mdmodel';
2
1
  export type Unconfirmed = {
3
2
  kind: 'unconfirmed';
4
3
  };
5
- export type Refused = {
6
- kind: 'refused';
7
- refusal: Refusal;
8
- };
9
4
  export declare const unconfirmed: Unconfirmed;
10
5
  //# sourceMappingURL=transfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAElD,MAAM,MAAM,OAAO,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,eAAO,MAAM,WAAW,EAAE,WAAqC,CAAC"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../src/transfer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAElD,eAAO,MAAM,WAAW,EAAE,WAAqC,CAAC"}
package/dist/turn.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export declare function yielded(): Promise<void>;
2
+ export declare const ROW_WEIGHT = 256;
3
+ export type Later<T> = T | Promise<T>;
4
+ export declare function after<T, R>(value: Later<T>, next: (value: T) => Later<R>): Later<R>;
5
+ export declare function paced(): (weight: number) => Later<void>;
6
+ export declare function inUnits<T>(items: Iterable<T>, each: (item: T) => number, ended?: () => void, paused?: () => Promise<void>): Later<void>;
7
+ export declare function finished<R>(steps: Generator<number, R, void>): R;
8
+ export declare function stepped<R>(steps: Generator<number, R, void>): Later<R>;
9
+ //# sourceMappingURL=turn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../src/turn.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CASvC;AAOD,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAEnF;AAmBD,wBAAgB,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,CAGvD;AAsBD,wBAAgB,OAAO,CAAC,CAAC,EACvB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAClB,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EACzB,KAAK,GAAE,MAAM,IAAe,EAC5B,MAAM,GAAE,MAAM,OAAO,CAAC,IAAI,CAAW,GACpC,KAAK,CAAC,IAAI,CAAC,CAUb;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAIhE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAStE"}
package/dist/turn.js ADDED
@@ -0,0 +1,75 @@
1
+ export function yielded() {
2
+ return new Promise((resolve) => {
3
+ const channel = new MessageChannel();
4
+ channel.port1.onmessage = () => {
5
+ channel.port1.close();
6
+ resolve();
7
+ };
8
+ structuredClone(channel.port2, { transfer: [channel.port2] }).postMessage(null);
9
+ });
10
+ }
11
+ const UNIT = 1 << 20;
12
+ // A unit of runtime work ends within one 60 Hz frame so a port's next message waits at most a frame.
13
+ const SLICE_MS = 16;
14
+ export const ROW_WEIGHT = 256;
15
+ export function after(value, next) {
16
+ return value instanceof Promise ? value.then(next) : next(value);
17
+ }
18
+ function spending() {
19
+ let spent = 0;
20
+ let since = performance.now();
21
+ return {
22
+ spend(weight) {
23
+ spent += weight;
24
+ return spent >= UNIT || performance.now() - since >= SLICE_MS;
25
+ },
26
+ restart() {
27
+ spent = 0;
28
+ since = performance.now();
29
+ },
30
+ };
31
+ }
32
+ export function paced() {
33
+ const spent = spending();
34
+ return (weight) => (spent.spend(weight) ? yielded().then(() => spent.restart()) : undefined);
35
+ }
36
+ async function resumed(iterator, each, ended, paused) {
37
+ const spent = spending();
38
+ for (let due = true;;) {
39
+ if (due) {
40
+ await paused();
41
+ spent.restart();
42
+ }
43
+ const next = iterator.next();
44
+ if (next.done === true)
45
+ break;
46
+ due = spent.spend(each(next.value));
47
+ if (due)
48
+ ended();
49
+ }
50
+ ended();
51
+ }
52
+ export function inUnits(items, each, ended = () => { }, paused = yielded) {
53
+ const iterator = items[Symbol.iterator]();
54
+ const spent = spending();
55
+ for (let next = iterator.next(); next.done !== true; next = iterator.next()) {
56
+ if (spent.spend(each(next.value))) {
57
+ ended();
58
+ return resumed(iterator, each, ended, paused);
59
+ }
60
+ }
61
+ ended();
62
+ }
63
+ export function finished(steps) {
64
+ for (let step = steps.next();; step = steps.next()) {
65
+ if (step.done === true)
66
+ return step.value;
67
+ }
68
+ }
69
+ export function stepped(steps) {
70
+ let result;
71
+ const driven = function* () {
72
+ result = yield* steps;
73
+ };
74
+ return after(inUnits(driven(), (weight) => weight), () => result);
75
+ }
@@ -0,0 +1,29 @@
1
+ import { type Validation } from '@agentshouse/mdmodel';
2
+ import { type Composition } from './collection.js';
3
+ type Examined = {
4
+ readonly path: string;
5
+ readonly content: string | null;
6
+ };
7
+ export type Typed = {
8
+ readonly type: string | undefined;
9
+ readonly binary: boolean;
10
+ };
11
+ export type Walk = (after: string | null) => Promise<{
12
+ readonly entries: readonly Examined[];
13
+ readonly next: string | null;
14
+ }>;
15
+ export type Lookup = (paths: readonly string[]) => Promise<ReadonlyMap<string, Typed>>;
16
+ export declare function validatedCollection(walk: Walk, lookup: Lookup, composition: Composition): Promise<Validation>;
17
+ export type Changed = {
18
+ readonly path: string;
19
+ readonly was: string | null | undefined;
20
+ readonly now: string | null | undefined;
21
+ };
22
+ type Neighbourhood = {
23
+ readonly lookup: Lookup;
24
+ readonly texts: (paths: readonly string[]) => Promise<ReadonlyMap<string, string | null>>;
25
+ readonly referrers: (targets: readonly string[]) => Promise<readonly string[]>;
26
+ };
27
+ export declare function validatedNeighbourhood(changes: readonly Changed[], composition: Composition, source: Neighbourhood): Promise<Validation>;
28
+ export {};
29
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,UAAU,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM7D,KAAK,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,IAAI,GAAG,CACjB,KAAK,EAAE,MAAM,GAAG,IAAI,KACjB,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAEtF,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAwBvF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,UAAU,CAAC,CA6CrB;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CAChF,CAAC;AAkBF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,UAAU,CAAC,CAgCrB"}
@@ -0,0 +1,104 @@
1
+ import { assess, parse, parseFrontmatter, verdicts, } from '@agentshouse/mdmodel';
2
+ import { selected } from './collection.js';
3
+ import { paced, ROW_WEIGHT, yielded } from './turn.js';
4
+ const NO_TYPES = { types: {} };
5
+ function modelOf(model) {
6
+ return model.status === 'unavailable' ? NO_TYPES : { types: model.types };
7
+ }
8
+ function typedText(read) {
9
+ return read.ok && read.document.type !== undefined && read.document.type !== 'any';
10
+ }
11
+ function partVerdict(part) {
12
+ return part.unmodeled !== null
13
+ ? { verdict: 'refuse', rule: 'model-unavailable', file: part.unmodeled }
14
+ : part.judged.verdict();
15
+ }
16
+ export async function validatedCollection(walk, lookup, composition) {
17
+ const collection = { model: composition.model, judged: verdicts(), unmodeled: null };
18
+ const selection = composition.selection === null
19
+ ? null
20
+ : { model: composition.selection.model, judged: verdicts(), unmodeled: null };
21
+ const partOf = (path) => selection !== null && selected(composition, path) ? selection : collection;
22
+ const pace = paced();
23
+ for (let after = null;;) {
24
+ const { entries, next } = await walk(after);
25
+ const assessed = [];
26
+ for (const { path, content } of entries) {
27
+ if (content === null)
28
+ continue;
29
+ const part = partOf(path);
30
+ const parsed = parse(content, path);
31
+ if (part.model.status === 'unavailable' && part.unmodeled === null && typedText(parsed)) {
32
+ part.unmodeled = path;
33
+ }
34
+ const assessment = assess(path, parsed, false, modelOf(part.model), {
35
+ anyRoom: true,
36
+ typedPaths: composition.typedPaths,
37
+ });
38
+ assessed.push({ part, assessment });
39
+ await pace(content.length + assessment.targets.length * ROW_WEIGHT);
40
+ }
41
+ const targets = [...new Set(assessed.flatMap(({ assessment }) => assessment.targets))];
42
+ const known = await lookup(targets);
43
+ for (const { part, assessment } of assessed) {
44
+ const within = (path) => partOf(path) === part;
45
+ part.judged.add(assessment, (path) => (within(path) ? known.get(path)?.type : undefined), (path) => within(path) && known.get(path)?.binary === true);
46
+ await pace((assessment.targets.length + 1) * ROW_WEIGHT);
47
+ }
48
+ if (next === null)
49
+ break;
50
+ after = next;
51
+ await yielded();
52
+ }
53
+ const judged = [partVerdict(collection), ...(selection === null ? [] : [partVerdict(selection)])];
54
+ const refusals = judged.filter((verdict) => verdict.verdict === 'refuse');
55
+ if (refusals.length === 0)
56
+ return judged[0];
57
+ return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];
58
+ }
59
+ function declared(content) {
60
+ if (content === undefined || content === null)
61
+ return undefined;
62
+ const read = parseFrontmatter(content);
63
+ return read.ok ? (read.frontmatter.type ?? 'any') : undefined;
64
+ }
65
+ function shifted({ was, now }) {
66
+ return ((now === undefined) !== (was === undefined) ||
67
+ (now === null) !== (was === null) ||
68
+ declared(now) !== declared(was));
69
+ }
70
+ const PAGE_TEXT = 1 << 20;
71
+ export async function validatedNeighbourhood(changes, composition, source) {
72
+ const pace = paced();
73
+ const changedAt = new Set();
74
+ const moved = [];
75
+ for (const change of changes) {
76
+ changedAt.add(change.path);
77
+ if (shifted(change))
78
+ moved.push(change.path);
79
+ await pace((change.now?.length ?? 0) + (change.was?.length ?? 0) + ROW_WEIGHT);
80
+ }
81
+ const referring = moved.length === 0
82
+ ? []
83
+ : (await source.referrers(moved)).filter((path) => !changedAt.has(path));
84
+ const texts = await source.texts(referring);
85
+ const total = changes.length + referring.length;
86
+ let at = 0;
87
+ const walk = async () => {
88
+ const entries = [];
89
+ let text = 0;
90
+ while (at < total && text < PAGE_TEXT) {
91
+ const change = changes[at];
92
+ const path = change?.path ?? referring[at - changes.length];
93
+ const content = change === undefined ? texts.get(path) : change.now;
94
+ at += 1;
95
+ text += ROW_WEIGHT;
96
+ if (content === undefined || content === null)
97
+ continue;
98
+ entries.push({ path, content });
99
+ text += content.length;
100
+ }
101
+ return { entries, next: at < total ? String(at) : null };
102
+ };
103
+ return validatedCollection(walk, source.lookup, composition);
104
+ }
@@ -0,0 +1,11 @@
1
+ export declare const MAXIMUM_WINDOW = 1000;
2
+ export declare const FROM_START: string;
3
+ export declare function capped(limit: number | null | undefined): number;
4
+ interface Placed {
5
+ readonly position: string;
6
+ readonly identity: string;
7
+ }
8
+ export declare function messageOrder(left: Placed, right: Placed): number;
9
+ export declare function precedes(message: Placed, before: readonly [string, string] | null): boolean;
10
+ export {};
11
+ //# sourceMappingURL=windows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows.d.ts","sourceRoot":"","sources":["../src/windows.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,eAAO,MAAM,UAAU,QAAe,CAAC;AAEvC,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE/D;AAED,UAAU,MAAM;IACd,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,CAE3F"}
@@ -0,0 +1,16 @@
1
+ import { cursorOf } from '@agentshouse/mdmodel';
2
+ export const MAXIMUM_WINDOW = 1000;
3
+ export const FROM_START = cursorOf([]);
4
+ export function capped(limit) {
5
+ return limit == null ? MAXIMUM_WINDOW : Math.min(limit, MAXIMUM_WINDOW);
6
+ }
7
+ export function messageOrder(left, right) {
8
+ if (left.position !== right.position)
9
+ return left.position < right.position ? -1 : 1;
10
+ if (left.identity !== right.identity)
11
+ return left.identity < right.identity ? -1 : 1;
12
+ return 0;
13
+ }
14
+ export function precedes(message, before) {
15
+ return before === null || messageOrder(message, { position: before[0], identity: before[1] }) < 0;
16
+ }
package/dist/wire.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type { ConnectionRefusal } from './connection.js';
2
- export declare const RUNTIME_WIRE_PROTOCOL = 8;
3
- export declare const PROTOCOL_MISMATCH: ConnectionRefusal;
2
+ import type { Described } from './failure.js';
4
3
  export type RuntimePort = {
5
4
  postMessage(message: unknown): void;
6
5
  addEventListener(type: 'message' | 'close', listener: (event: {
@@ -9,51 +8,193 @@ export type RuntimePort = {
9
8
  start(): void;
10
9
  };
11
10
  export type WireReach = 'within' | 'app' | 'runtime' | 'actions' | 'whole';
11
+ export type WireEffect = 'read' | 'write' | 'action';
12
+ export type WireCall = {
13
+ readonly reach: WireReach;
14
+ readonly effect: WireEffect;
15
+ };
12
16
  declare const MEMBERS: {
13
- readonly rooms: 'within';
14
- readonly query: 'within';
15
- readonly search: 'within';
16
- readonly types: 'within';
17
- readonly save: 'within';
18
- readonly history: 'within';
19
- readonly call: 'actions';
20
- readonly reached: 'within';
21
- readonly log: 'whole';
22
- readonly persistence: 'runtime';
23
- readonly reauthorize: 'runtime';
24
- readonly 'roomDraft.list': 'within';
25
- readonly 'roomDraft.read': 'within';
26
- readonly 'roomDraft.write': 'within';
27
- readonly 'roomDraft.discard': 'within';
28
- readonly 'presentation.read': 'app';
29
- readonly 'presentation.write': 'app';
30
- readonly 'conversation.list': 'within';
31
- readonly 'conversation.read': 'within';
32
- readonly 'conversation.create': 'within';
33
- readonly 'conversation.send': 'within';
34
- readonly 'conversation.answer': 'within';
35
- readonly 'conversation.interrupt': 'within';
36
- readonly 'conversation.kill': 'within';
37
- readonly 'conversation.cancel': 'within';
38
- readonly 'conversation.delete': 'within';
39
- readonly 'chatDraft.write': 'within';
40
- readonly 'chatDraft.discard': 'within';
17
+ readonly rooms: {
18
+ readonly reach: 'within';
19
+ readonly effect: 'read';
20
+ };
21
+ readonly query: {
22
+ readonly reach: 'within';
23
+ readonly effect: 'read';
24
+ };
25
+ readonly search: {
26
+ readonly reach: 'within';
27
+ readonly effect: 'read';
28
+ };
29
+ readonly types: {
30
+ readonly reach: 'within';
31
+ readonly effect: 'read';
32
+ };
33
+ readonly save: {
34
+ readonly reach: 'within';
35
+ readonly effect: 'write';
36
+ };
37
+ readonly saveParts: {
38
+ readonly reach: 'within';
39
+ readonly effect: 'write';
40
+ };
41
+ readonly history: {
42
+ readonly reach: 'within';
43
+ readonly effect: 'read';
44
+ };
45
+ readonly resolve: {
46
+ readonly reach: 'within';
47
+ readonly effect: 'read';
48
+ };
49
+ readonly 'binaryFile.read': {
50
+ readonly reach: 'within';
51
+ readonly effect: 'read';
52
+ };
53
+ readonly 'binaryFile.link': {
54
+ readonly reach: 'within';
55
+ readonly effect: 'read';
56
+ };
57
+ readonly 'binaryFile.show': {
58
+ readonly reach: 'within';
59
+ readonly effect: 'read';
60
+ };
61
+ readonly 'binaryFile.attach': {
62
+ readonly reach: 'within';
63
+ readonly effect: 'action';
64
+ };
65
+ readonly 'binaryFile.part': {
66
+ readonly reach: 'within';
67
+ readonly effect: 'read';
68
+ };
69
+ readonly call: {
70
+ readonly reach: 'actions';
71
+ readonly effect: 'action';
72
+ };
73
+ readonly reached: {
74
+ readonly reach: 'within';
75
+ readonly effect: 'read';
76
+ };
77
+ readonly log: {
78
+ readonly reach: 'whole';
79
+ readonly effect: 'read';
80
+ };
81
+ readonly cleanUp: {
82
+ readonly reach: 'whole';
83
+ readonly effect: 'write';
84
+ };
85
+ readonly unsent: {
86
+ readonly reach: 'whole';
87
+ readonly effect: 'read';
88
+ };
89
+ readonly reset: {
90
+ readonly reach: 'whole';
91
+ readonly effect: 'write';
92
+ };
93
+ readonly persistence: {
94
+ readonly reach: 'runtime';
95
+ readonly effect: 'read';
96
+ };
97
+ readonly retry: {
98
+ readonly reach: 'runtime';
99
+ readonly effect: 'write';
100
+ };
101
+ readonly reauthorize: {
102
+ readonly reach: 'runtime';
103
+ readonly effect: 'write';
104
+ };
105
+ readonly 'roomDraft.list': {
106
+ readonly reach: 'within';
107
+ readonly effect: 'read';
108
+ };
109
+ readonly 'roomDraft.read': {
110
+ readonly reach: 'within';
111
+ readonly effect: 'read';
112
+ };
113
+ readonly 'roomDraft.write': {
114
+ readonly reach: 'within';
115
+ readonly effect: 'write';
116
+ };
117
+ readonly 'roomDraft.discard': {
118
+ readonly reach: 'within';
119
+ readonly effect: 'write';
120
+ };
121
+ readonly 'presentation.read': {
122
+ readonly reach: 'app';
123
+ readonly effect: 'read';
124
+ };
125
+ readonly 'presentation.write': {
126
+ readonly reach: 'app';
127
+ readonly effect: 'write';
128
+ };
129
+ readonly 'presentation.edit': {
130
+ readonly reach: 'app';
131
+ readonly effect: 'write';
132
+ };
133
+ readonly 'conversation.list': {
134
+ readonly reach: 'within';
135
+ readonly effect: 'read';
136
+ };
137
+ readonly 'conversation.read': {
138
+ readonly reach: 'within';
139
+ readonly effect: 'read';
140
+ };
141
+ readonly 'conversation.create': {
142
+ readonly reach: 'within';
143
+ readonly effect: 'action';
144
+ };
145
+ readonly 'conversation.send': {
146
+ readonly reach: 'within';
147
+ readonly effect: 'action';
148
+ };
149
+ readonly 'conversation.answer': {
150
+ readonly reach: 'within';
151
+ readonly effect: 'action';
152
+ };
153
+ readonly 'conversation.interrupt': {
154
+ readonly reach: 'within';
155
+ readonly effect: 'action';
156
+ };
157
+ readonly 'conversation.kill': {
158
+ readonly reach: 'within';
159
+ readonly effect: 'action';
160
+ };
161
+ readonly 'conversation.delete': {
162
+ readonly reach: 'within';
163
+ readonly effect: 'action';
164
+ };
165
+ readonly 'chatDraft.write': {
166
+ readonly reach: 'within';
167
+ readonly effect: 'write';
168
+ };
169
+ readonly 'chatDraft.prepend': {
170
+ readonly reach: 'within';
171
+ readonly effect: 'write';
172
+ };
173
+ readonly 'chatDraft.discard': {
174
+ readonly reach: 'within';
175
+ readonly effect: 'write';
176
+ };
41
177
  };
42
178
  declare const TOPICS: {
43
179
  readonly rooms: 'within';
180
+ readonly readiness: 'within';
44
181
  readonly 'connection-refusal': 'runtime';
45
182
  readonly 'storage-loss': 'runtime';
46
183
  readonly 'deployment-facts': 'runtime';
47
184
  readonly 'sync-status': 'within';
48
185
  readonly 'service-mode': 'runtime';
186
+ readonly member: 'runtime';
187
+ readonly 'authority-changes': 'runtime';
49
188
  readonly query: 'within';
50
189
  readonly queue: 'within';
51
190
  readonly 'room-drafts': 'within';
52
191
  readonly presentation: 'app';
53
192
  readonly conversation: 'within';
193
+ readonly conversations: 'within';
194
+ readonly agents: 'within';
54
195
  };
55
- export declare const WIRE_REACH: {
56
- readonly members: Readonly<Record<string, WireReach>>;
196
+ export declare const WIRE: {
197
+ readonly members: Readonly<Record<string, WireCall>>;
57
198
  readonly topics: Readonly<Record<string, WireReach>>;
58
199
  };
59
200
  export type WireMember = keyof typeof MEMBERS;
@@ -78,11 +219,10 @@ export type WireAnswer = {
78
219
  kind: 'result';
79
220
  id: number;
80
221
  value: unknown;
81
- } | {
222
+ } | ({
82
223
  kind: 'failure';
83
224
  id: number;
84
- message: string;
85
- } | {
225
+ } & Described) | {
86
226
  kind: 'event';
87
227
  id: number;
88
228
  value: unknown;
@@ -92,18 +232,12 @@ export type WireAnswer = {
92
232
  } | {
93
233
  kind: 'ended';
94
234
  };
235
+ export declare function unanswered(call: {
236
+ readonly id: number;
237
+ readonly member: WireMember;
238
+ }): WireAnswer | null;
95
239
  export declare const AUTHORIZATION_ENDED = "the host authorization ended";
96
240
  export declare const PORT_CLOSED = "the port closed";
97
- export type WireEnvelope = {
98
- mdRuntime: number;
99
- message: WireRequest | WireAnswer;
100
- };
101
- export type Carried = {
102
- matching: boolean;
103
- message: unknown;
104
- };
105
- export declare function envelope(message: WireRequest | WireAnswer): WireEnvelope;
106
- export declare function carried(data: unknown): Carried | null;
107
241
  export declare function request(message: unknown): WireRequest | null;
108
242
  export declare function answer(message: unknown): WireAnswer | null;
109
243
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjG,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAElF,QAAA,MAAM,OAAO;;iBACF,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC9B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAChC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAChC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;;iBAC3B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;;iBAClC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBACrB,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC7B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBACnC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC5C,KAAK,EAAE,SAAS;iBAAE,MAAM,EAAE,QAAQ;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBACnC,KAAK,EAAE,OAAO;iBAAE,MAAM,EAAE,MAAM;;;iBAC1B,KAAK,EAAE,OAAO;iBAAE,MAAM,EAAE,OAAO;;;iBAChC,KAAK,EAAE,OAAO;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,OAAO;iBAAE,MAAM,EAAE,OAAO;;;iBACzB,KAAK,EAAE,SAAS;iBAAE,MAAM,EAAE,MAAM;;;iBACtC,KAAK,EAAE,SAAS;iBAAE,MAAM,EAAE,OAAO;;;iBAC3B,KAAK,EAAE,SAAS;iBAAE,MAAM,EAAE,OAAO;;;iBAC5B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC9B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;;iBAC9B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;;iBAChC,KAAK,EAAE,KAAK;iBAAE,MAAM,EAAE,MAAM;;;iBAC3B,KAAK,EAAE,KAAK;iBAAE,MAAM,EAAE,OAAO;;;iBAC9B,KAAK,EAAE,KAAK;iBAAE,MAAM,EAAE,OAAO;;;iBAC7B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,MAAM;;;iBAC7B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBACnC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBAC9B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBACtC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBAC/B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,QAAQ;;;iBACrC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;;iBAC9B,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;;iBAChC,KAAK,EAAE,QAAQ;iBAAE,MAAM,EAAE,OAAO;;CACF,CAAC;AAExD,QAAA,MAAM,MAAM;oBACH,QAAQ;wBACJ,QAAQ;mCACG,SAAS;6BACf,SAAS;iCACL,SAAS;4BACd,QAAQ;6BACP,SAAS;qBACjB,SAAS;kCACI,SAAS;oBACvB,QAAQ;oBACR,QAAQ;4BACA,QAAQ;2BACT,KAAK;2BACL,QAAQ;4BACP,QAAQ;qBACf,QAAQ;CACsC,CAAC;AAEzD,eAAO,MAAM,IAAI,EAAE;IACjB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CACf,CAAC;AAEzC,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,OAAO,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC9C,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B,GAAG,UAAU,GAAG,IAAI,CAWpB;AAED,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAQ7C,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAiC5D;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAgC1D"}