@agentshouse/mdruntime 0.1.0-c03e7b79830dd → 0.1.0-c069136dcb4e8

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/README.md +10 -8
  2. package/dist/adapter.d.ts +47 -48
  3. package/dist/adapter.d.ts.map +1 -1
  4. package/dist/attached-model.d.ts +2 -1
  5. package/dist/attached-model.d.ts.map +1 -1
  6. package/dist/attached-model.js +28 -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 +16 -8
  11. package/dist/bootstrap.d.ts.map +1 -1
  12. package/dist/bootstrap.js +142 -94
  13. package/dist/change-set.d.ts +1 -7
  14. package/dist/change-set.d.ts.map +1 -1
  15. package/dist/change-set.js +1 -4
  16. package/dist/client.d.ts +6 -7
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +54 -7
  19. package/dist/collection.d.ts +5 -3
  20. package/dist/collection.d.ts.map +1 -1
  21. package/dist/collection.js +24 -19
  22. package/dist/compile.d.ts +6 -1
  23. package/dist/compile.d.ts.map +1 -1
  24. package/dist/compile.js +94 -33
  25. package/dist/connection.d.ts +8 -7
  26. package/dist/connection.d.ts.map +1 -1
  27. package/dist/connection.js +1160 -1174
  28. package/dist/conversation.d.ts +6 -9
  29. package/dist/conversation.d.ts.map +1 -1
  30. package/dist/conversation.js +191 -121
  31. package/dist/durability.d.ts +1 -5
  32. package/dist/durability.d.ts.map +1 -1
  33. package/dist/durability.js +5 -0
  34. package/dist/entry.d.ts +1 -0
  35. package/dist/entry.d.ts.map +1 -1
  36. package/dist/entry.js +1 -1
  37. package/dist/file.d.ts +2 -11
  38. package/dist/file.d.ts.map +1 -1
  39. package/dist/file.js +6 -4
  40. package/dist/fulltext.d.ts +27 -0
  41. package/dist/fulltext.d.ts.map +1 -0
  42. package/dist/fulltext.js +370 -0
  43. package/dist/host.d.ts +3 -4
  44. package/dist/host.d.ts.map +1 -1
  45. package/dist/host.js +42 -18
  46. package/dist/identity.d.ts +0 -1
  47. package/dist/identity.d.ts.map +1 -1
  48. package/dist/identity.js +0 -3
  49. package/dist/index.d.ts +10 -10
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +4 -3
  52. package/dist/live.d.ts.map +1 -1
  53. package/dist/live.js +2 -1
  54. package/dist/media.d.ts +8 -0
  55. package/dist/media.d.ts.map +1 -0
  56. package/dist/media.js +218 -0
  57. package/dist/memory.d.ts +5 -3
  58. package/dist/memory.d.ts.map +1 -1
  59. package/dist/memory.js +96 -38
  60. package/dist/messages.d.ts +28 -0
  61. package/dist/messages.d.ts.map +1 -0
  62. package/dist/messages.js +90 -0
  63. package/dist/model.d.ts +6 -1
  64. package/dist/model.d.ts.map +1 -1
  65. package/dist/model.js +7 -10
  66. package/dist/observation.d.ts +1 -0
  67. package/dist/observation.d.ts.map +1 -1
  68. package/dist/observation.js +1 -1
  69. package/dist/outcome.d.ts +13 -6
  70. package/dist/outcome.d.ts.map +1 -1
  71. package/dist/outcome.js +16 -5
  72. package/dist/overlay.js +1 -1
  73. package/dist/paths.d.ts +1 -0
  74. package/dist/paths.d.ts.map +1 -1
  75. package/dist/paths.js +4 -0
  76. package/dist/query.d.ts +10 -1
  77. package/dist/query.d.ts.map +1 -1
  78. package/dist/query.js +12 -1
  79. package/dist/reach.d.ts +8 -3
  80. package/dist/reach.d.ts.map +1 -1
  81. package/dist/reach.js +69 -46
  82. package/dist/readiness.d.ts +14 -15
  83. package/dist/readiness.d.ts.map +1 -1
  84. package/dist/readiness.js +2 -8
  85. package/dist/recovery.d.ts +1 -0
  86. package/dist/recovery.d.ts.map +1 -1
  87. package/dist/recovery.js +26 -0
  88. package/dist/refresh.d.ts +9 -4
  89. package/dist/refresh.d.ts.map +1 -1
  90. package/dist/refresh.js +64 -30
  91. package/dist/replica.d.ts +5 -5
  92. package/dist/replica.d.ts.map +1 -1
  93. package/dist/replica.js +4 -7
  94. package/dist/room-draft.d.ts +18 -2
  95. package/dist/room-draft.d.ts.map +1 -1
  96. package/dist/room-draft.js +73 -6
  97. package/dist/rows.d.ts +15 -6
  98. package/dist/rows.d.ts.map +1 -1
  99. package/dist/rows.js +102 -74
  100. package/dist/save.d.ts +2 -0
  101. package/dist/save.d.ts.map +1 -1
  102. package/dist/save.js +13 -7
  103. package/dist/search.d.ts +11 -43
  104. package/dist/search.d.ts.map +1 -1
  105. package/dist/search.js +0 -296
  106. package/dist/shared.d.ts +0 -1
  107. package/dist/shared.d.ts.map +1 -1
  108. package/dist/shared.js +0 -10
  109. package/dist/status.d.ts +4 -3
  110. package/dist/status.d.ts.map +1 -1
  111. package/dist/status.js +3 -1
  112. package/dist/store.d.ts +23 -58
  113. package/dist/store.d.ts.map +1 -1
  114. package/dist/store.js +37 -272
  115. package/dist/stored.d.ts +10 -23
  116. package/dist/stored.d.ts.map +1 -1
  117. package/dist/stored.js +217 -218
  118. package/dist/tables.d.ts +51 -46
  119. package/dist/tables.d.ts.map +1 -1
  120. package/dist/tables.js +94 -53
  121. package/dist/transfer.d.ts +0 -5
  122. package/dist/transfer.d.ts.map +1 -1
  123. package/dist/validation.d.ts +3 -4
  124. package/dist/validation.d.ts.map +1 -1
  125. package/dist/validation.js +35 -96
  126. package/dist/wire.d.ts +5 -5
  127. package/dist/wire.d.ts.map +1 -1
  128. package/dist/wire.js +2 -2
  129. package/dist/words.d.ts +19 -0
  130. package/dist/words.d.ts.map +1 -0
  131. package/dist/words.js +156 -0
  132. package/package.json +11 -19
  133. package/AGENTS.md +0 -312
  134. package/dist/chat/acts.d.ts +0 -33
  135. package/dist/chat/acts.d.ts.map +0 -1
  136. package/dist/chat/acts.js +0 -36
  137. package/dist/chat/context.d.ts +0 -3
  138. package/dist/chat/context.d.ts.map +0 -1
  139. package/dist/chat/context.js +0 -10
  140. package/dist/chat/earlier.d.ts +0 -10
  141. package/dist/chat/earlier.d.ts.map +0 -1
  142. package/dist/chat/earlier.js +0 -54
  143. package/dist/chat/house.d.ts +0 -25
  144. package/dist/chat/house.d.ts.map +0 -1
  145. package/dist/chat/house.js +0 -38
  146. package/dist/chat/input.d.ts +0 -11
  147. package/dist/chat/input.d.ts.map +0 -1
  148. package/dist/chat/input.js +0 -92
  149. package/dist/chat/kit.d.ts +0 -61
  150. package/dist/chat/kit.d.ts.map +0 -1
  151. package/dist/chat/kit.js +0 -123
  152. package/dist/chat/lasting.d.ts +0 -6
  153. package/dist/chat/lasting.d.ts.map +0 -1
  154. package/dist/chat/lasting.js +0 -19
  155. package/dist/chat/list.d.ts +0 -28
  156. package/dist/chat/list.d.ts.map +0 -1
  157. package/dist/chat/list.js +0 -103
  158. package/dist/chat/markdown.d.ts +0 -21
  159. package/dist/chat/markdown.d.ts.map +0 -1
  160. package/dist/chat/markdown.js +0 -246
  161. package/dist/chat/message.d.ts +0 -7
  162. package/dist/chat/message.d.ts.map +0 -1
  163. package/dist/chat/message.js +0 -244
  164. package/dist/chat/messages.d.ts +0 -30
  165. package/dist/chat/messages.d.ts.map +0 -1
  166. package/dist/chat/messages.js +0 -198
  167. package/dist/chat/name.d.ts +0 -7
  168. package/dist/chat/name.d.ts.map +0 -1
  169. package/dist/chat/name.js +0 -37
  170. package/dist/chat/opened.d.ts +0 -12
  171. package/dist/chat/opened.d.ts.map +0 -1
  172. package/dist/chat/opened.js +0 -19
  173. package/dist/chat/overlay.d.ts +0 -32
  174. package/dist/chat/overlay.d.ts.map +0 -1
  175. package/dist/chat/overlay.js +0 -103
  176. package/dist/chat/parts.d.ts +0 -58
  177. package/dist/chat/parts.d.ts.map +0 -1
  178. package/dist/chat/parts.js +0 -120
  179. package/dist/chat/pieces.d.ts +0 -62
  180. package/dist/chat/pieces.d.ts.map +0 -1
  181. package/dist/chat/pieces.js +0 -1110
  182. package/dist/chat/process.d.ts +0 -20
  183. package/dist/chat/process.d.ts.map +0 -1
  184. package/dist/chat/process.js +0 -32
  185. package/dist/chat/provider.d.ts +0 -70
  186. package/dist/chat/provider.d.ts.map +0 -1
  187. package/dist/chat/provider.js +0 -635
  188. package/dist/chat/question.d.ts +0 -9
  189. package/dist/chat/question.d.ts.map +0 -1
  190. package/dist/chat/question.js +0 -69
  191. package/dist/chat/questions.d.ts +0 -31
  192. package/dist/chat/questions.d.ts.map +0 -1
  193. package/dist/chat/questions.js +0 -111
  194. package/dist/chat/read.d.ts +0 -5
  195. package/dist/chat/read.d.ts.map +0 -1
  196. package/dist/chat/read.js +0 -13
  197. package/dist/chat/ready.d.ts +0 -37
  198. package/dist/chat/ready.d.ts.map +0 -1
  199. package/dist/chat/ready.js +0 -93
  200. package/dist/chat/room-file.d.ts +0 -8
  201. package/dist/chat/room-file.d.ts.map +0 -1
  202. package/dist/chat/room-file.js +0 -72
  203. package/dist/chat/steady.d.ts +0 -3
  204. package/dist/chat/steady.d.ts.map +0 -1
  205. package/dist/chat/steady.js +0 -26
  206. package/dist/chat/style.d.ts +0 -4
  207. package/dist/chat/style.d.ts.map +0 -1
  208. package/dist/chat/style.js +0 -306
  209. package/dist/chat.d.ts +0 -15
  210. package/dist/chat.d.ts.map +0 -1
  211. package/dist/chat.js +0 -8
  212. package/dist/reads.d.ts +0 -11
  213. package/dist/reads.d.ts.map +0 -1
  214. package/dist/reads.js +0 -98
@@ -1,6 +1,5 @@
1
- import { assess, checkDocument, parse, parseFrontmatter, resolves, verdicts, } from '@agentshouse/mdmodel';
2
- import { governing, selected } from './collection.js';
3
- import { sameTyping } from './model.js';
1
+ import { assess, parse, parseFrontmatter, verdicts, } from '@agentshouse/mdmodel';
2
+ import { selected } from './collection.js';
4
3
  import { paced, ROW_WEIGHT, yielded } from './turn.js';
5
4
  const NO_TYPES = { types: {} };
6
5
  function modelOf(model) {
@@ -60,103 +59,43 @@ function declared(content) {
60
59
  const read = parseFrontmatter(content);
61
60
  return read.ok ? (read.frontmatter.type ?? 'any') : undefined;
62
61
  }
63
- function typedIn(content) {
64
- const type = declared(content);
65
- return type !== undefined && type !== 'any';
62
+ function shifted({ was, now }) {
63
+ return ((now === undefined) !== (was === undefined) ||
64
+ (now === null) !== (was === null) ||
65
+ declared(now) !== declared(was));
66
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);
67
+ const PAGE_TEXT = 1 << 20;
68
+ export async function validatedNeighbourhood(changes, composition, source) {
83
69
  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);
70
+ const changedAt = new Set();
71
+ const moved = [];
72
+ for (const change of changes) {
73
+ changedAt.add(change.path);
74
+ if (shifted(change))
75
+ moved.push(change.path);
76
+ await pace((change.now?.length ?? 0) + (change.was?.length ?? 0) + ROW_WEIGHT);
92
77
  }
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)
78
+ const referring = moved.length === 0
79
+ ? []
80
+ : (await source.referrers(moved)).filter((path) => !changedAt.has(path));
81
+ const texts = await source.texts(referring);
82
+ const total = changes.length + referring.length;
83
+ let at = 0;
84
+ const walk = async () => {
85
+ const entries = [];
86
+ let text = 0;
87
+ while (at < total && text < PAGE_TEXT) {
88
+ const change = changes[at];
89
+ const path = change?.path ?? referring[at - changes.length];
90
+ const content = change === undefined ? texts.get(path) : change.now;
91
+ at += 1;
92
+ text += ROW_WEIGHT;
93
+ if (content === undefined || content === null)
105
94
  continue;
106
- if (change.now === undefined)
107
- known.delete(path);
108
- else
109
- known.set(path, { type: declared(change.now), binary: change.now === null });
95
+ entries.push({ path, content });
96
+ text += content.length;
110
97
  }
111
- return known;
98
+ return { entries, next: at < total ? String(at) : null };
112
99
  };
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);
100
+ return validatedCollection(walk, source.lookup, composition);
162
101
  }
package/dist/wire.d.ts CHANGED
@@ -54,10 +54,14 @@ declare const MEMBERS: {
54
54
  readonly reach: 'within';
55
55
  readonly effect: 'read';
56
56
  };
57
- readonly 'binaryFile.readReference': {
57
+ readonly 'binaryFile.show': {
58
58
  readonly reach: 'within';
59
59
  readonly effect: 'read';
60
60
  };
61
+ readonly 'binaryFile.attach': {
62
+ readonly reach: 'within';
63
+ readonly effect: 'action';
64
+ };
61
65
  readonly 'binaryFile.part': {
62
66
  readonly reach: 'within';
63
67
  readonly effect: 'read';
@@ -134,10 +138,6 @@ declare const MEMBERS: {
134
138
  readonly reach: 'within';
135
139
  readonly effect: 'action';
136
140
  };
137
- readonly 'conversation.attach': {
138
- readonly reach: 'within';
139
- readonly effect: 'action';
140
- };
141
141
  readonly 'conversation.answer': {
142
142
  readonly reach: 'within';
143
143
  readonly effect: 'action';
@@ -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
@@ -10,7 +10,8 @@ const MEMBERS = {
10
10
  resolve: { reach: 'within', effect: 'read' },
11
11
  'binaryFile.read': { reach: 'within', effect: 'read' },
12
12
  'binaryFile.link': { reach: 'within', effect: 'read' },
13
- 'binaryFile.readReference': { reach: 'within', effect: 'read' },
13
+ 'binaryFile.show': { reach: 'within', effect: 'read' },
14
+ 'binaryFile.attach': { reach: 'within', effect: 'action' },
14
15
  'binaryFile.part': { reach: 'within', effect: 'read' },
15
16
  call: { reach: 'actions', effect: 'action' },
16
17
  reached: { reach: 'within', effect: 'read' },
@@ -30,7 +31,6 @@ const MEMBERS = {
30
31
  'conversation.read': { reach: 'within', effect: 'read' },
31
32
  'conversation.create': { reach: 'within', effect: 'action' },
32
33
  'conversation.send': { reach: 'within', effect: 'action' },
33
- 'conversation.attach': { reach: 'within', effect: 'action' },
34
34
  'conversation.answer': { reach: 'within', effect: 'action' },
35
35
  'conversation.interrupt': { reach: 'within', effect: 'action' },
36
36
  'conversation.kill': { reach: 'within', effect: 'action' },
@@ -0,0 +1,19 @@
1
+ export type Clause = {
2
+ readonly text: string;
3
+ readonly kind: 'term' | 'stem' | 'prefix' | 'phrase';
4
+ readonly term: string;
5
+ };
6
+ export type Located = {
7
+ readonly start: number;
8
+ readonly end: number;
9
+ };
10
+ export declare function indexed(text: string): string;
11
+ export declare function matchClauses(text: string): Clause[] | null;
12
+ export declare function matchExpression(clauses: readonly Clause[]): string;
13
+ export declare function queryTerms(text: string): string[];
14
+ export declare function snippet(part: string, terms: readonly string[], reach: number): {
15
+ readonly text: string;
16
+ readonly at: readonly [number, number];
17
+ } | null;
18
+ export declare function matched(part: string, terms: readonly string[]): string[];
19
+ //# sourceMappingURL=words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../src/words.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAYvE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5C;AAgBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAiB1D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAElE;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjD;AAyDD,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CAW1E;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQxE"}
package/dist/words.js ADDED
@@ -0,0 +1,156 @@
1
+ const SPACELESS = /(?:[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Thai}\p{Script=Lao}\p{Script=Khmer}\p{Script=Myanmar}\p{Script=Hangul}]\p{M}*)+/gu;
2
+ const SPACELESS_TERM = /[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Thai}\p{Script=Lao}\p{Script=Khmer}\p{Script=Myanmar}\p{Script=Hangul}]/u;
3
+ const TOKEN = /(?![\x00-\x7f])\p{S}\p{M}*|[\p{L}\p{N}\p{M}\p{Co}]+/gu;
4
+ const SYMBOL = /(?![\x00-\x7f])\p{S}\p{M}*/gu;
5
+ const MARKED = /([\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}])\p{M}+/gu;
6
+ const INFLECTED = /^[\p{Script=Cyrillic}\p{Script=Greek}]+$/u;
7
+ const FOLD = /\p{M}+/gu;
8
+ const ASCII = /^[\x00-\x7f]$/;
9
+ const PREFIXED_LETTERS = 2;
10
+ const INFLECTED_LETTERS = 4;
11
+ const PHRASE_TERMS = { least: 2, most: 6 };
12
+ const GRAPHEMES = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
13
+ function bigrams(run) {
14
+ const characters = Array.from(run);
15
+ if (characters.length < 2)
16
+ return ` ${run} `;
17
+ const pairs = [];
18
+ for (let index = 0; index + 1 < characters.length; index += 1) {
19
+ pairs.push(characters[index] + characters[index + 1]);
20
+ }
21
+ return ` ${pairs.join(' ')} `;
22
+ }
23
+ export function indexed(text) {
24
+ return text
25
+ .normalize('NFKD')
26
+ .replace(MARKED, '$1')
27
+ .normalize('NFKC')
28
+ .replace(SPACELESS, bigrams)
29
+ .replace(SYMBOL, (symbol) => ` ${symbol.replace(FOLD, '')} `);
30
+ }
31
+ function tokens(text) {
32
+ return [...text.matchAll(TOKEN)].map(([token]) => token.toLowerCase());
33
+ }
34
+ function quoted(token) {
35
+ return `"${token.replaceAll('"', '""')}"`;
36
+ }
37
+ function truncated(term) {
38
+ const letters = Array.from(term);
39
+ if (!INFLECTED.test(term) || letters.length < INFLECTED_LETTERS)
40
+ return null;
41
+ return letters.slice(0, letters.length - (letters.length >= 6 ? 2 : 1)).join('');
42
+ }
43
+ export function matchClauses(text) {
44
+ const terms = tokens(indexed(text));
45
+ if (terms.length === 0)
46
+ return null;
47
+ const unique = [...new Set(terms)];
48
+ const clauses = unique.map((term) => ({ text: quoted(term), kind: 'term', term }));
49
+ for (const term of unique) {
50
+ const stem = truncated(term);
51
+ if (stem !== null)
52
+ clauses.push({ text: `${quoted(stem)}*`, kind: 'stem', term });
53
+ }
54
+ const last = terms[terms.length - 1];
55
+ if (!/\s$/u.test(text) && Array.from(last).length >= PREFIXED_LETTERS) {
56
+ clauses.push({ text: `${quoted(last)}*`, kind: 'prefix', term: last });
57
+ }
58
+ if (terms.length >= PHRASE_TERMS.least && terms.length <= PHRASE_TERMS.most) {
59
+ clauses.push({ text: quoted(terms.join(' ')), kind: 'phrase', term: terms.join(' ') });
60
+ }
61
+ return clauses;
62
+ }
63
+ export function matchExpression(clauses) {
64
+ return clauses.map(({ text }) => text).join(' OR ');
65
+ }
66
+ function folded(text) {
67
+ return text.normalize('NFKD').replace(FOLD, '').toLowerCase();
68
+ }
69
+ export function queryTerms(text) {
70
+ return [...new Set(tokens(text.normalize('NFKC')).map(folded))];
71
+ }
72
+ function agrees(token, term) {
73
+ if (SPACELESS_TERM.test(term))
74
+ return token.includes(term);
75
+ if (token.startsWith(term))
76
+ return true;
77
+ return token.length >= 3 && term.startsWith(token.slice(0, Math.max(3, token.length - 2)));
78
+ }
79
+ function inside(token, offset, term) {
80
+ const pieces = [...GRAPHEMES.segment(token)];
81
+ const owner = [];
82
+ let joined = '';
83
+ for (const [at, { segment }] of pieces.entries()) {
84
+ const part = folded(segment);
85
+ joined += part;
86
+ for (let index = 0; index < part.length; index += 1)
87
+ owner.push(at);
88
+ }
89
+ const found = joined.indexOf(term);
90
+ if (found < 0)
91
+ return null;
92
+ const first = pieces[owner[found]];
93
+ const last = pieces[owner[found + term.length - 1]];
94
+ return { start: offset + first.index, end: offset + last.index + last.segment.length };
95
+ }
96
+ function locate(part, terms) {
97
+ for (const match of part.matchAll(TOKEN)) {
98
+ const token = folded(match[0]);
99
+ for (const term of terms) {
100
+ if (!agrees(token, term))
101
+ continue;
102
+ if (!SPACELESS_TERM.test(term)) {
103
+ return { start: match.index, end: match.index + match[0].length };
104
+ }
105
+ const found = inside(match[0], match.index, term);
106
+ if (found !== null)
107
+ return found;
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ function settled(part, index) {
113
+ if (index <= 0 || index >= part.length)
114
+ return true;
115
+ const before = part[index - 1];
116
+ const after = part[index];
117
+ if (before === '\n')
118
+ return true;
119
+ return ASCII.test(before) && ASCII.test(after) && !(before === '\r' && after === '\n');
120
+ }
121
+ function edgesAround(part, low, high) {
122
+ let from = Math.max(0, low);
123
+ while (!settled(part, from))
124
+ from -= 1;
125
+ let to = Math.min(part.length, high);
126
+ while (!settled(part, to))
127
+ to += 1;
128
+ const edges = [...GRAPHEMES.segment(part.slice(from, to))].map(({ index }) => from + index);
129
+ edges.push(to);
130
+ return edges;
131
+ }
132
+ export function snippet(part, terms, reach) {
133
+ const located = locate(part, terms);
134
+ if (located === null)
135
+ return null;
136
+ const edges = edgesAround(part, located.start - 2 * reach, located.end + 2 * reach);
137
+ const last = (limit) => edges.filter((edge) => edge <= limit).at(-1) ?? edges[0];
138
+ const first = (limit) => edges.find((edge) => edge >= limit) ?? edges[edges.length - 1];
139
+ const from = last(located.start);
140
+ const to = Math.max(first(Math.min(located.end, from + reach)), first(from + 1));
141
+ const start = first(Math.max(0, from - reach));
142
+ const end = last(Math.min(part.length, to + reach));
143
+ return { text: part.slice(start, end), at: [from - start, to - start] };
144
+ }
145
+ export function matched(part, terms) {
146
+ const found = new Set();
147
+ for (const match of part.matchAll(TOKEN)) {
148
+ const token = folded(match[0]);
149
+ for (const term of terms)
150
+ if (agrees(token, term))
151
+ found.add(term);
152
+ if (found.size === terms.length)
153
+ break;
154
+ }
155
+ return [...found];
156
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentshouse/mdruntime",
3
- "version": "0.1.0-c03e7b79830dd",
3
+ "version": "0.1.0-c069136dcb4e8",
4
4
  "description": "The headless core of MD App",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,7 +9,7 @@
9
9
  "access": "public"
10
10
  },
11
11
  "engines": {
12
- "node": ">=24.21.0"
12
+ "node": ">=24.22.1"
13
13
  },
14
14
  "exports": {
15
15
  ".": {
@@ -40,10 +40,6 @@
40
40
  "types": "./dist/react.d.ts",
41
41
  "default": "./dist/react.js"
42
42
  },
43
- "./chat": {
44
- "types": "./dist/chat.d.ts",
45
- "default": "./dist/chat.js"
46
- },
47
43
  "./digest": {
48
44
  "types": "./dist/digest.d.ts",
49
45
  "default": "./dist/digest.js"
@@ -52,24 +48,20 @@
52
48
  },
53
49
  "files": [
54
50
  "dist",
55
- "AGENTS.md",
51
+ "!dist/chat.*",
52
+ "!dist/chat/",
56
53
  "README.md",
57
54
  "LICENSE"
58
55
  ],
59
56
  "dependencies": {
60
- "@agentshouse/mdmodel": "0.1.0-c46ca56158c79",
61
- "@assistant-ui/react-markdown": "0.14.20",
62
- "lucide-react": "1.47.0",
63
- "mdast-util-from-markdown": "2.0.3",
64
- "mdast-util-gfm": "3.1.0",
65
- "micromark-extension-gfm": "3.0.0",
66
- "minisearch": "7.2.0",
67
- "radix-ui": "1.8.0",
68
- "remark-gfm": "4.0.1"
57
+ "@agentshouse/mdmodel": "0.1.0-c96c61ea31316"
69
58
  },
70
59
  "peerDependencies": {
71
- "@assistant-ui/react": "^0.15.22",
72
- "react": ">=18",
73
- "react-dom": ">=18"
60
+ "react": ">=18"
61
+ },
62
+ "repository": {
63
+ "type": "git",
64
+ "url": "git+https://github.com/agentshouse/core.git",
65
+ "directory": "mdruntime/packages/mdruntime"
74
66
  }
75
67
  }