@agentshouse/mdruntime 0.1.0-c2aaa9c0e3ca4 → 0.1.0-c2e8a6f99866d

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 (214) hide show
  1. package/AGENTS.md +289 -276
  2. package/README.md +9 -8
  3. package/dist/adapter.d.ts +91 -23
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/attached-model.d.ts +4 -1
  6. package/dist/attached-model.d.ts.map +1 -1
  7. package/dist/attached-model.js +13 -3
  8. package/dist/attempt.d.ts.map +1 -1
  9. package/dist/attempt.js +14 -1
  10. package/dist/bootstrap.d.ts +16 -8
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +102 -47
  13. package/dist/chain.d.ts +11 -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 -8
  17. package/dist/change-set.d.ts.map +1 -1
  18. package/dist/change-set.js +10 -59
  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/chat/acts.d.ts +3 -4
  23. package/dist/chat/acts.d.ts.map +1 -1
  24. package/dist/chat/acts.js +10 -10
  25. package/dist/chat/earlier.d.ts +10 -0
  26. package/dist/chat/earlier.d.ts.map +1 -0
  27. package/dist/chat/earlier.js +54 -0
  28. package/dist/chat/house.d.ts +25 -0
  29. package/dist/chat/house.d.ts.map +1 -0
  30. package/dist/chat/house.js +38 -0
  31. package/dist/chat/input.d.ts +3 -1
  32. package/dist/chat/input.d.ts.map +1 -1
  33. package/dist/chat/input.js +11 -18
  34. package/dist/chat/kit.d.ts +2 -1
  35. package/dist/chat/kit.d.ts.map +1 -1
  36. package/dist/chat/kit.js +3 -3
  37. package/dist/chat/list.d.ts +9 -1
  38. package/dist/chat/list.d.ts.map +1 -1
  39. package/dist/chat/list.js +53 -9
  40. package/dist/chat/markdown.d.ts +3 -1
  41. package/dist/chat/markdown.d.ts.map +1 -1
  42. package/dist/chat/markdown.js +85 -26
  43. package/dist/chat/message.d.ts +1 -0
  44. package/dist/chat/message.d.ts.map +1 -1
  45. package/dist/chat/message.js +65 -13
  46. package/dist/chat/messages.d.ts +10 -1
  47. package/dist/chat/messages.d.ts.map +1 -1
  48. package/dist/chat/messages.js +70 -23
  49. package/dist/chat/name.d.ts +1 -0
  50. package/dist/chat/name.d.ts.map +1 -1
  51. package/dist/chat/name.js +1 -1
  52. package/dist/chat/opened.d.ts +1 -0
  53. package/dist/chat/opened.d.ts.map +1 -1
  54. package/dist/chat/opened.js +2 -0
  55. package/dist/chat/overlay.d.ts +1 -0
  56. package/dist/chat/overlay.d.ts.map +1 -1
  57. package/dist/chat/overlay.js +11 -5
  58. package/dist/chat/parts.d.ts +1 -0
  59. package/dist/chat/parts.d.ts.map +1 -1
  60. package/dist/chat/parts.js +3 -2
  61. package/dist/chat/pieces.d.ts +62 -0
  62. package/dist/chat/pieces.d.ts.map +1 -0
  63. package/dist/chat/pieces.js +1110 -0
  64. package/dist/chat/provider.d.ts +9 -2
  65. package/dist/chat/provider.d.ts.map +1 -1
  66. package/dist/chat/provider.js +146 -156
  67. package/dist/chat/question.d.ts +1 -1
  68. package/dist/chat/question.d.ts.map +1 -1
  69. package/dist/chat/question.js +7 -18
  70. package/dist/chat/ready.d.ts +5 -1
  71. package/dist/chat/ready.d.ts.map +1 -1
  72. package/dist/chat/ready.js +9 -7
  73. package/dist/chat/room-file.d.ts +8 -0
  74. package/dist/chat/room-file.d.ts.map +1 -0
  75. package/dist/chat/room-file.js +72 -0
  76. package/dist/chat/steady.d.ts +3 -0
  77. package/dist/chat/steady.d.ts.map +1 -0
  78. package/dist/chat/steady.js +26 -0
  79. package/dist/chat/style.d.ts.map +1 -1
  80. package/dist/chat/style.js +8 -4
  81. package/dist/chat.d.ts +3 -2
  82. package/dist/chat.d.ts.map +1 -1
  83. package/dist/chat.js +2 -2
  84. package/dist/client.d.ts +22 -9
  85. package/dist/client.d.ts.map +1 -1
  86. package/dist/client.js +48 -8
  87. package/dist/collection.d.ts +7 -6
  88. package/dist/collection.d.ts.map +1 -1
  89. package/dist/collection.js +31 -77
  90. package/dist/compile.d.ts +11 -0
  91. package/dist/compile.d.ts.map +1 -0
  92. package/dist/compile.js +712 -0
  93. package/dist/connection.d.ts +41 -13
  94. package/dist/connection.d.ts.map +1 -1
  95. package/dist/connection.js +3264 -690
  96. package/dist/conversation.d.ts +28 -9
  97. package/dist/conversation.d.ts.map +1 -1
  98. package/dist/conversation.js +520 -176
  99. package/dist/digest.d.ts +7 -0
  100. package/dist/digest.d.ts.map +1 -0
  101. package/dist/digest.js +113 -0
  102. package/dist/durability.d.ts +8 -1
  103. package/dist/durability.d.ts.map +1 -1
  104. package/dist/entry.d.ts +19 -0
  105. package/dist/entry.d.ts.map +1 -0
  106. package/dist/entry.js +151 -0
  107. package/dist/fence.d.ts +6 -0
  108. package/dist/fence.d.ts.map +1 -0
  109. package/dist/fence.js +10 -0
  110. package/dist/file.d.ts +2 -10
  111. package/dist/file.d.ts.map +1 -1
  112. package/dist/file.js +3 -120
  113. package/dist/host.d.ts +15 -3
  114. package/dist/host.d.ts.map +1 -1
  115. package/dist/host.js +103 -13
  116. package/dist/identity.d.ts +2 -0
  117. package/dist/identity.d.ts.map +1 -1
  118. package/dist/identity.js +6 -0
  119. package/dist/index.d.ts +15 -9
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +5 -0
  122. package/dist/live.d.ts +22 -0
  123. package/dist/live.d.ts.map +1 -0
  124. package/dist/live.js +123 -0
  125. package/dist/memory.d.ts +9 -2
  126. package/dist/memory.d.ts.map +1 -1
  127. package/dist/memory.js +55 -12
  128. package/dist/model.d.ts +4 -2
  129. package/dist/model.d.ts.map +1 -1
  130. package/dist/model.js +10 -1
  131. package/dist/name.d.ts +4 -0
  132. package/dist/name.d.ts.map +1 -0
  133. package/dist/name.js +122 -0
  134. package/dist/observation.d.ts +19 -2
  135. package/dist/observation.d.ts.map +1 -1
  136. package/dist/observation.js +113 -12
  137. package/dist/opened.d.ts +22 -0
  138. package/dist/opened.d.ts.map +1 -0
  139. package/dist/opened.js +107 -0
  140. package/dist/outcome.d.ts +39 -4
  141. package/dist/outcome.d.ts.map +1 -1
  142. package/dist/outcome.js +29 -0
  143. package/dist/overlay.d.ts +3 -4
  144. package/dist/overlay.d.ts.map +1 -1
  145. package/dist/overlay.js +99 -181
  146. package/dist/query.d.ts +57 -4
  147. package/dist/query.d.ts.map +1 -1
  148. package/dist/query.js +37 -7
  149. package/dist/reach.d.ts +11 -4
  150. package/dist/reach.d.ts.map +1 -1
  151. package/dist/reach.js +182 -51
  152. package/dist/react.d.ts +8 -6
  153. package/dist/react.d.ts.map +1 -1
  154. package/dist/react.js +7 -17
  155. package/dist/readiness.d.ts +53 -0
  156. package/dist/readiness.d.ts.map +1 -0
  157. package/dist/readiness.js +33 -0
  158. package/dist/reads.d.ts +11 -0
  159. package/dist/reads.d.ts.map +1 -0
  160. package/dist/reads.js +98 -0
  161. package/dist/recovery.d.ts +25 -0
  162. package/dist/recovery.d.ts.map +1 -0
  163. package/dist/recovery.js +198 -0
  164. package/dist/refresh.d.ts +12 -15
  165. package/dist/refresh.d.ts.map +1 -1
  166. package/dist/refresh.js +74 -44
  167. package/dist/replica.d.ts +55 -33
  168. package/dist/replica.d.ts.map +1 -1
  169. package/dist/replica.js +295 -149
  170. package/dist/room-draft.d.ts +16 -2
  171. package/dist/room-draft.d.ts.map +1 -1
  172. package/dist/room-draft.js +32 -25
  173. package/dist/rows.d.ts +28 -37
  174. package/dist/rows.d.ts.map +1 -1
  175. package/dist/rows.js +113 -72
  176. package/dist/save.d.ts +50 -9
  177. package/dist/save.d.ts.map +1 -1
  178. package/dist/save.js +528 -166
  179. package/dist/search.d.ts +50 -7
  180. package/dist/search.d.ts.map +1 -1
  181. package/dist/search.js +273 -45
  182. package/dist/seed.d.ts +16 -0
  183. package/dist/seed.d.ts.map +1 -0
  184. package/dist/seed.js +75 -0
  185. package/dist/shared.d.ts +16 -0
  186. package/dist/shared.d.ts.map +1 -0
  187. package/dist/shared.js +431 -0
  188. package/dist/status.d.ts +4 -0
  189. package/dist/status.d.ts.map +1 -1
  190. package/dist/store.d.ts +128 -67
  191. package/dist/store.d.ts.map +1 -1
  192. package/dist/store.js +537 -432
  193. package/dist/stored.d.ts +143 -0
  194. package/dist/stored.d.ts.map +1 -0
  195. package/dist/stored.js +561 -0
  196. package/dist/tables.d.ts +320 -0
  197. package/dist/tables.d.ts.map +1 -0
  198. package/dist/tables.js +537 -0
  199. package/dist/turn.d.ts +9 -0
  200. package/dist/turn.d.ts.map +1 -0
  201. package/dist/turn.js +75 -0
  202. package/dist/validation.d.ts +30 -0
  203. package/dist/validation.d.ts.map +1 -0
  204. package/dist/validation.js +162 -0
  205. package/dist/windows.d.ts +22 -0
  206. package/dist/windows.d.ts.map +1 -0
  207. package/dist/windows.js +89 -0
  208. package/dist/wire.d.ts +168 -32
  209. package/dist/wire.d.ts.map +1 -1
  210. package/dist/wire.js +56 -31
  211. package/package.json +10 -3
  212. package/dist/read-side.d.ts +0 -18
  213. package/dist/read-side.d.ts.map +0 -1
  214. package/dist/read-side.js +0 -440
@@ -0,0 +1,162 @@
1
+ import { assess, checkDocument, parse, parseFrontmatter, resolves, verdicts, } from '@agentshouse/mdmodel';
2
+ import { governing, selected } from './collection.js';
3
+ import { sameTyping } from './model.js';
4
+ import { paced, ROW_WEIGHT, yielded } from './turn.js';
5
+ const NO_TYPES = { types: {} };
6
+ function modelOf(model) {
7
+ return model.status === 'unavailable' ? NO_TYPES : { types: model.types };
8
+ }
9
+ function typedText(content) {
10
+ const read = parse(content);
11
+ return read.ok && read.document.type !== undefined && read.document.type !== 'any';
12
+ }
13
+ function partVerdict(part) {
14
+ return part.unmodeled !== null
15
+ ? { verdict: 'refuse', rule: 'model-unavailable', file: part.unmodeled }
16
+ : part.judged.verdict();
17
+ }
18
+ export async function validatedCollection(walk, lookup, composition) {
19
+ const collection = { model: composition.model, judged: verdicts(), unmodeled: null };
20
+ const selection = composition.selection === null
21
+ ? null
22
+ : { model: composition.selection.model, judged: verdicts(), unmodeled: null };
23
+ const partOf = (path) => selection !== null && selected(composition, path) ? selection : collection;
24
+ const pace = paced();
25
+ for (let after = null;;) {
26
+ const { entries, next } = await walk(after);
27
+ const assessed = [];
28
+ for (const { path, content } of entries) {
29
+ if (content === null)
30
+ continue;
31
+ const part = partOf(path);
32
+ if (part.model.status === 'unavailable' && part.unmodeled === null && typedText(content)) {
33
+ part.unmodeled = path;
34
+ }
35
+ const assessment = assess(path, content, false, modelOf(part.model), { anyRoom: true });
36
+ assessed.push({ part, assessment });
37
+ await pace(content.length + assessment.targets.length * ROW_WEIGHT);
38
+ }
39
+ const targets = [...new Set(assessed.flatMap(({ assessment }) => assessment.targets))];
40
+ const known = await lookup(targets);
41
+ for (const { part, assessment } of assessed) {
42
+ const within = (path) => partOf(path) === part;
43
+ part.judged.add(assessment, (path) => (within(path) ? known.get(path)?.type : undefined), (path) => within(path) && known.get(path)?.binary === true);
44
+ await pace((assessment.targets.length + 1) * ROW_WEIGHT);
45
+ }
46
+ if (next === null)
47
+ break;
48
+ after = next;
49
+ await yielded();
50
+ }
51
+ const judged = [partVerdict(collection), ...(selection === null ? [] : [partVerdict(selection)])];
52
+ const refusals = judged.filter((verdict) => verdict.verdict === 'refuse');
53
+ if (refusals.length === 0)
54
+ return judged[0];
55
+ return refusals.find((refusal) => refusal.rule !== 'model-unavailable') ?? refusals[0];
56
+ }
57
+ function declared(content) {
58
+ if (content === undefined || content === null)
59
+ return undefined;
60
+ const read = parseFrontmatter(content);
61
+ return read.ok ? (read.frontmatter.type ?? 'any') : undefined;
62
+ }
63
+ function typedIn(content) {
64
+ const type = declared(content);
65
+ return type !== undefined && type !== 'any';
66
+ }
67
+ export function sameComposition(left, right) {
68
+ return (sameTyping(left.model, right.model) &&
69
+ (left.selection === null || right.selection === null
70
+ ? left.selection === right.selection
71
+ : sameTyping(left.selection.model, right.selection.model)) &&
72
+ JSON.stringify(left.selection?.roots ?? null) === JSON.stringify(right.selection?.roots ?? null));
73
+ }
74
+ function checked(path, content, composition) {
75
+ const model = governing(composition, path);
76
+ return checkDocument(path, content, modelOf(model), { anyRoom: true });
77
+ }
78
+ async function reachingAll(checks, composition, next) {
79
+ const targets = [
80
+ ...new Set(checks.flatMap(({ check }) => check.ok ? check.references.flatMap(({ target }) => (target === null ? [] : [target])) : [])),
81
+ ];
82
+ const known = await next(targets);
83
+ const pace = paced();
84
+ for (const { path, check } of checks) {
85
+ if (!check.ok)
86
+ return false;
87
+ const part = (other) => selected(composition, other) === selected(composition, path);
88
+ const resolved = check.references.every((reference) => resolves(reference, (other) => (part(other) ? known.get(other)?.type : undefined), (other) => part(other) && known.get(other)?.binary === true));
89
+ if (!resolved)
90
+ return false;
91
+ await pace((check.references.length + 1) * ROW_WEIGHT);
92
+ }
93
+ return true;
94
+ }
95
+ export async function changedCleanly(changes, previous, composition, source) {
96
+ if (!sameComposition(previous, composition))
97
+ return false;
98
+ const changedAt = new Map(changes.map((change) => [change.path, change]));
99
+ const next = async (paths) => {
100
+ const asked = paths.filter((path) => !changedAt.has(path));
101
+ const known = new Map(await source.lookup(asked));
102
+ for (const path of paths) {
103
+ const change = changedAt.get(path);
104
+ if (change === undefined)
105
+ continue;
106
+ if (change.now === undefined)
107
+ known.delete(path);
108
+ else
109
+ known.set(path, { type: declared(change.now), binary: change.now === null });
110
+ }
111
+ return known;
112
+ };
113
+ const shifted = [];
114
+ const checks = [];
115
+ const pace = paced();
116
+ for (const { path, was, now } of changes) {
117
+ await pace((now?.length ?? 0) + (was?.length ?? 0) + ROW_WEIGHT);
118
+ const modeled = governing(composition, path).status !== 'unavailable';
119
+ if ((now === undefined) !== (was === undefined) ||
120
+ declared(now) !== declared(was) ||
121
+ (now === null) !== (was === null)) {
122
+ shifted.push(path);
123
+ }
124
+ if (!modeled && typedIn(was) && !typedIn(now))
125
+ return false;
126
+ if (now === undefined)
127
+ continue;
128
+ if (now === null)
129
+ return false;
130
+ if (!modeled) {
131
+ if (declared(now) === undefined)
132
+ return false;
133
+ if (typedIn(now))
134
+ continue;
135
+ const check = checked(path, now, composition);
136
+ if (!check.ok)
137
+ return false;
138
+ checks.push({ path, check });
139
+ continue;
140
+ }
141
+ checks.push({ path, check: checked(path, now, composition) });
142
+ }
143
+ if (!(await reachingAll(checks, composition, next)))
144
+ return false;
145
+ if (shifted.length === 0)
146
+ return true;
147
+ if (source.referrers === null)
148
+ return false;
149
+ const files = (await source.referrers(shifted)).filter((file) => !changedAt.has(file));
150
+ if (files.length === 0)
151
+ return true;
152
+ const texts = await source.texts(files);
153
+ const rechecked = [];
154
+ for (const file of files) {
155
+ const content = texts.get(file);
156
+ if (content === undefined || content === null)
157
+ return false;
158
+ await pace(content.length + ROW_WEIGHT);
159
+ rechecked.push({ path: file, check: checked(file, content, composition) });
160
+ }
161
+ return reachingAll(rechecked, composition, next);
162
+ }
@@ -0,0 +1,22 @@
1
+ export declare const MAXIMUM_WINDOW = 1000;
2
+ export declare const FROM_START = "[]";
3
+ export declare function capped(limit: number | null | undefined): number;
4
+ export type Ordering = {
5
+ readonly direction: 'asc' | 'desc';
6
+ readonly nulls: 'first' | 'last';
7
+ readonly stringSort: 'lexical' | 'locale';
8
+ readonly locale: string | undefined;
9
+ readonly localeOptions: Intl.CollatorOptions | undefined;
10
+ };
11
+ interface Placed {
12
+ readonly position: string;
13
+ readonly identity: string;
14
+ }
15
+ export declare function messageOrder(left: Placed, right: Placed): number;
16
+ export declare function precedes(message: Placed, before: readonly [string, string] | null): boolean;
17
+ export declare function byCodePoint(left: string, right: string): number;
18
+ export declare function compared(left: unknown, right: unknown, ordering: Ordering): number;
19
+ export declare function cursorOf(values: readonly unknown[]): string;
20
+ export declare function decodedCursor(text: string): readonly unknown[] | null;
21
+ export {};
22
+ //# sourceMappingURL=windows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows.d.ts","sourceRoot":"","sources":["../src/windows.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE/D;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;CAC1D,CAAC;AAEF,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;AAaD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/D;AA4BD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAMlF;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAE3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,GAAG,IAAI,CAOrE"}
@@ -0,0 +1,89 @@
1
+ export const MAXIMUM_WINDOW = 1000;
2
+ export const FROM_START = '[]';
3
+ export function capped(limit) {
4
+ return limit == null ? MAXIMUM_WINDOW : Math.min(limit, MAXIMUM_WINDOW);
5
+ }
6
+ export function messageOrder(left, right) {
7
+ if (left.position !== right.position)
8
+ return left.position < right.position ? -1 : 1;
9
+ if (left.identity !== right.identity)
10
+ return left.identity < right.identity ? -1 : 1;
11
+ return 0;
12
+ }
13
+ export function precedes(message, before) {
14
+ return before === null || messageOrder(message, { position: before[0], identity: before[1] }) < 0;
15
+ }
16
+ function rank(value) {
17
+ if (typeof value === 'boolean' || typeof value === 'number')
18
+ return 1;
19
+ if (typeof value === 'string')
20
+ return 2;
21
+ return Array.isArray(value) ? 3 : 4;
22
+ }
23
+ function unit(code) {
24
+ if (code >= 0xd800 && code < 0xe000)
25
+ return code + 0x2000;
26
+ return code >= 0xe000 ? code - 0x800 : code;
27
+ }
28
+ export function byCodePoint(left, right) {
29
+ for (let at = 0; at < Math.min(left.length, right.length); at += 1) {
30
+ const ours = left.charCodeAt(at);
31
+ const theirs = right.charCodeAt(at);
32
+ if (ours !== theirs)
33
+ return unit(ours) - unit(theirs);
34
+ }
35
+ return left.length - right.length;
36
+ }
37
+ function ascending(left, right, ordering) {
38
+ if (left == null && right == null)
39
+ return 0;
40
+ if (left == null)
41
+ return ordering.nulls === 'first' ? -1 : 1;
42
+ if (right == null)
43
+ return ordering.nulls === 'first' ? 1 : -1;
44
+ const ranked = rank(left) - rank(right);
45
+ if (ranked !== 0)
46
+ return ranked;
47
+ if (typeof left === 'string' && typeof right === 'string') {
48
+ return ordering.stringSort === 'locale'
49
+ ? left.localeCompare(right, ordering.locale, ordering.localeOptions)
50
+ : byCodePoint(left, right);
51
+ }
52
+ if (Array.isArray(left) && Array.isArray(right)) {
53
+ for (let at = 0; at < Math.min(left.length, right.length); at += 1) {
54
+ const result = ascending(left[at], right[at], ordering);
55
+ if (result !== 0)
56
+ return result;
57
+ }
58
+ return left.length - right.length;
59
+ }
60
+ if (typeof left === 'object')
61
+ return 0;
62
+ const held = left;
63
+ const other = right;
64
+ if (held < other)
65
+ return -1;
66
+ if (held > other)
67
+ return 1;
68
+ return 0;
69
+ }
70
+ export function compared(left, right, ordering) {
71
+ if (ordering.direction === 'asc')
72
+ return ascending(left, right, ordering);
73
+ return ascending(right, left, {
74
+ ...ordering,
75
+ nulls: ordering.nulls === 'first' ? 'last' : 'first',
76
+ });
77
+ }
78
+ export function cursorOf(values) {
79
+ return JSON.stringify(values);
80
+ }
81
+ export function decodedCursor(text) {
82
+ try {
83
+ const decoded = JSON.parse(text);
84
+ return Array.isArray(decoded) ? decoded : null;
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
package/dist/wire.d.ts CHANGED
@@ -8,40 +8,172 @@ 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 reauthorize: 'runtime';
25
- readonly 'roomDraft.list': 'within';
26
- readonly 'roomDraft.read': 'within';
27
- readonly 'roomDraft.write': 'within';
28
- readonly 'roomDraft.discard': 'within';
29
- readonly 'presentation.read': 'app';
30
- readonly 'presentation.write': 'app';
31
- readonly 'conversation.list': 'within';
32
- readonly 'conversation.read': 'within';
33
- readonly 'conversation.create': 'within';
34
- readonly 'conversation.send': 'within';
35
- readonly 'conversation.answer': 'within';
36
- readonly 'conversation.interrupt': 'within';
37
- readonly 'conversation.kill': 'within';
38
- readonly 'conversation.cancel': 'within';
39
- readonly 'conversation.delete': 'within';
40
- readonly 'chatDraft.write': 'within';
41
- 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.readReference': {
58
+ readonly reach: 'within';
59
+ readonly effect: 'read';
60
+ };
61
+ readonly 'binaryFile.part': {
62
+ readonly reach: 'within';
63
+ readonly effect: 'read';
64
+ };
65
+ readonly call: {
66
+ readonly reach: 'actions';
67
+ readonly effect: 'action';
68
+ };
69
+ readonly reached: {
70
+ readonly reach: 'within';
71
+ readonly effect: 'read';
72
+ };
73
+ readonly log: {
74
+ readonly reach: 'whole';
75
+ readonly effect: 'read';
76
+ };
77
+ readonly cleanUp: {
78
+ readonly reach: 'whole';
79
+ readonly effect: 'write';
80
+ };
81
+ readonly persistence: {
82
+ readonly reach: 'runtime';
83
+ readonly effect: 'read';
84
+ };
85
+ readonly retry: {
86
+ readonly reach: 'runtime';
87
+ readonly effect: 'write';
88
+ };
89
+ readonly reauthorize: {
90
+ readonly reach: 'runtime';
91
+ readonly effect: 'write';
92
+ };
93
+ readonly 'roomDraft.list': {
94
+ readonly reach: 'within';
95
+ readonly effect: 'read';
96
+ };
97
+ readonly 'roomDraft.read': {
98
+ readonly reach: 'within';
99
+ readonly effect: 'read';
100
+ };
101
+ readonly 'roomDraft.write': {
102
+ readonly reach: 'within';
103
+ readonly effect: 'write';
104
+ };
105
+ readonly 'roomDraft.discard': {
106
+ readonly reach: 'within';
107
+ readonly effect: 'write';
108
+ };
109
+ readonly 'presentation.read': {
110
+ readonly reach: 'app';
111
+ readonly effect: 'read';
112
+ };
113
+ readonly 'presentation.write': {
114
+ readonly reach: 'app';
115
+ readonly effect: 'write';
116
+ };
117
+ readonly 'presentation.edit': {
118
+ readonly reach: 'app';
119
+ readonly effect: 'write';
120
+ };
121
+ readonly 'conversation.list': {
122
+ readonly reach: 'within';
123
+ readonly effect: 'read';
124
+ };
125
+ readonly 'conversation.read': {
126
+ readonly reach: 'within';
127
+ readonly effect: 'read';
128
+ };
129
+ readonly 'conversation.create': {
130
+ readonly reach: 'within';
131
+ readonly effect: 'action';
132
+ };
133
+ readonly 'conversation.send': {
134
+ readonly reach: 'within';
135
+ readonly effect: 'action';
136
+ };
137
+ readonly 'conversation.attach': {
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.cancel': {
154
+ readonly reach: 'within';
155
+ readonly effect: 'action';
156
+ };
157
+ readonly 'conversation.delete': {
158
+ readonly reach: 'within';
159
+ readonly effect: 'action';
160
+ };
161
+ readonly 'chatDraft.write': {
162
+ readonly reach: 'within';
163
+ readonly effect: 'write';
164
+ };
165
+ readonly 'chatDraft.prepend': {
166
+ readonly reach: 'within';
167
+ readonly effect: 'write';
168
+ };
169
+ readonly 'chatDraft.discard': {
170
+ readonly reach: 'within';
171
+ readonly effect: 'write';
172
+ };
42
173
  };
43
174
  declare const TOPICS: {
44
175
  readonly rooms: 'within';
176
+ readonly readiness: 'within';
45
177
  readonly 'connection-refusal': 'runtime';
46
178
  readonly 'storage-loss': 'runtime';
47
179
  readonly 'deployment-facts': 'runtime';
@@ -56,8 +188,8 @@ declare const TOPICS: {
56
188
  readonly conversations: 'within';
57
189
  readonly agents: 'within';
58
190
  };
59
- export declare const WIRE_REACH: {
60
- readonly members: Readonly<Record<string, WireReach>>;
191
+ export declare const WIRE: {
192
+ readonly members: Readonly<Record<string, WireCall>>;
61
193
  readonly topics: Readonly<Record<string, WireReach>>;
62
194
  };
63
195
  export type WireMember = keyof typeof MEMBERS;
@@ -95,6 +227,10 @@ export type WireAnswer = {
95
227
  } | {
96
228
  kind: 'ended';
97
229
  };
230
+ export declare function unanswered(call: {
231
+ readonly id: number;
232
+ readonly member: WireMember;
233
+ }): WireAnswer | null;
98
234
  export declare const AUTHORIZATION_ENDED = "the host authorization ended";
99
235
  export declare const PORT_CLOSED = "the port closed";
100
236
  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,37 +1,48 @@
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
- reauthorize: 'runtime',
15
- 'roomDraft.list': 'within',
16
- 'roomDraft.read': 'within',
17
- 'roomDraft.write': 'within',
18
- 'roomDraft.discard': 'within',
19
- 'presentation.read': 'app',
20
- 'presentation.write': 'app',
21
- 'conversation.list': 'within',
22
- 'conversation.read': 'within',
23
- 'conversation.create': 'within',
24
- 'conversation.send': 'within',
25
- 'conversation.answer': 'within',
26
- 'conversation.interrupt': 'within',
27
- 'conversation.kill': 'within',
28
- 'conversation.cancel': 'within',
29
- 'conversation.delete': 'within',
30
- 'chatDraft.write': 'within',
31
- '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.readReference': { reach: 'within', effect: 'read' },
14
+ 'binaryFile.part': { reach: 'within', effect: 'read' },
15
+ call: { reach: 'actions', effect: 'action' },
16
+ reached: { reach: 'within', effect: 'read' },
17
+ log: { reach: 'whole', effect: 'read' },
18
+ cleanUp: { reach: 'whole', effect: 'write' },
19
+ persistence: { reach: 'runtime', effect: 'read' },
20
+ retry: { reach: 'runtime', effect: 'write' },
21
+ reauthorize: { reach: 'runtime', effect: 'write' },
22
+ 'roomDraft.list': { reach: 'within', effect: 'read' },
23
+ 'roomDraft.read': { reach: 'within', effect: 'read' },
24
+ 'roomDraft.write': { reach: 'within', effect: 'write' },
25
+ 'roomDraft.discard': { reach: 'within', effect: 'write' },
26
+ 'presentation.read': { reach: 'app', effect: 'read' },
27
+ 'presentation.write': { reach: 'app', effect: 'write' },
28
+ 'presentation.edit': { reach: 'app', effect: 'write' },
29
+ 'conversation.list': { reach: 'within', effect: 'read' },
30
+ 'conversation.read': { reach: 'within', effect: 'read' },
31
+ 'conversation.create': { reach: 'within', effect: 'action' },
32
+ 'conversation.send': { reach: 'within', effect: 'action' },
33
+ 'conversation.attach': { 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.cancel': { reach: 'within', effect: 'action' },
38
+ 'conversation.delete': { reach: 'within', effect: 'action' },
39
+ 'chatDraft.write': { reach: 'within', effect: 'write' },
40
+ 'chatDraft.prepend': { reach: 'within', effect: 'write' },
41
+ 'chatDraft.discard': { reach: 'within', effect: 'write' },
32
42
  };
33
43
  const TOPICS = {
34
44
  rooms: 'within',
45
+ readiness: 'within',
35
46
  'connection-refusal': 'runtime',
36
47
  'storage-loss': 'runtime',
37
48
  'deployment-facts': 'runtime',
@@ -46,7 +57,21 @@ const TOPICS = {
46
57
  conversations: 'within',
47
58
  agents: 'within',
48
59
  };
49
- 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
+ }
50
75
  export const AUTHORIZATION_ENDED = 'the host authorization ended';
51
76
  export const PORT_CLOSED = 'the port closed';
52
77
  function body(message) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentshouse/mdruntime",
3
- "version": "0.1.0-c2aaa9c0e3ca4",
3
+ "version": "0.1.0-c2e8a6f99866d",
4
4
  "description": "The headless core of MD App",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -24,10 +24,18 @@
24
24
  "types": "./dist/client.d.ts",
25
25
  "default": "./dist/client.js"
26
26
  },
27
+ "./entry": {
28
+ "types": "./dist/entry.d.ts",
29
+ "default": "./dist/entry.js"
30
+ },
27
31
  "./memory": {
28
32
  "types": "./dist/memory.d.ts",
29
33
  "default": "./dist/memory.js"
30
34
  },
35
+ "./tables": {
36
+ "types": "./dist/tables.d.ts",
37
+ "default": "./dist/tables.js"
38
+ },
31
39
  "./react": {
32
40
  "types": "./dist/react.d.ts",
33
41
  "default": "./dist/react.js"
@@ -45,9 +53,8 @@
45
53
  "LICENSE"
46
54
  ],
47
55
  "dependencies": {
48
- "@agentshouse/mdmodel": "0.1.0-c2f6f07c18cad",
56
+ "@agentshouse/mdmodel": "0.1.0-c46ca56158c79",
49
57
  "@assistant-ui/react-markdown": "0.14.20",
50
- "@tanstack/db": "0.9.2",
51
58
  "lucide-react": "1.47.0",
52
59
  "mdast-util-from-markdown": "2.0.3",
53
60
  "mdast-util-gfm": "3.1.0",