@agentshouse/mdruntime 0.1.0-ca4dc698bd0c4 → 0.1.0-ca69b8fe1fa9f

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 (231) hide show
  1. package/README.md +19 -16
  2. package/dist/adapter.d.ts +149 -75
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +5 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +38 -4
  7. package/dist/binary.d.ts +0 -5
  8. package/dist/binary.d.ts.map +1 -1
  9. package/dist/binary.js +1 -1
  10. package/dist/bootstrap.d.ts +27 -11
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +181 -99
  13. package/dist/chain.d.ts +12 -0
  14. package/dist/chain.d.ts.map +1 -0
  15. package/dist/chain.js +64 -0
  16. package/dist/change-set.d.ts +9 -16
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +11 -88
  19. package/dist/change.d.ts +31 -1
  20. package/dist/change.d.ts.map +1 -1
  21. package/dist/change.js +10 -1
  22. package/dist/client.d.ts +21 -11
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +96 -11
  25. package/dist/collection.d.ts +11 -21
  26. package/dist/collection.d.ts.map +1 -1
  27. package/dist/collection.js +39 -291
  28. package/dist/compile.d.ts +11 -0
  29. package/dist/compile.d.ts.map +1 -0
  30. package/dist/compile.js +589 -0
  31. package/dist/connection.d.ts +30 -16
  32. package/dist/connection.d.ts.map +1 -1
  33. package/dist/connection.js +3295 -1360
  34. package/dist/context.d.ts +2 -0
  35. package/dist/context.d.ts.map +1 -0
  36. package/dist/{chat/context.js → context.js} +1 -4
  37. package/dist/conversation.d.ts +31 -14
  38. package/dist/conversation.d.ts.map +1 -1
  39. package/dist/conversation.js +523 -203
  40. package/dist/digest.d.ts +7 -0
  41. package/dist/digest.d.ts.map +1 -0
  42. package/dist/digest.js +113 -0
  43. package/dist/durability.d.ts +2 -5
  44. package/dist/durability.d.ts.map +1 -1
  45. package/dist/durability.js +5 -0
  46. package/dist/entry.d.ts +5 -2
  47. package/dist/entry.d.ts.map +1 -1
  48. package/dist/entry.js +31 -27
  49. package/dist/file.d.ts +2 -19
  50. package/dist/file.d.ts.map +1 -1
  51. package/dist/file.js +7 -122
  52. package/dist/host.d.ts +6 -8
  53. package/dist/host.d.ts.map +1 -1
  54. package/dist/host.js +94 -24
  55. package/dist/identity.d.ts +0 -1
  56. package/dist/identity.d.ts.map +1 -1
  57. package/dist/identity.js +0 -3
  58. package/dist/index.d.ts +20 -13
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +8 -1
  61. package/dist/job.d.ts +14 -0
  62. package/dist/job.d.ts.map +1 -0
  63. package/dist/job.js +28 -0
  64. package/dist/live.d.ts +23 -0
  65. package/dist/live.d.ts.map +1 -0
  66. package/dist/live.js +127 -0
  67. package/dist/media.d.ts +8 -0
  68. package/dist/media.d.ts.map +1 -0
  69. package/dist/media.js +218 -0
  70. package/dist/memory.d.ts +17 -7
  71. package/dist/memory.d.ts.map +1 -1
  72. package/dist/memory.js +209 -102
  73. package/dist/messages.d.ts +28 -0
  74. package/dist/messages.d.ts.map +1 -0
  75. package/dist/messages.js +89 -0
  76. package/dist/model.d.ts +10 -5
  77. package/dist/model.d.ts.map +1 -1
  78. package/dist/model.js +8 -14
  79. package/dist/name.d.ts +4 -0
  80. package/dist/name.d.ts.map +1 -0
  81. package/dist/name.js +122 -0
  82. package/dist/observation.d.ts +17 -2
  83. package/dist/observation.d.ts.map +1 -1
  84. package/dist/observation.js +100 -5
  85. package/dist/opened.d.ts +22 -0
  86. package/dist/opened.d.ts.map +1 -0
  87. package/dist/opened.js +107 -0
  88. package/dist/outcome.d.ts +45 -7
  89. package/dist/outcome.d.ts.map +1 -1
  90. package/dist/outcome.js +39 -0
  91. package/dist/overlay.d.ts +3 -5
  92. package/dist/overlay.d.ts.map +1 -1
  93. package/dist/overlay.js +95 -156
  94. package/dist/paths.d.ts +1 -0
  95. package/dist/paths.d.ts.map +1 -1
  96. package/dist/paths.js +4 -0
  97. package/dist/query.d.ts +18 -185
  98. package/dist/query.d.ts.map +1 -1
  99. package/dist/query.js +3 -464
  100. package/dist/reach.d.ts +16 -8
  101. package/dist/reach.d.ts.map +1 -1
  102. package/dist/reach.js +219 -90
  103. package/dist/react.d.ts +6 -4
  104. package/dist/react.d.ts.map +1 -1
  105. package/dist/react.js +7 -17
  106. package/dist/readiness.d.ts +14 -17
  107. package/dist/readiness.d.ts.map +1 -1
  108. package/dist/readiness.js +2 -8
  109. package/dist/recovery.d.ts +3 -2
  110. package/dist/recovery.d.ts.map +1 -1
  111. package/dist/recovery.js +34 -7
  112. package/dist/refresh.d.ts +17 -14
  113. package/dist/refresh.d.ts.map +1 -1
  114. package/dist/refresh.js +155 -52
  115. package/dist/replica.d.ts +56 -33
  116. package/dist/replica.d.ts.map +1 -1
  117. package/dist/replica.js +301 -182
  118. package/dist/room-draft.d.ts +36 -5
  119. package/dist/room-draft.d.ts.map +1 -1
  120. package/dist/room-draft.js +161 -74
  121. package/dist/rows.d.ts +22 -29
  122. package/dist/rows.d.ts.map +1 -1
  123. package/dist/rows.js +63 -112
  124. package/dist/save.d.ts +53 -14
  125. package/dist/save.d.ts.map +1 -1
  126. package/dist/save.js +529 -185
  127. package/dist/search.d.ts +15 -77
  128. package/dist/search.d.ts.map +1 -1
  129. package/dist/search.js +10 -184
  130. package/dist/seed.d.ts +16 -0
  131. package/dist/seed.d.ts.map +1 -0
  132. package/dist/seed.js +75 -0
  133. package/dist/shared.d.ts +7 -3
  134. package/dist/shared.d.ts.map +1 -1
  135. package/dist/shared.js +119 -66
  136. package/dist/status.d.ts +4 -3
  137. package/dist/status.d.ts.map +1 -1
  138. package/dist/status.js +3 -1
  139. package/dist/store.d.ts +101 -98
  140. package/dist/store.d.ts.map +1 -1
  141. package/dist/store.js +338 -661
  142. package/dist/stored.d.ts +162 -0
  143. package/dist/stored.d.ts.map +1 -0
  144. package/dist/stored.js +543 -0
  145. package/dist/tables.d.ts +353 -0
  146. package/dist/tables.d.ts.map +1 -0
  147. package/dist/tables.js +588 -0
  148. package/dist/transfer.d.ts +0 -5
  149. package/dist/transfer.d.ts.map +1 -1
  150. package/dist/turn.d.ts +5 -3
  151. package/dist/turn.d.ts.map +1 -1
  152. package/dist/turn.js +51 -21
  153. package/dist/validation.d.ts +29 -0
  154. package/dist/validation.d.ts.map +1 -0
  155. package/dist/validation.js +104 -0
  156. package/dist/windows.d.ts +11 -0
  157. package/dist/windows.d.ts.map +1 -0
  158. package/dist/windows.js +16 -0
  159. package/dist/wire.d.ts +164 -33
  160. package/dist/wire.d.ts.map +1 -1
  161. package/dist/wire.js +55 -32
  162. package/package.json +18 -19
  163. package/AGENTS.md +0 -300
  164. package/dist/acquisition.d.ts +0 -14
  165. package/dist/acquisition.d.ts.map +0 -1
  166. package/dist/acquisition.js +0 -24
  167. package/dist/chat/acts.d.ts +0 -33
  168. package/dist/chat/acts.d.ts.map +0 -1
  169. package/dist/chat/acts.js +0 -36
  170. package/dist/chat/context.d.ts +0 -3
  171. package/dist/chat/context.d.ts.map +0 -1
  172. package/dist/chat/input.d.ts +0 -9
  173. package/dist/chat/input.d.ts.map +0 -1
  174. package/dist/chat/input.js +0 -99
  175. package/dist/chat/kit.d.ts +0 -60
  176. package/dist/chat/kit.d.ts.map +0 -1
  177. package/dist/chat/kit.js +0 -123
  178. package/dist/chat/lasting.d.ts +0 -6
  179. package/dist/chat/lasting.d.ts.map +0 -1
  180. package/dist/chat/lasting.js +0 -19
  181. package/dist/chat/list.d.ts +0 -26
  182. package/dist/chat/list.d.ts.map +0 -1
  183. package/dist/chat/list.js +0 -62
  184. package/dist/chat/markdown.d.ts +0 -20
  185. package/dist/chat/markdown.d.ts.map +0 -1
  186. package/dist/chat/markdown.js +0 -188
  187. package/dist/chat/message.d.ts +0 -6
  188. package/dist/chat/message.d.ts.map +0 -1
  189. package/dist/chat/message.js +0 -192
  190. package/dist/chat/messages.d.ts +0 -21
  191. package/dist/chat/messages.d.ts.map +0 -1
  192. package/dist/chat/messages.js +0 -151
  193. package/dist/chat/name.d.ts +0 -6
  194. package/dist/chat/name.d.ts.map +0 -1
  195. package/dist/chat/name.js +0 -37
  196. package/dist/chat/opened.d.ts +0 -11
  197. package/dist/chat/opened.d.ts.map +0 -1
  198. package/dist/chat/opened.js +0 -17
  199. package/dist/chat/overlay.d.ts +0 -31
  200. package/dist/chat/overlay.d.ts.map +0 -1
  201. package/dist/chat/overlay.js +0 -97
  202. package/dist/chat/parts.d.ts +0 -57
  203. package/dist/chat/parts.d.ts.map +0 -1
  204. package/dist/chat/parts.js +0 -119
  205. package/dist/chat/process.d.ts +0 -20
  206. package/dist/chat/process.d.ts.map +0 -1
  207. package/dist/chat/process.js +0 -32
  208. package/dist/chat/provider.d.ts +0 -63
  209. package/dist/chat/provider.d.ts.map +0 -1
  210. package/dist/chat/provider.js +0 -620
  211. package/dist/chat/question.d.ts +0 -9
  212. package/dist/chat/question.d.ts.map +0 -1
  213. package/dist/chat/question.js +0 -80
  214. package/dist/chat/questions.d.ts +0 -31
  215. package/dist/chat/questions.d.ts.map +0 -1
  216. package/dist/chat/questions.js +0 -111
  217. package/dist/chat/read.d.ts +0 -5
  218. package/dist/chat/read.d.ts.map +0 -1
  219. package/dist/chat/read.js +0 -13
  220. package/dist/chat/ready.d.ts +0 -33
  221. package/dist/chat/ready.d.ts.map +0 -1
  222. package/dist/chat/ready.js +0 -91
  223. package/dist/chat/style.d.ts +0 -4
  224. package/dist/chat/style.d.ts.map +0 -1
  225. package/dist/chat/style.js +0 -302
  226. package/dist/chat.d.ts +0 -14
  227. package/dist/chat.d.ts.map +0 -1
  228. package/dist/chat.js +0 -8
  229. package/dist/read-side.d.ts +0 -25
  230. package/dist/read-side.d.ts.map +0 -1
  231. package/dist/read-side.js +0 -639
package/dist/turn.js CHANGED
@@ -5,41 +5,71 @@ export function yielded() {
5
5
  channel.port1.close();
6
6
  resolve();
7
7
  };
8
- channel.port2.postMessage(null);
8
+ structuredClone(channel.port2, { transfer: [channel.port2] }).postMessage(null);
9
9
  });
10
10
  }
11
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;
12
14
  export const ROW_WEIGHT = 256;
13
15
  export function after(value, next) {
14
16
  return value instanceof Promise ? value.then(next) : next(value);
15
17
  }
16
- async function resumed(iterator, each) {
17
- let spent = UNIT;
18
- for (let next = iterator.next(); next.done !== true; next = iterator.next()) {
19
- if (spent >= UNIT) {
20
- await yielded();
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() {
21
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();
22
42
  }
23
- spent += each(next.value);
43
+ const next = iterator.next();
44
+ if (next.done === true)
45
+ break;
46
+ due = spent.spend(each(next.value));
47
+ if (due)
48
+ ended();
24
49
  }
50
+ ended();
25
51
  }
26
- export function inUnits(items, each) {
52
+ export function inUnits(items, each, ended = () => { }, paused = yielded) {
27
53
  const iterator = items[Symbol.iterator]();
28
- let spent = 0;
54
+ const spent = spending();
29
55
  for (let next = iterator.next(); next.done !== true; next = iterator.next()) {
30
- spent += each(next.value);
31
- if (spent >= UNIT)
32
- return resumed(iterator, each);
56
+ if (spent.spend(each(next.value))) {
57
+ ended();
58
+ return resumed(iterator, each, ended, paused);
59
+ }
33
60
  }
61
+ ended();
34
62
  }
35
- export async function inChunks(items, weigh, each) {
36
- for (let at = 0; at < items.length;) {
37
- await yielded();
38
- const chunk = [];
39
- for (let spent = 0; at < items.length && spent < UNIT; at += 1) {
40
- chunk.push(items[at]);
41
- spent += weigh(items[at]);
42
- }
43
- each(chunk);
63
+ export function finished(steps) {
64
+ for (let step = steps.next();; step = steps.next()) {
65
+ if (step.done === true)
66
+ return step.value;
44
67
  }
45
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,EAML,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;AAyBvF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,UAAU,CAAC,CA4CrB;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(content) {
9
+ const read = parse(content);
10
+ return read.ok && read.document.type !== undefined && read.document.type !== 'any';
11
+ }
12
+ function partVerdict(part) {
13
+ return part.unmodeled !== null
14
+ ? { verdict: 'refuse', rule: 'model-unavailable', file: part.unmodeled }
15
+ : part.judged.verdict();
16
+ }
17
+ export async function validatedCollection(walk, lookup, composition) {
18
+ const collection = { model: composition.model, judged: verdicts(), unmodeled: null };
19
+ const selection = composition.selection === null
20
+ ? null
21
+ : { model: composition.selection.model, judged: verdicts(), unmodeled: null };
22
+ const partOf = (path) => selection !== null && selected(composition, path) ? selection : collection;
23
+ const pace = paced();
24
+ for (let after = null;;) {
25
+ const { entries, next } = await walk(after);
26
+ const assessed = [];
27
+ for (const { path, content } of entries) {
28
+ if (content === null)
29
+ continue;
30
+ const part = partOf(path);
31
+ if (part.model.status === 'unavailable' && part.unmodeled === null && typedText(content)) {
32
+ part.unmodeled = path;
33
+ }
34
+ const assessment = assess(path, content, 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
@@ -8,38 +8,164 @@ export type RuntimePort = {
8
8
  start(): void;
9
9
  };
10
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
+ };
11
16
  declare const MEMBERS: {
12
- readonly rooms: 'within';
13
- readonly query: 'within';
14
- readonly search: 'within';
15
- readonly types: 'within';
16
- readonly save: 'within';
17
- readonly history: 'within';
18
- readonly 'binaryFile.read': 'within';
19
- readonly 'binaryFile.readReference': 'within';
20
- readonly call: 'actions';
21
- readonly reached: 'within';
22
- readonly log: 'whole';
23
- readonly persistence: 'runtime';
24
- readonly retry: 'runtime';
25
- readonly reauthorize: 'runtime';
26
- readonly 'roomDraft.list': 'within';
27
- readonly 'roomDraft.read': 'within';
28
- readonly 'roomDraft.write': 'within';
29
- readonly 'roomDraft.discard': 'within';
30
- readonly 'presentation.read': 'app';
31
- readonly 'presentation.write': 'app';
32
- readonly 'conversation.list': 'within';
33
- readonly 'conversation.read': 'within';
34
- readonly 'conversation.create': 'within';
35
- readonly 'conversation.send': 'within';
36
- readonly 'conversation.answer': 'within';
37
- readonly 'conversation.interrupt': 'within';
38
- readonly 'conversation.kill': 'within';
39
- readonly 'conversation.cancel': 'within';
40
- readonly 'conversation.delete': 'within';
41
- readonly 'chatDraft.write': 'within';
42
- 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 persistence: {
86
+ readonly reach: 'runtime';
87
+ readonly effect: 'read';
88
+ };
89
+ readonly retry: {
90
+ readonly reach: 'runtime';
91
+ readonly effect: 'write';
92
+ };
93
+ readonly reauthorize: {
94
+ readonly reach: 'runtime';
95
+ readonly effect: 'write';
96
+ };
97
+ readonly 'roomDraft.list': {
98
+ readonly reach: 'within';
99
+ readonly effect: 'read';
100
+ };
101
+ readonly 'roomDraft.read': {
102
+ readonly reach: 'within';
103
+ readonly effect: 'read';
104
+ };
105
+ readonly 'roomDraft.write': {
106
+ readonly reach: 'within';
107
+ readonly effect: 'write';
108
+ };
109
+ readonly 'roomDraft.discard': {
110
+ readonly reach: 'within';
111
+ readonly effect: 'write';
112
+ };
113
+ readonly 'presentation.read': {
114
+ readonly reach: 'app';
115
+ readonly effect: 'read';
116
+ };
117
+ readonly 'presentation.write': {
118
+ readonly reach: 'app';
119
+ readonly effect: 'write';
120
+ };
121
+ readonly 'presentation.edit': {
122
+ readonly reach: 'app';
123
+ readonly effect: 'write';
124
+ };
125
+ readonly 'conversation.list': {
126
+ readonly reach: 'within';
127
+ readonly effect: 'read';
128
+ };
129
+ readonly 'conversation.read': {
130
+ readonly reach: 'within';
131
+ readonly effect: 'read';
132
+ };
133
+ readonly 'conversation.create': {
134
+ readonly reach: 'within';
135
+ readonly effect: 'action';
136
+ };
137
+ readonly 'conversation.send': {
138
+ readonly reach: 'within';
139
+ readonly effect: 'action';
140
+ };
141
+ readonly 'conversation.answer': {
142
+ readonly reach: 'within';
143
+ readonly effect: 'action';
144
+ };
145
+ readonly 'conversation.interrupt': {
146
+ readonly reach: 'within';
147
+ readonly effect: 'action';
148
+ };
149
+ readonly 'conversation.kill': {
150
+ readonly reach: 'within';
151
+ readonly effect: 'action';
152
+ };
153
+ readonly 'conversation.delete': {
154
+ readonly reach: 'within';
155
+ readonly effect: 'action';
156
+ };
157
+ readonly 'chatDraft.write': {
158
+ readonly reach: 'within';
159
+ readonly effect: 'write';
160
+ };
161
+ readonly 'chatDraft.prepend': {
162
+ readonly reach: 'within';
163
+ readonly effect: 'write';
164
+ };
165
+ readonly 'chatDraft.discard': {
166
+ readonly reach: 'within';
167
+ readonly effect: 'write';
168
+ };
43
169
  };
44
170
  declare const TOPICS: {
45
171
  readonly rooms: 'within';
@@ -50,6 +176,7 @@ declare const TOPICS: {
50
176
  readonly 'sync-status': 'within';
51
177
  readonly 'service-mode': 'runtime';
52
178
  readonly member: 'runtime';
179
+ readonly 'authority-changes': 'runtime';
53
180
  readonly query: 'within';
54
181
  readonly queue: 'within';
55
182
  readonly 'room-drafts': 'within';
@@ -58,8 +185,8 @@ declare const TOPICS: {
58
185
  readonly conversations: 'within';
59
186
  readonly agents: 'within';
60
187
  };
61
- export declare const WIRE_REACH: {
62
- readonly members: Readonly<Record<string, WireReach>>;
188
+ export declare const WIRE: {
189
+ readonly members: Readonly<Record<string, WireCall>>;
63
190
  readonly topics: Readonly<Record<string, WireReach>>;
64
191
  };
65
192
  export type WireMember = keyof typeof MEMBERS;
@@ -97,6 +224,10 @@ export type WireAnswer = {
97
224
  } | {
98
225
  kind: 'ended';
99
226
  };
227
+ export declare function unanswered(call: {
228
+ readonly id: number;
229
+ readonly member: WireMember;
230
+ }): WireAnswer | null;
100
231
  export declare const AUTHORIZATION_ENDED = "the host authorization ended";
101
232
  export declare const PORT_CLOSED = "the port closed";
102
233
  export declare function request(message: unknown): WireRequest | null;
@@ -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":"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"}
package/dist/wire.js CHANGED
@@ -1,35 +1,43 @@
1
+ import { UNCERTAIN } from './outcome.js';
1
2
  const MEMBERS = {
2
- rooms: 'within',
3
- query: 'within',
4
- search: 'within',
5
- types: 'within',
6
- save: 'within',
7
- history: 'within',
8
- 'binaryFile.read': 'within',
9
- 'binaryFile.readReference': 'within',
10
- call: 'actions',
11
- reached: 'within',
12
- log: 'whole',
13
- persistence: 'runtime',
14
- retry: 'runtime',
15
- reauthorize: 'runtime',
16
- 'roomDraft.list': 'within',
17
- 'roomDraft.read': 'within',
18
- 'roomDraft.write': 'within',
19
- 'roomDraft.discard': 'within',
20
- 'presentation.read': 'app',
21
- 'presentation.write': 'app',
22
- 'conversation.list': 'within',
23
- 'conversation.read': 'within',
24
- 'conversation.create': 'within',
25
- 'conversation.send': 'within',
26
- 'conversation.answer': 'within',
27
- 'conversation.interrupt': 'within',
28
- 'conversation.kill': 'within',
29
- 'conversation.cancel': 'within',
30
- 'conversation.delete': 'within',
31
- 'chatDraft.write': 'within',
32
- 'chatDraft.discard': 'within',
3
+ rooms: { reach: 'within', effect: 'read' },
4
+ query: { reach: 'within', effect: 'read' },
5
+ search: { reach: 'within', effect: 'read' },
6
+ types: { reach: 'within', effect: 'read' },
7
+ save: { reach: 'within', effect: 'write' },
8
+ saveParts: { reach: 'within', effect: 'write' },
9
+ history: { reach: 'within', effect: 'read' },
10
+ resolve: { reach: 'within', effect: 'read' },
11
+ 'binaryFile.read': { reach: 'within', effect: 'read' },
12
+ 'binaryFile.link': { reach: 'within', effect: 'read' },
13
+ 'binaryFile.show': { reach: 'within', effect: 'read' },
14
+ 'binaryFile.attach': { reach: 'within', effect: 'action' },
15
+ 'binaryFile.part': { reach: 'within', effect: 'read' },
16
+ call: { reach: 'actions', effect: 'action' },
17
+ reached: { reach: 'within', effect: 'read' },
18
+ log: { reach: 'whole', effect: 'read' },
19
+ cleanUp: { reach: 'whole', effect: 'write' },
20
+ persistence: { reach: 'runtime', effect: 'read' },
21
+ retry: { reach: 'runtime', effect: 'write' },
22
+ reauthorize: { reach: 'runtime', effect: 'write' },
23
+ 'roomDraft.list': { reach: 'within', effect: 'read' },
24
+ 'roomDraft.read': { reach: 'within', effect: 'read' },
25
+ 'roomDraft.write': { reach: 'within', effect: 'write' },
26
+ 'roomDraft.discard': { reach: 'within', effect: 'write' },
27
+ 'presentation.read': { reach: 'app', effect: 'read' },
28
+ 'presentation.write': { reach: 'app', effect: 'write' },
29
+ 'presentation.edit': { reach: 'app', effect: 'write' },
30
+ 'conversation.list': { reach: 'within', effect: 'read' },
31
+ 'conversation.read': { reach: 'within', effect: 'read' },
32
+ 'conversation.create': { reach: 'within', effect: 'action' },
33
+ 'conversation.send': { reach: 'within', effect: 'action' },
34
+ 'conversation.answer': { reach: 'within', effect: 'action' },
35
+ 'conversation.interrupt': { reach: 'within', effect: 'action' },
36
+ 'conversation.kill': { reach: 'within', effect: 'action' },
37
+ 'conversation.delete': { reach: 'within', effect: 'action' },
38
+ 'chatDraft.write': { reach: 'within', effect: 'write' },
39
+ 'chatDraft.prepend': { reach: 'within', effect: 'write' },
40
+ 'chatDraft.discard': { reach: 'within', effect: 'write' },
33
41
  };
34
42
  const TOPICS = {
35
43
  rooms: 'within',
@@ -40,6 +48,7 @@ const TOPICS = {
40
48
  'sync-status': 'within',
41
49
  'service-mode': 'runtime',
42
50
  member: 'runtime',
51
+ 'authority-changes': 'runtime',
43
52
  query: 'within',
44
53
  queue: 'within',
45
54
  'room-drafts': 'within',
@@ -48,7 +57,21 @@ const TOPICS = {
48
57
  conversations: 'within',
49
58
  agents: 'within',
50
59
  };
51
- export const WIRE_REACH = { members: MEMBERS, topics: TOPICS };
60
+ export const WIRE = { members: MEMBERS, topics: TOPICS };
61
+ export function unanswered(call) {
62
+ const { effect } = MEMBERS[call.member];
63
+ if (effect === 'read')
64
+ return null;
65
+ if (effect === 'action')
66
+ return { kind: 'result', id: call.id, value: UNCERTAIN };
67
+ return {
68
+ kind: 'failure',
69
+ id: call.id,
70
+ message: UNCERTAIN.code,
71
+ code: UNCERTAIN.code,
72
+ retryable: UNCERTAIN.retryable,
73
+ };
74
+ }
52
75
  export const AUTHORIZATION_ENDED = 'the host authorization ended';
53
76
  export const PORT_CLOSED = 'the port closed';
54
77
  function body(message) {