@cavelang/cli 0.35.0 → 0.36.0

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 (327) hide show
  1. package/README.md +224 -12
  2. package/dist/internal/act/action.js +2 -1
  3. package/dist/internal/act/action.js.map +1 -1
  4. package/dist/internal/act/declare.d.ts.map +1 -1
  5. package/dist/internal/act/declare.js +82 -53
  6. package/dist/internal/act/declare.js.map +1 -1
  7. package/dist/internal/act/engine.d.ts +4 -3
  8. package/dist/internal/act/engine.d.ts.map +1 -1
  9. package/dist/internal/act/engine.js +121 -32
  10. package/dist/internal/act/engine.js.map +1 -1
  11. package/dist/internal/automate/cancellation.d.ts +3 -0
  12. package/dist/internal/automate/cancellation.d.ts.map +1 -0
  13. package/dist/internal/automate/cancellation.js +38 -0
  14. package/dist/internal/automate/cancellation.js.map +1 -0
  15. package/dist/internal/automate/declare.d.ts.map +1 -1
  16. package/dist/internal/automate/declare.js +49 -24
  17. package/dist/internal/automate/declare.js.map +1 -1
  18. package/dist/internal/automate/engine.d.ts +7 -3
  19. package/dist/internal/automate/engine.d.ts.map +1 -1
  20. package/dist/internal/automate/engine.js +196 -93
  21. package/dist/internal/automate/engine.js.map +1 -1
  22. package/dist/internal/automate/error-message.d.ts +3 -0
  23. package/dist/internal/automate/error-message.d.ts.map +1 -0
  24. package/dist/internal/automate/error-message.js +10 -0
  25. package/dist/internal/automate/error-message.js.map +1 -0
  26. package/dist/internal/automate/main.d.ts.map +1 -1
  27. package/dist/internal/automate/main.js +238 -35
  28. package/dist/internal/automate/main.js.map +1 -1
  29. package/dist/internal/automate/options.d.ts +4 -0
  30. package/dist/internal/automate/options.d.ts.map +1 -0
  31. package/dist/internal/automate/options.js +19 -0
  32. package/dist/internal/automate/options.js.map +1 -0
  33. package/dist/internal/connect/declared.d.ts +6 -27
  34. package/dist/internal/connect/declared.d.ts.map +1 -1
  35. package/dist/internal/connect/declared.js +165 -76
  36. package/dist/internal/connect/declared.js.map +1 -1
  37. package/dist/internal/connect/error-message.d.ts +3 -0
  38. package/dist/internal/connect/error-message.d.ts.map +1 -0
  39. package/dist/internal/connect/error-message.js +10 -0
  40. package/dist/internal/connect/error-message.js.map +1 -0
  41. package/dist/internal/connect/federation.d.ts +9 -0
  42. package/dist/internal/connect/federation.d.ts.map +1 -0
  43. package/dist/internal/connect/federation.js +19 -0
  44. package/dist/internal/connect/federation.js.map +1 -0
  45. package/dist/internal/connect/fetch-failure.d.ts +3 -0
  46. package/dist/internal/connect/fetch-failure.d.ts.map +1 -0
  47. package/dist/internal/connect/fetch-failure.js +36 -0
  48. package/dist/internal/connect/fetch-failure.js.map +1 -0
  49. package/dist/internal/connect/main.d.ts +1 -0
  50. package/dist/internal/connect/main.d.ts.map +1 -1
  51. package/dist/internal/connect/main.js +288 -114
  52. package/dist/internal/connect/main.js.map +1 -1
  53. package/dist/internal/connect/options.d.ts +3 -0
  54. package/dist/internal/connect/options.d.ts.map +1 -0
  55. package/dist/internal/connect/options.js +9 -0
  56. package/dist/internal/connect/options.js.map +1 -0
  57. package/dist/internal/connect/records.d.ts +3 -0
  58. package/dist/internal/connect/records.d.ts.map +1 -0
  59. package/dist/internal/connect/records.js +21 -0
  60. package/dist/internal/connect/records.js.map +1 -0
  61. package/dist/internal/connect/run.d.ts +1 -18
  62. package/dist/internal/connect/run.d.ts.map +1 -1
  63. package/dist/internal/connect/run.js +115 -55
  64. package/dist/internal/connect/run.js.map +1 -1
  65. package/dist/internal/connect/source.d.ts +3 -1
  66. package/dist/internal/connect/source.d.ts.map +1 -1
  67. package/dist/internal/connect/source.js +226 -47
  68. package/dist/internal/connect/source.js.map +1 -1
  69. package/dist/internal/connect/template.d.ts +2 -2
  70. package/dist/internal/connect/template.d.ts.map +1 -1
  71. package/dist/internal/connect/template.js +25 -9
  72. package/dist/internal/connect/template.js.map +1 -1
  73. package/dist/internal/connect/utf8.d.ts +3 -0
  74. package/dist/internal/connect/utf8.d.ts.map +1 -0
  75. package/dist/internal/connect/utf8.js +12 -0
  76. package/dist/internal/connect/utf8.js.map +1 -0
  77. package/dist/internal/eval/cleanup.d.ts +5 -0
  78. package/dist/internal/eval/cleanup.d.ts.map +1 -0
  79. package/dist/internal/eval/cleanup.js +50 -0
  80. package/dist/internal/eval/cleanup.js.map +1 -0
  81. package/dist/internal/eval/error-message.d.ts +3 -0
  82. package/dist/internal/eval/error-message.d.ts.map +1 -0
  83. package/dist/internal/eval/error-message.js +10 -0
  84. package/dist/internal/eval/error-message.js.map +1 -0
  85. package/dist/internal/eval/judge.d.ts.map +1 -1
  86. package/dist/internal/eval/judge.js +3 -31
  87. package/dist/internal/eval/judge.js.map +1 -1
  88. package/dist/internal/eval/loop.d.ts.map +1 -1
  89. package/dist/internal/eval/loop.js +18 -4
  90. package/dist/internal/eval/loop.js.map +1 -1
  91. package/dist/internal/eval/main.d.ts.map +1 -1
  92. package/dist/internal/eval/main.js +22 -10
  93. package/dist/internal/eval/main.js.map +1 -1
  94. package/dist/internal/eval/options.d.ts +6 -0
  95. package/dist/internal/eval/options.d.ts.map +1 -0
  96. package/dist/internal/eval/options.js +31 -0
  97. package/dist/internal/eval/options.js.map +1 -0
  98. package/dist/internal/eval/queries.d.ts.map +1 -1
  99. package/dist/internal/eval/queries.js +9 -6
  100. package/dist/internal/eval/queries.js.map +1 -1
  101. package/dist/internal/eval/run.d.ts.map +1 -1
  102. package/dist/internal/eval/run.js +112 -24
  103. package/dist/internal/eval/run.js.map +1 -1
  104. package/dist/internal/eval/score.d.ts.map +1 -1
  105. package/dist/internal/eval/score.js +9 -2
  106. package/dist/internal/eval/score.js.map +1 -1
  107. package/dist/internal/eval/suite.d.ts.map +1 -1
  108. package/dist/internal/eval/suite.js +14 -2
  109. package/dist/internal/eval/suite.js.map +1 -1
  110. package/dist/internal/ingest/cleanup.d.ts +5 -0
  111. package/dist/internal/ingest/cleanup.d.ts.map +1 -0
  112. package/dist/internal/ingest/cleanup.js +50 -0
  113. package/dist/internal/ingest/cleanup.js.map +1 -0
  114. package/dist/internal/ingest/content.d.ts +6 -0
  115. package/dist/internal/ingest/content.d.ts.map +1 -0
  116. package/dist/internal/ingest/content.js +25 -0
  117. package/dist/internal/ingest/content.js.map +1 -0
  118. package/dist/internal/ingest/context.d.ts.map +1 -1
  119. package/dist/internal/ingest/context.js +25 -7
  120. package/dist/internal/ingest/context.js.map +1 -1
  121. package/dist/internal/ingest/error-message.d.ts +3 -0
  122. package/dist/internal/ingest/error-message.d.ts.map +1 -0
  123. package/dist/internal/ingest/error-message.js +10 -0
  124. package/dist/internal/ingest/error-message.js.map +1 -0
  125. package/dist/internal/ingest/files.d.ts +4 -12
  126. package/dist/internal/ingest/files.d.ts.map +1 -1
  127. package/dist/internal/ingest/files.js +22 -10
  128. package/dist/internal/ingest/files.js.map +1 -1
  129. package/dist/internal/ingest/main.d.ts.map +1 -1
  130. package/dist/internal/ingest/main.js +46 -16
  131. package/dist/internal/ingest/main.js.map +1 -1
  132. package/dist/internal/ingest/options.d.ts +6 -0
  133. package/dist/internal/ingest/options.d.ts.map +1 -0
  134. package/dist/internal/ingest/options.js +27 -0
  135. package/dist/internal/ingest/options.js.map +1 -0
  136. package/dist/internal/ingest/prompt.d.ts.map +1 -1
  137. package/dist/internal/ingest/prompt.js +14 -10
  138. package/dist/internal/ingest/prompt.js.map +1 -1
  139. package/dist/internal/ingest/run.d.ts +9 -2
  140. package/dist/internal/ingest/run.d.ts.map +1 -1
  141. package/dist/internal/ingest/run.js +206 -62
  142. package/dist/internal/ingest/run.js.map +1 -1
  143. package/dist/internal/ingest/timeout.d.ts +3 -0
  144. package/dist/internal/ingest/timeout.d.ts.map +1 -0
  145. package/dist/internal/ingest/timeout.js +14 -0
  146. package/dist/internal/ingest/timeout.js.map +1 -0
  147. package/dist/internal/ingest/web.d.ts +2 -11
  148. package/dist/internal/ingest/web.d.ts.map +1 -1
  149. package/dist/internal/ingest/web.js +131 -25
  150. package/dist/internal/ingest/web.js.map +1 -1
  151. package/dist/internal/loop/budgets.d.ts +3 -0
  152. package/dist/internal/loop/budgets.d.ts.map +1 -0
  153. package/dist/internal/loop/budgets.js +10 -0
  154. package/dist/internal/loop/budgets.js.map +1 -0
  155. package/dist/internal/loop/index.d.ts +2 -0
  156. package/dist/internal/loop/index.d.ts.map +1 -1
  157. package/dist/internal/loop/index.js +2 -0
  158. package/dist/internal/loop/index.js.map +1 -1
  159. package/dist/internal/loop/json-answer.d.ts +7 -0
  160. package/dist/internal/loop/json-answer.d.ts.map +1 -0
  161. package/dist/internal/loop/json-answer.js +79 -0
  162. package/dist/internal/loop/json-answer.js.map +1 -0
  163. package/dist/internal/loop/json-spans.d.ts +3 -0
  164. package/dist/internal/loop/json-spans.d.ts.map +1 -0
  165. package/dist/internal/loop/json-spans.js +88 -0
  166. package/dist/internal/loop/json-spans.js.map +1 -0
  167. package/dist/internal/loop/llm.d.ts +3 -2
  168. package/dist/internal/loop/llm.d.ts.map +1 -1
  169. package/dist/internal/loop/llm.js +115 -32
  170. package/dist/internal/loop/llm.js.map +1 -1
  171. package/dist/internal/loop/process.d.ts +3 -1
  172. package/dist/internal/loop/process.d.ts.map +1 -1
  173. package/dist/internal/loop/process.js +159 -59
  174. package/dist/internal/loop/process.js.map +1 -1
  175. package/dist/internal/loop/read-snapshot.d.ts +4 -0
  176. package/dist/internal/loop/read-snapshot.d.ts.map +1 -0
  177. package/dist/internal/loop/read-snapshot.js +29 -0
  178. package/dist/internal/loop/read-snapshot.js.map +1 -0
  179. package/dist/internal/loop/reconstruct.d.ts +6 -5
  180. package/dist/internal/loop/reconstruct.d.ts.map +1 -1
  181. package/dist/internal/loop/reconstruct.js +19 -8
  182. package/dist/internal/loop/reconstruct.js.map +1 -1
  183. package/dist/internal/loop/score-settings.d.ts +5 -0
  184. package/dist/internal/loop/score-settings.d.ts.map +1 -0
  185. package/dist/internal/loop/score-settings.js +14 -0
  186. package/dist/internal/loop/score-settings.js.map +1 -0
  187. package/dist/internal/loop/sqlite.d.ts.map +1 -1
  188. package/dist/internal/loop/sqlite.js +15 -7
  189. package/dist/internal/loop/sqlite.js.map +1 -1
  190. package/dist/internal/loop/store.d.ts.map +1 -1
  191. package/dist/internal/loop/store.js +11 -7
  192. package/dist/internal/loop/store.js.map +1 -1
  193. package/dist/internal/loop/timeout.d.ts +3 -0
  194. package/dist/internal/loop/timeout.d.ts.map +1 -0
  195. package/dist/internal/loop/timeout.js +13 -0
  196. package/dist/internal/loop/timeout.js.map +1 -0
  197. package/dist/internal/mcp/error-message.d.ts +3 -0
  198. package/dist/internal/mcp/error-message.d.ts.map +1 -0
  199. package/dist/internal/mcp/error-message.js +10 -0
  200. package/dist/internal/mcp/error-message.js.map +1 -0
  201. package/dist/internal/mcp/main.d.ts.map +1 -1
  202. package/dist/internal/mcp/main.js +42 -27
  203. package/dist/internal/mcp/main.js.map +1 -1
  204. package/dist/internal/mcp/read-snapshot.d.ts +4 -0
  205. package/dist/internal/mcp/read-snapshot.d.ts.map +1 -0
  206. package/dist/internal/mcp/read-snapshot.js +22 -0
  207. package/dist/internal/mcp/read-snapshot.js.map +1 -0
  208. package/dist/internal/mcp/server.d.ts.map +1 -1
  209. package/dist/internal/mcp/server.js +181 -21
  210. package/dist/internal/mcp/server.js.map +1 -1
  211. package/dist/internal/mcp/source.d.ts +3 -0
  212. package/dist/internal/mcp/source.d.ts.map +1 -0
  213. package/dist/internal/mcp/source.js +13 -0
  214. package/dist/internal/mcp/source.js.map +1 -0
  215. package/dist/internal/mcp/tools.d.ts.map +1 -1
  216. package/dist/internal/mcp/tools.js +135 -72
  217. package/dist/internal/mcp/tools.js.map +1 -1
  218. package/dist/internal/rules/declarations.d.ts +6 -0
  219. package/dist/internal/rules/declarations.d.ts.map +1 -0
  220. package/dist/internal/rules/declarations.js +14 -0
  221. package/dist/internal/rules/declarations.js.map +1 -0
  222. package/dist/internal/rules/declare.d.ts.map +1 -1
  223. package/dist/internal/rules/declare.js +30 -16
  224. package/dist/internal/rules/declare.js.map +1 -1
  225. package/dist/internal/rules/engine.d.ts +8 -7
  226. package/dist/internal/rules/engine.d.ts.map +1 -1
  227. package/dist/internal/rules/engine.js +150 -44
  228. package/dist/internal/rules/engine.js.map +1 -1
  229. package/dist/internal/shape/alias-root.d.ts +3 -0
  230. package/dist/internal/shape/alias-root.d.ts.map +1 -0
  231. package/dist/internal/shape/alias-root.js +13 -0
  232. package/dist/internal/shape/alias-root.js.map +1 -0
  233. package/dist/internal/shape/check.d.ts +15 -3
  234. package/dist/internal/shape/check.d.ts.map +1 -1
  235. package/dist/internal/shape/check.js +230 -100
  236. package/dist/internal/shape/check.js.map +1 -1
  237. package/dist/internal/shape/client.d.ts.map +1 -1
  238. package/dist/internal/shape/client.js +42 -20
  239. package/dist/internal/shape/client.js.map +1 -1
  240. package/dist/internal/shape/constraints.d.ts +8 -0
  241. package/dist/internal/shape/constraints.d.ts.map +1 -0
  242. package/dist/internal/shape/constraints.js +17 -0
  243. package/dist/internal/shape/constraints.js.map +1 -0
  244. package/dist/internal/shape/edit-distance.d.ts +3 -0
  245. package/dist/internal/shape/edit-distance.d.ts.map +1 -0
  246. package/dist/internal/shape/edit-distance.js +33 -0
  247. package/dist/internal/shape/edit-distance.js.map +1 -0
  248. package/dist/internal/shape/gate.d.ts.map +1 -1
  249. package/dist/internal/shape/gate.js +0 -0
  250. package/dist/internal/shape/gate.js.map +1 -1
  251. package/dist/internal/shape/snapshot.d.ts +4 -0
  252. package/dist/internal/shape/snapshot.d.ts.map +1 -0
  253. package/dist/internal/shape/snapshot.js +20 -0
  254. package/dist/internal/shape/snapshot.js.map +1 -0
  255. package/dist/internal/shape/suggest.d.ts +8 -6
  256. package/dist/internal/shape/suggest.d.ts.map +1 -1
  257. package/dist/internal/shape/suggest.js +208 -92
  258. package/dist/internal/shape/suggest.js.map +1 -1
  259. package/dist/internal/sync/error-message.d.ts +3 -0
  260. package/dist/internal/sync/error-message.d.ts.map +1 -0
  261. package/dist/internal/sync/error-message.js +10 -0
  262. package/dist/internal/sync/error-message.js.map +1 -0
  263. package/dist/internal/sync/index.d.ts +3 -2
  264. package/dist/internal/sync/index.d.ts.map +1 -1
  265. package/dist/internal/sync/index.js +3 -2
  266. package/dist/internal/sync/index.js.map +1 -1
  267. package/dist/internal/sync/sync.d.ts +8 -5
  268. package/dist/internal/sync/sync.d.ts.map +1 -1
  269. package/dist/internal/sync/sync.js +322 -65
  270. package/dist/internal/sync/sync.js.map +1 -1
  271. package/dist/internal/view/api.d.ts +3 -1
  272. package/dist/internal/view/api.d.ts.map +1 -1
  273. package/dist/internal/view/api.js +154 -90
  274. package/dist/internal/view/api.js.map +1 -1
  275. package/dist/internal/view/error-message.d.ts +3 -0
  276. package/dist/internal/view/error-message.d.ts.map +1 -0
  277. package/dist/internal/view/error-message.js +10 -0
  278. package/dist/internal/view/error-message.js.map +1 -0
  279. package/dist/internal/view/main.d.ts.map +1 -1
  280. package/dist/internal/view/main.js +61 -8
  281. package/dist/internal/view/main.js.map +1 -1
  282. package/dist/internal/view/page.d.ts.map +1 -1
  283. package/dist/internal/view/page.js +119 -20
  284. package/dist/internal/view/page.js.map +1 -1
  285. package/dist/internal/view/report.d.ts.map +1 -1
  286. package/dist/internal/view/report.js +180 -145
  287. package/dist/internal/view/report.js.map +1 -1
  288. package/dist/internal/view/scope.d.ts +6 -2
  289. package/dist/internal/view/scope.d.ts.map +1 -1
  290. package/dist/internal/view/scope.js +107 -24
  291. package/dist/internal/view/scope.js.map +1 -1
  292. package/dist/internal/view/sensitivity.d.ts +4 -0
  293. package/dist/internal/view/sensitivity.d.ts.map +1 -0
  294. package/dist/internal/view/sensitivity.js +11 -0
  295. package/dist/internal/view/sensitivity.js.map +1 -0
  296. package/dist/internal/view/server.d.ts.map +1 -1
  297. package/dist/internal/view/server.js +57 -20
  298. package/dist/internal/view/server.js.map +1 -1
  299. package/dist/src/atomic-output.d.ts +3 -0
  300. package/dist/src/atomic-output.d.ts.map +1 -0
  301. package/dist/src/atomic-output.js +67 -0
  302. package/dist/src/atomic-output.js.map +1 -0
  303. package/dist/src/cli.d.ts +3 -2
  304. package/dist/src/cli.d.ts.map +1 -1
  305. package/dist/src/cli.js +188 -173
  306. package/dist/src/cli.js.map +1 -1
  307. package/dist/src/dispatch.d.ts.map +1 -1
  308. package/dist/src/dispatch.js +3 -2
  309. package/dist/src/dispatch.js.map +1 -1
  310. package/dist/src/doctor.d.ts.map +1 -1
  311. package/dist/src/doctor.js +178 -102
  312. package/dist/src/doctor.js.map +1 -1
  313. package/dist/src/error-message.d.ts +3 -0
  314. package/dist/src/error-message.d.ts.map +1 -0
  315. package/dist/src/error-message.js +20 -0
  316. package/dist/src/error-message.js.map +1 -0
  317. package/dist/src/hooks-config.d.ts +3 -0
  318. package/dist/src/hooks-config.d.ts.map +1 -0
  319. package/dist/src/hooks-config.js +23 -0
  320. package/dist/src/hooks-config.js.map +1 -0
  321. package/package.json +23 -20
  322. package/src/atomic-output.ts +47 -0
  323. package/src/cli.ts +170 -147
  324. package/src/dispatch.ts +3 -2
  325. package/src/doctor.ts +192 -111
  326. package/src/error-message.ts +13 -0
  327. package/src/hooks-config.ts +22 -0
@@ -23,12 +23,17 @@
23
23
  * Everything else in the template passes through verbatim, other fenced
24
24
  * blocks included.
25
25
  */
26
- import { SourceSpan, Uuidv7 } from '@cavelang/core';
26
+ import { maximumSensitivity } from "./sensitivity.js";
27
+ import { Key, SourceSpan, Uuidv7 } from '@cavelang/core';
27
28
  import { emitClaim } from '@cavelang/canonical';
28
29
  import { Pattern, query } from '@cavelang/query';
29
30
  import { Row } from '@cavelang/store';
30
31
  import { Sensitivity } from '@cavelang/store';
31
32
  import { withScopedStore } from "./scope.js";
33
+ import { errorMessage } from "./error-message.js";
34
+ import { fromMarkdown } from 'mdast-util-from-markdown';
35
+ import { gfmFootnoteFromMarkdown } from 'mdast-util-gfm-footnote';
36
+ import { gfmFootnote } from 'micromark-extension-gfm-footnote';
32
37
  /** The fragment's citation placeholder — replaced by the `[^cN]` marker. */
33
38
  const placeholder = '[^?]';
34
39
  /**
@@ -40,29 +45,37 @@ const escapeRegExp = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
40
45
  /**
41
46
  * Wraps store text as a Markdown code span that survives its own
42
47
  * backticks: the delimiter outruns the longest run inside by one, and a
43
- * space pads content that begins or ends with a backtick (CommonMark
44
- * strips the pair back out).
48
+ * space pads content that begins or ends with a backtick, or has spaces
49
+ * at both ends (CommonMark strips one pair unless the content is all spaces).
45
50
  */
46
51
  const toCodeSpan = (text) => {
47
- const longest = Math.max(0, ...[...text.matchAll(/`+/g)].map(run => run[0].length));
52
+ let longest = 0;
53
+ for (const run of text.matchAll(/`+/g))
54
+ longest = Math.max(longest, run[0].length);
48
55
  const delimiter = '`'.repeat(longest + 1);
49
- const pad = text.startsWith('`') || text.endsWith('`') ? ' ' : '';
56
+ const pad = text.startsWith('`') || text.endsWith('`') ||
57
+ (text.startsWith(' ') && text.endsWith(' ') && /[^ ]/.test(text)) ? ' ' : '';
50
58
  return `${delimiter}${pad}${text}${pad}${delimiter}`;
51
59
  };
52
- const sourceLink = (reference) => reference.href === undefined ?
53
- toCodeSpan(reference.location) :
54
- `[${reference.location.replaceAll('[', '\\[').replaceAll(']', '\\]')}](<${reference.href.replaceAll('>', '%3E')}>)`;
60
+ const sourceLink = (reference) => {
61
+ // Decoded source identities can contain controls. Keep the label on one
62
+ // line while leaving the stored identity and encoded URL unchanged.
63
+ const location = reference.location.replace(/[\u0000-\u001f\u007f-\u009f\u2028\u2029]/g, char => char === '\n' ? '\\n' : char === '\r' ? '\\r' : char === '\t' ? '\\t' :
64
+ `\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}`);
65
+ return reference.href === undefined ?
66
+ toCodeSpan(location) :
67
+ `[${location.replace(/[\\`*_\[\]<>&]/g, char => `\\${char}`)}](<${reference.href.replaceAll('&', '&amp;').replaceAll('>', '%3E')}>)`;
68
+ };
55
69
  /**
56
- * Substitutes `?var` occurrences with bindings, longest names first so
57
- * `?who` never clips `?who2`; a token no binding matches passes through
58
- * untouched (fragments are prose — the §29.3 convention).
70
+ * Substitutes template occurrences once; inserted values are never scanned.
71
+ * Longest names win, and unknown tokens pass through untouched.
59
72
  */
60
73
  const substitute = (fragment, bindings) => {
61
- let text = fragment;
62
- for (const name of Object.keys(bindings).sort((a, b) => b.length - a.length)) {
63
- text = text.replace(new RegExp(`\\?${escapeRegExp(name)}(?![A-Za-z0-9_-])`, 'g'), () => bindings[name]);
64
- }
65
- return text;
74
+ const names = Object.keys(bindings).sort((a, b) => b.length - a.length);
75
+ if (names.length === 0)
76
+ return fragment;
77
+ const tokens = new RegExp(`\\?(${names.map(escapeRegExp).join('|')})(?![\\p{L}\\p{M}\\p{N}_-])`, 'gu');
78
+ return fragment.replace(tokens, (_token, name) => bindings[name]);
66
79
  };
67
80
  /** Distinct `?var` names of a parsed pattern, in slot order. */
68
81
  const variablesOf = (pattern) => {
@@ -87,7 +100,45 @@ const fenceRe = /^ {0,3}(`{3,}|~{3,})(.*)$/;
87
100
  const closesFence = (line, fence) => {
88
101
  const match = fenceRe.exec(line);
89
102
  return match !== null &&
90
- match[1][0] === fence[0] && match[1].length >= fence.length && match[2].trim() === '';
103
+ match[1][0] === fence[0] && match[1].length >= fence.length && /^[ \t]*$/.test(match[2]);
104
+ };
105
+ /** Locate live spans and literal regions without reserializing the template. */
106
+ const templateBoundaries = (template, lines) => {
107
+ const tree = fromMarkdown(template, {
108
+ extensions: [gfmFootnote()], mdastExtensions: [gfmFootnoteFromMarkdown()]
109
+ });
110
+ const pending = [tree];
111
+ const topLevel = new Set(tree.children);
112
+ const inert = new Set();
113
+ const blocks = new Map();
114
+ const splices = new Map();
115
+ while (pending.length > 0) {
116
+ const node = pending.pop();
117
+ if (node.type === 'inlineCode' && node.position !== undefined && node.value.startsWith(splicePrefix)) {
118
+ const { start, end } = node.position;
119
+ const entries = splices.get(start.line - 1) ?? [];
120
+ entries.push({ startColumn: start.column - 1, endLine: end.line - 1,
121
+ endColumn: end.column - 1, content: node.value.replace(/\r\n|\r|\n/g, ' ') });
122
+ splices.set(start.line - 1, entries);
123
+ }
124
+ if (node.type === 'code' && node.position !== undefined) {
125
+ const start = node.position.start.line - 1;
126
+ const fence = fenceRe.exec(lines[start]);
127
+ if (topLevel.has(node) && fence !== null && fence[2].trim().split(/\s+/)[0] === 'cave-q') {
128
+ blocks.set(start, { endLine: node.position.end.line - 1, fence: fence[1] });
129
+ }
130
+ else {
131
+ for (let line = start; line < node.position.end.line; line++)
132
+ inert.add(line);
133
+ }
134
+ }
135
+ if ('children' in node)
136
+ for (const child of node.children)
137
+ pending.push(child);
138
+ }
139
+ for (const entries of splices.values())
140
+ entries.sort((a, b) => a.startColumn - b.startColumn);
141
+ return { inert, blocks, splices };
91
142
  };
92
143
  /**
93
144
  * One query block (spec §31.1): pattern, `WHERE` filters, fragment.
@@ -95,32 +146,31 @@ const closesFence = (line, fence) => {
95
146
  * the solution as `cave query` prints it, as a cited bullet.
96
147
  */
97
148
  const renderBlock = (blockLines, startLine, renderer) => {
98
- const lines = [...blockLines];
99
- while (lines.length > 0 && lines[0].trim() === '') {
100
- lines.shift();
101
- startLine += 1;
102
- }
103
- if (lines.length === 0) {
149
+ let first = 0;
150
+ while (first < blockLines.length && blockLines[first].trim() === '')
151
+ first += 1;
152
+ startLine += first;
153
+ if (first === blockLines.length) {
104
154
  renderer.problem(startLine, 'empty cave-q block — a CAVE-Q pattern is required (spec §31.1)');
105
155
  return [invalidQuery];
106
156
  }
157
+ const lines = blockLines.slice(first);
107
158
  const queryLines = [lines[0]];
108
159
  let at = 1;
109
- while (at < lines.length && lines[at].trim().startsWith('WHERE ')) {
160
+ while (at < lines.length && /^WHERE(?:[ \t]|$)/.test(lines[at].trim())) {
110
161
  queryLines.push(lines[at]);
111
162
  at += 1;
112
163
  }
113
- const fragmentLines = lines.slice(at);
114
- while (fragmentLines.length > 0 && fragmentLines[0].trim() === '') {
115
- fragmentLines.shift();
116
- }
117
- const fragment = fragmentLines.some(line => line.trim() !== '') ? fragmentLines.join('\n') : undefined;
164
+ while (at < lines.length && lines[at].trim() === '')
165
+ at += 1;
166
+ const fragment = at < lines.length ? lines.slice(at).join('\n') : undefined;
118
167
  const matches = renderer.run(queryLines.join('\n'), startLine);
119
168
  if (matches === undefined) {
120
169
  return [invalidQuery];
121
170
  }
122
171
  const out = [];
123
172
  for (const match of matches) {
173
+ const marker = match.row === undefined ? '' : renderer.cite(match.row);
124
174
  let instance;
125
175
  if (fragment === undefined) {
126
176
  const bindings = Object.entries(match.bindings)
@@ -128,14 +178,16 @@ const renderBlock = (blockLines, startLine, renderer) => {
128
178
  .join(' ');
129
179
  // A fully bound pattern has nothing to bind — the claim itself is
130
180
  // the point (mirroring `cave query`'s rendering).
131
- instance = `- ${bindings !== '' ? bindings : toCodeSpan(match.row?.raw_line ?? queryLines[0].trim())} ${placeholder}`;
181
+ instance = `- ${bindings !== '' ? bindings : toCodeSpan(match.row?.raw_line ?? queryLines[0].trim())}${marker === '' ? '' : ` ${marker}`}`;
132
182
  }
133
183
  else {
134
- instance = substitute(fragment, match.bindings);
135
- }
136
- if (match.row !== undefined) {
137
- const marker = renderer.cite(match.row);
138
- if (instance.includes(placeholder)) {
184
+ // Citation placeholders belong to the authored template, never to data
185
+ // inserted from the store. Resolve them before substituting bindings.
186
+ instance = fragment;
187
+ if (match.row === undefined) {
188
+ instance = instance.replace(/[ \t]*\[\^\?\]/g, '');
189
+ }
190
+ else if (instance.includes(placeholder)) {
139
191
  instance = instance.replaceAll(placeholder, marker);
140
192
  }
141
193
  else {
@@ -150,65 +202,13 @@ const renderBlock = (blockLines, startLine, renderer) => {
150
202
  }
151
203
  instance = instanceLines.join('\n');
152
204
  }
205
+ instance = substitute(instance, match.bindings);
153
206
  }
154
- else {
155
- // Transitive solutions carry no row (§24.2's rule) — nothing to cite.
156
- instance = instance.replace(/[ \t]*\[\^\?\]/g, '');
157
- }
158
- out.push(...instance.split('\n'));
207
+ for (const line of instance.split('\n'))
208
+ out.push(line);
159
209
  }
160
210
  return out;
161
211
  };
162
- /**
163
- * Scans one line for Markdown code spans (CommonMark 6.1): a span opens
164
- * with a backtick run and closes at the next run of exactly the same
165
- * length — longer and shorter runs in between are content, an opener
166
- * with no closer is literal text. Content that both begins and ends
167
- * with a space (and isn't all spaces) loses one from each end, the
168
- * escape hatch that lets content begin or end with a backtick.
169
- */
170
- const codeSpans = (line) => {
171
- const spans = [];
172
- let at = 0;
173
- while (at < line.length) {
174
- const start = line.indexOf('`', at);
175
- if (start === -1) {
176
- break;
177
- }
178
- let opened = start + 1;
179
- while (opened < line.length && line[opened] === '`') {
180
- opened += 1;
181
- }
182
- const length = opened - start;
183
- let close = -1;
184
- for (let search = opened; search < line.length;) {
185
- const candidate = line.indexOf('`', search);
186
- if (candidate === -1) {
187
- break;
188
- }
189
- let candidateEnd = candidate + 1;
190
- while (candidateEnd < line.length && line[candidateEnd] === '`') {
191
- candidateEnd += 1;
192
- }
193
- if (candidateEnd - candidate === length) {
194
- close = candidate;
195
- break;
196
- }
197
- search = candidateEnd;
198
- }
199
- if (close === -1) {
200
- at = opened;
201
- continue;
202
- }
203
- let content = line.slice(opened, close);
204
- if (content.startsWith(' ') && content.endsWith(' ') && /[^ ]/.test(content)) {
205
- content = content.slice(1, -1);
206
- }
207
- spans.push({ start, end: close + length, content });
208
- at = close + length;
209
- }
210
- return spans;
211
- };
212
212
  const splicePrefix = 'cave-q:';
213
213
  /**
214
214
  * One inline splice (spec §31.1): exactly one variable, exactly one
@@ -220,7 +220,7 @@ const renderSplice = (patternText, lineNo, renderer) => {
220
220
  names = variablesOf(Pattern.parse(patternText));
221
221
  }
222
222
  catch (error) {
223
- renderer.problem(lineNo, error instanceof Error ? error.message : String(error));
223
+ renderer.problem(lineNo, errorMessage(error));
224
224
  return invalidQuery;
225
225
  }
226
226
  if (names.length !== 1) {
@@ -244,23 +244,26 @@ const renderSplice = (patternText, lineNo, renderer) => {
244
244
  const value = match.bindings[names[0]];
245
245
  return match.row === undefined ? value : `${value}${renderer.cite(match.row)}`;
246
246
  };
247
- /**
248
- * Splices on one prose line: each code span whose content starts with
249
- * `cave-q:` — whatever its delimiter length, so patterns may carry
250
- * backtick code literals — is replaced by its splice rendering; other
251
- * spans and the text between pass through untouched.
252
- */
253
- const renderInline = (line, lineNo, renderer) => {
247
+ /** Render parsed spans, preserving source outside their exact boundaries. */
248
+ const renderInline = (lines, startLine, splices, renderer) => {
249
+ let line = startLine;
250
+ let column = 0;
251
+ let index = 0;
254
252
  let out = '';
255
- let at = 0;
256
- for (const span of codeSpans(line)) {
257
- out += line.slice(at, span.start);
258
- out += span.content.startsWith(splicePrefix)
259
- ? renderSplice(span.content.slice(splicePrefix.length), lineNo, renderer)
260
- : line.slice(span.start, span.end);
261
- at = span.end;
253
+ while (true) {
254
+ const span = splices.get(line)?.[index];
255
+ if (span === undefined)
256
+ return { text: out + lines[line].slice(column), endLine: line };
257
+ out += lines[line].slice(column, span.startColumn);
258
+ out += renderSplice(span.content.slice(splicePrefix.length), line + 1, renderer);
259
+ column = span.endColumn;
260
+ if (span.endLine === line)
261
+ index += 1;
262
+ else {
263
+ line = span.endLine;
264
+ index = 0;
265
+ }
262
266
  }
263
- return out + line.slice(at);
264
267
  };
265
268
  /**
266
269
  * Renders a report template against a store (spec §31): markdown in,
@@ -273,12 +276,19 @@ const renderReport = (store, template, options) => {
273
276
  /** Footnote number per cited row id — repeats share a marker. */
274
277
  const numbers = new Map();
275
278
  const definitions = [];
279
+ // Reserve label occurrences throughout the original template, including
280
+ // case variants and code examples, before assigning any generated labels.
281
+ const reserved = new Set([...template.matchAll(/\[\^\s*(c[1-9][0-9]*)\s*\]/gi)]
282
+ .map(match => match[1].toLowerCase()));
283
+ let nextNumber = 1;
276
284
  const cite = (row) => {
277
285
  const existing = numbers.get(row.id);
278
286
  if (existing !== undefined) {
279
287
  return `[^c${existing}]`;
280
288
  }
281
- const number = numbers.size + 1;
289
+ while (reserved.has(`c${nextNumber}`))
290
+ nextNumber += 1;
291
+ const number = nextNumber++;
282
292
  numbers.set(row.id, number);
283
293
  const contexts = store.db.prepare('SELECT context FROM cave_context WHERE claim_id = ?').all(row.id).map(entry => entry.context);
284
294
  const tags = store.db.prepare('SELECT key, value FROM cave_tag WHERE claim_id = ?').all(row.id);
@@ -287,74 +297,84 @@ const renderReport = (store, template, options) => {
287
297
  // must show provenance the authored abbreviation would hide.
288
298
  // A code span holds one line: a multi-line comment (§6.4) folds its
289
299
  // lines with ` / ` instead of opening above the claim as in CAVE text.
300
+ if (typeof row.id !== 'string' || !Uuidv7.is(row.id) || row.tx !== row.id) {
301
+ throw new Error('stored transaction identity must be a canonical lowercase UUIDv7 with id = tx');
302
+ }
290
303
  const claim = Row.toClaim(row, contexts, tags);
291
304
  const canonical = claim.comment === undefined ?
292
305
  emitClaim(claim) :
293
- `${emitClaim({ ...claim, comment: undefined })} ; ${claim.comment.split('\n').join(' / ')}`;
294
- const date = new Date(Uuidv7.msOf(row.tx)).toISOString().slice(0, 10);
306
+ `${emitClaim({ ...claim, comment: undefined })} ; ${claim.comment.split(/\r\n|\r|\n/).join(' / ')}`;
307
+ if (Key.of(claim) !== row.claim_key) {
308
+ throw new Error('stored claim key does not agree with its semantic identity');
309
+ }
310
+ const date = new Date(Uuidv7.msOf(row.tx)).toISOString().split('T')[0];
295
311
  const spans = SourceSpan.ofContexts(contexts).filter(reference => reference.span !== undefined);
296
312
  const provenance = spans.length === 0 ? '' : `, source ${spans.map(sourceLink).join(', ')}`;
297
313
  definitions.push(`[^c${number}]: ${toCodeSpan(canonical)} — ${date}, claim key ${toCodeSpan(row.claim_key)}${provenance}`);
298
314
  return `[^c${number}]`;
299
315
  };
316
+ // A render uses one immutable scoped store and fixed query options. Retain
317
+ // only the last successful query, avoiding a cache of every report result.
318
+ let previousQuery;
319
+ let previousMatches;
300
320
  const renderer = {
301
- cite,
321
+ cite: row => {
322
+ try {
323
+ return cite(row);
324
+ }
325
+ catch (error) {
326
+ throw new Error(`CAVE report citation failed for claim ${row.id}: ${errorMessage(error)}`, { cause: error });
327
+ }
328
+ },
302
329
  problem: (line, message) => problems.push({ line, message }),
303
330
  run: (queryText, line) => {
331
+ if (previousQuery === queryText && previousMatches !== undefined)
332
+ return previousMatches;
333
+ previousQuery = undefined;
334
+ previousMatches = undefined;
304
335
  try {
305
- return query(store, queryText, {
336
+ const matches = query(store, queryText, {
306
337
  ...options.aliases === true ? { aliases: true } : {},
307
338
  ...options.resolve === true ? { resolve: true } : {},
308
339
  ...options.asOf === undefined ? {} : { asOf: options.asOf },
309
340
  ...options.at === undefined ? {} : { at: options.at }
310
341
  });
342
+ previousQuery = queryText;
343
+ previousMatches = matches;
344
+ return matches;
311
345
  }
312
346
  catch (error) {
313
- problems.push({ line, message: error instanceof Error ? error.message : String(error) });
347
+ problems.push({ line, message: errorMessage(error) });
314
348
  return undefined;
315
349
  }
316
350
  }
317
351
  };
318
- const lines = template.split(/\r?\n/);
352
+ const lines = template.split(/\r\n|\r|\n/);
353
+ const { inert, blocks, splices } = templateBoundaries(template, lines);
319
354
  const out = [];
320
355
  let at = 0;
321
356
  while (at < lines.length) {
322
357
  const line = lines[at];
323
- const fence = fenceRe.exec(line);
324
- if (fence !== null && fence[2].trim() !== '' && fence[2].trim().split(/\s+/)[0] === 'cave-q') {
325
- const blockStart = at + 1;
326
- const blockLines = [];
358
+ if (inert.has(at)) {
359
+ out.push(line);
327
360
  at += 1;
328
- while (at < lines.length && !closesFence(lines[at], fence[1])) {
329
- blockLines.push(lines[at]);
330
- at += 1;
331
- }
332
- if (at >= lines.length) {
333
- problems.push({ line: blockStart, message: 'unclosed cave-q block' });
334
- }
335
- else {
336
- at += 1; // the closing fence
337
- }
338
- out.push(...renderBlock(blockLines, blockStart + 1, renderer));
339
361
  continue;
340
362
  }
341
- if (fence !== null) {
342
- // Any other fenced block passes through verbatim — its content is
343
- // code, so inline splices inside it never fire.
344
- out.push(line);
345
- at += 1;
346
- while (at < lines.length) {
347
- out.push(lines[at]);
348
- if (closesFence(lines[at], fence[1])) {
349
- at += 1;
350
- break;
351
- }
352
- at += 1;
353
- }
363
+ const block = blocks.get(at);
364
+ if (block !== undefined) {
365
+ const blockStart = at + 1;
366
+ const closed = block.endLine > at && closesFence(lines[block.endLine], block.fence);
367
+ const blockLines = lines.slice(at + 1, block.endLine + (closed ? 0 : 1));
368
+ if (!closed)
369
+ problems.push({ line: blockStart, message: 'unclosed cave-q block' });
370
+ for (const line of renderBlock(blockLines, blockStart + 1, renderer))
371
+ out.push(line);
372
+ at = block.endLine + 1;
354
373
  continue;
355
374
  }
356
- out.push(renderInline(line, at + 1, renderer));
357
- at += 1;
375
+ const rendered = renderInline(lines, at, splices, renderer);
376
+ out.push(rendered.text);
377
+ at = rendered.endLine + 1;
358
378
  }
359
379
  // One newline ends the document — the template's own EOF blank lines
360
380
  // (and the split's trailing empty element) normalize away.
@@ -362,11 +382,26 @@ const renderReport = (store, template, options) => {
362
382
  out.pop();
363
383
  }
364
384
  if (definitions.length > 0) {
365
- out.push('', ...definitions);
385
+ out.push('');
386
+ for (const definition of definitions)
387
+ out.push(definition);
366
388
  }
367
389
  const body = out.join('\n');
368
390
  const markdown = body === '' ? '' : `${body}\n`;
369
391
  return { markdown, citations: definitions.length, problems };
370
392
  };
371
- export const report = (store, template, options = {}) => withScopedStore(store, options.maxSensitivity ?? Sensitivity.defaultMaximum, scoped => renderReport(scoped, template, options));
393
+ export const report = (store, template, options = {}) => {
394
+ const { maxSensitivity, aliases, resolve, asOf, at } = options;
395
+ for (const [name, value] of [['aliases', aliases], ['resolve', resolve]]) {
396
+ if (value !== undefined && typeof value !== 'boolean')
397
+ throw new TypeError(`${name} must be a boolean`);
398
+ }
399
+ const captured = {
400
+ ...aliases === undefined ? {} : { aliases },
401
+ ...resolve === undefined ? {} : { resolve },
402
+ ...asOf === undefined ? {} : { asOf },
403
+ ...at === undefined ? {} : { at }
404
+ };
405
+ return withScopedStore(store, maximumSensitivity(maxSensitivity), scoped => renderReport(scoped, template, captured));
406
+ };
372
407
  //# sourceMappingURL=report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/report.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,15 @@ export type ScopedStoreCacheStats = {
15
15
  export declare const scopedStoreCacheStats: (source: Store) => ScopedStoreCacheStats;
16
16
  /** Close and forget all projections owned by one source (primarily tests/tools). */
17
17
  export declare const clearScopedStoreCache: (source: Store) => void;
18
+ /** A synchronous read snapshot that can nest inside a caller-owned transaction. */
19
+ export declare const readSnapshot: <T>(source: Store, body: () => T) => T;
18
20
  /**
19
21
  * Runs `body` against rows at or below `maximum`. Restricted includes every
20
- * row and uses the source directly. Narrower audiences share an immutable,
22
+ * row and uses the source directly within a read snapshot. Narrower audiences share an immutable,
21
23
  * indexed projection keyed by policy and source revision; appends invalidate
22
- * it before the next read. Hidden rows and edges never enter that projection,
24
+ * it before the next read. Inside transactions, or without adapter transaction
25
+ * inspection, a disposable projection lives only for the synchronous callback.
26
+ * Hidden rows and edges never enter that projection,
23
27
  * preserving the fail-closed boundary for every downstream query.
24
28
  */
25
29
  export declare const withScopedStore: <T>(source: Store, maximum: Sensitivity.Level, body: (store: Store) => T) => T;
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/scope.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAIzE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAqBjD,oFAAoF;AACpF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAaD,eAAO,MAAM,qBAAqB,GAAI,QAAQ,KAAK,KAAG,qBAcrD,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,GAAI,QAAQ,KAAK,KAAG,IAMrD,CAAA;AAmFD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,QAAQ,KAAK,EAAE,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,KAAG,CAC3B,CAAA"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/scope.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAIzE,OAAO,EAAO,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAuB5C,oFAAoF;AACpF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAaD,eAAO,MAAM,qBAAqB,GAAI,QAAQ,KAAK,KAAG,qBAcrD,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,GAAI,QAAQ,KAAK,KAAG,IAcrD,CAAA;AA+HD,mFAAmF;AACnF,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,QAAQ,KAAK,EAAE,MAAM,MAAM,CAAC,KAAG,CAI9D,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,QAAQ,KAAK,EAAE,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,KAAG,CAczG,CAAA"}