@cavelang/cli 0.34.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 (344) hide show
  1. package/README.md +225 -13
  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 +240 -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 +204 -0
  34. package/dist/internal/connect/declared.d.ts.map +1 -0
  35. package/dist/internal/connect/declared.js +610 -0
  36. package/dist/internal/connect/declared.js.map +1 -0
  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/index.d.ts +4 -2
  50. package/dist/internal/connect/index.d.ts.map +1 -1
  51. package/dist/internal/connect/index.js +3 -1
  52. package/dist/internal/connect/index.js.map +1 -1
  53. package/dist/internal/connect/main.d.ts +1 -0
  54. package/dist/internal/connect/main.d.ts.map +1 -1
  55. package/dist/internal/connect/main.js +575 -59
  56. package/dist/internal/connect/main.js.map +1 -1
  57. package/dist/internal/connect/options.d.ts +3 -0
  58. package/dist/internal/connect/options.d.ts.map +1 -0
  59. package/dist/internal/connect/options.js +9 -0
  60. package/dist/internal/connect/options.js.map +1 -0
  61. package/dist/internal/connect/records.d.ts +3 -0
  62. package/dist/internal/connect/records.d.ts.map +1 -0
  63. package/dist/internal/connect/records.js +21 -0
  64. package/dist/internal/connect/records.js.map +1 -0
  65. package/dist/internal/connect/run.d.ts +48 -19
  66. package/dist/internal/connect/run.d.ts.map +1 -1
  67. package/dist/internal/connect/run.js +185 -77
  68. package/dist/internal/connect/run.js.map +1 -1
  69. package/dist/internal/connect/source.d.ts +36 -3
  70. package/dist/internal/connect/source.d.ts.map +1 -1
  71. package/dist/internal/connect/source.js +378 -39
  72. package/dist/internal/connect/source.js.map +1 -1
  73. package/dist/internal/connect/template.d.ts +20 -2
  74. package/dist/internal/connect/template.d.ts.map +1 -1
  75. package/dist/internal/connect/template.js +53 -9
  76. package/dist/internal/connect/template.js.map +1 -1
  77. package/dist/internal/connect/utf8.d.ts +3 -0
  78. package/dist/internal/connect/utf8.d.ts.map +1 -0
  79. package/dist/internal/connect/utf8.js +12 -0
  80. package/dist/internal/connect/utf8.js.map +1 -0
  81. package/dist/internal/eval/cleanup.d.ts +5 -0
  82. package/dist/internal/eval/cleanup.d.ts.map +1 -0
  83. package/dist/internal/eval/cleanup.js +50 -0
  84. package/dist/internal/eval/cleanup.js.map +1 -0
  85. package/dist/internal/eval/error-message.d.ts +3 -0
  86. package/dist/internal/eval/error-message.d.ts.map +1 -0
  87. package/dist/internal/eval/error-message.js +10 -0
  88. package/dist/internal/eval/error-message.js.map +1 -0
  89. package/dist/internal/eval/judge.d.ts.map +1 -1
  90. package/dist/internal/eval/judge.js +3 -31
  91. package/dist/internal/eval/judge.js.map +1 -1
  92. package/dist/internal/eval/loop.d.ts.map +1 -1
  93. package/dist/internal/eval/loop.js +18 -4
  94. package/dist/internal/eval/loop.js.map +1 -1
  95. package/dist/internal/eval/main.d.ts.map +1 -1
  96. package/dist/internal/eval/main.js +22 -10
  97. package/dist/internal/eval/main.js.map +1 -1
  98. package/dist/internal/eval/options.d.ts +6 -0
  99. package/dist/internal/eval/options.d.ts.map +1 -0
  100. package/dist/internal/eval/options.js +31 -0
  101. package/dist/internal/eval/options.js.map +1 -0
  102. package/dist/internal/eval/queries.d.ts.map +1 -1
  103. package/dist/internal/eval/queries.js +9 -6
  104. package/dist/internal/eval/queries.js.map +1 -1
  105. package/dist/internal/eval/run.d.ts.map +1 -1
  106. package/dist/internal/eval/run.js +112 -24
  107. package/dist/internal/eval/run.js.map +1 -1
  108. package/dist/internal/eval/score.d.ts.map +1 -1
  109. package/dist/internal/eval/score.js +9 -2
  110. package/dist/internal/eval/score.js.map +1 -1
  111. package/dist/internal/eval/suite.d.ts.map +1 -1
  112. package/dist/internal/eval/suite.js +14 -2
  113. package/dist/internal/eval/suite.js.map +1 -1
  114. package/dist/internal/ingest/cleanup.d.ts +5 -0
  115. package/dist/internal/ingest/cleanup.d.ts.map +1 -0
  116. package/dist/internal/ingest/cleanup.js +50 -0
  117. package/dist/internal/ingest/cleanup.js.map +1 -0
  118. package/dist/internal/ingest/content.d.ts +6 -0
  119. package/dist/internal/ingest/content.d.ts.map +1 -0
  120. package/dist/internal/ingest/content.js +25 -0
  121. package/dist/internal/ingest/content.js.map +1 -0
  122. package/dist/internal/ingest/context.d.ts.map +1 -1
  123. package/dist/internal/ingest/context.js +25 -7
  124. package/dist/internal/ingest/context.js.map +1 -1
  125. package/dist/internal/ingest/error-message.d.ts +3 -0
  126. package/dist/internal/ingest/error-message.d.ts.map +1 -0
  127. package/dist/internal/ingest/error-message.js +10 -0
  128. package/dist/internal/ingest/error-message.js.map +1 -0
  129. package/dist/internal/ingest/files.d.ts +4 -12
  130. package/dist/internal/ingest/files.d.ts.map +1 -1
  131. package/dist/internal/ingest/files.js +22 -10
  132. package/dist/internal/ingest/files.js.map +1 -1
  133. package/dist/internal/ingest/main.d.ts.map +1 -1
  134. package/dist/internal/ingest/main.js +48 -17
  135. package/dist/internal/ingest/main.js.map +1 -1
  136. package/dist/internal/ingest/options.d.ts +6 -0
  137. package/dist/internal/ingest/options.d.ts.map +1 -0
  138. package/dist/internal/ingest/options.js +27 -0
  139. package/dist/internal/ingest/options.js.map +1 -0
  140. package/dist/internal/ingest/prompt.d.ts.map +1 -1
  141. package/dist/internal/ingest/prompt.js +14 -10
  142. package/dist/internal/ingest/prompt.js.map +1 -1
  143. package/dist/internal/ingest/run.d.ts +9 -2
  144. package/dist/internal/ingest/run.d.ts.map +1 -1
  145. package/dist/internal/ingest/run.js +206 -62
  146. package/dist/internal/ingest/run.js.map +1 -1
  147. package/dist/internal/ingest/timeout.d.ts +3 -0
  148. package/dist/internal/ingest/timeout.d.ts.map +1 -0
  149. package/dist/internal/ingest/timeout.js +14 -0
  150. package/dist/internal/ingest/timeout.js.map +1 -0
  151. package/dist/internal/ingest/web.d.ts +2 -11
  152. package/dist/internal/ingest/web.d.ts.map +1 -1
  153. package/dist/internal/ingest/web.js +131 -25
  154. package/dist/internal/ingest/web.js.map +1 -1
  155. package/dist/internal/loop/budgets.d.ts +3 -0
  156. package/dist/internal/loop/budgets.d.ts.map +1 -0
  157. package/dist/internal/loop/budgets.js +10 -0
  158. package/dist/internal/loop/budgets.js.map +1 -0
  159. package/dist/internal/loop/index.d.ts +2 -0
  160. package/dist/internal/loop/index.d.ts.map +1 -1
  161. package/dist/internal/loop/index.js +2 -0
  162. package/dist/internal/loop/index.js.map +1 -1
  163. package/dist/internal/loop/json-answer.d.ts +7 -0
  164. package/dist/internal/loop/json-answer.d.ts.map +1 -0
  165. package/dist/internal/loop/json-answer.js +79 -0
  166. package/dist/internal/loop/json-answer.js.map +1 -0
  167. package/dist/internal/loop/json-spans.d.ts +3 -0
  168. package/dist/internal/loop/json-spans.d.ts.map +1 -0
  169. package/dist/internal/loop/json-spans.js +88 -0
  170. package/dist/internal/loop/json-spans.js.map +1 -0
  171. package/dist/internal/loop/llm.d.ts +3 -2
  172. package/dist/internal/loop/llm.d.ts.map +1 -1
  173. package/dist/internal/loop/llm.js +115 -32
  174. package/dist/internal/loop/llm.js.map +1 -1
  175. package/dist/internal/loop/process.d.ts +3 -1
  176. package/dist/internal/loop/process.d.ts.map +1 -1
  177. package/dist/internal/loop/process.js +159 -59
  178. package/dist/internal/loop/process.js.map +1 -1
  179. package/dist/internal/loop/read-snapshot.d.ts +4 -0
  180. package/dist/internal/loop/read-snapshot.d.ts.map +1 -0
  181. package/dist/internal/loop/read-snapshot.js +29 -0
  182. package/dist/internal/loop/read-snapshot.js.map +1 -0
  183. package/dist/internal/loop/reconstruct.d.ts +6 -5
  184. package/dist/internal/loop/reconstruct.d.ts.map +1 -1
  185. package/dist/internal/loop/reconstruct.js +19 -8
  186. package/dist/internal/loop/reconstruct.js.map +1 -1
  187. package/dist/internal/loop/score-settings.d.ts +5 -0
  188. package/dist/internal/loop/score-settings.d.ts.map +1 -0
  189. package/dist/internal/loop/score-settings.js +14 -0
  190. package/dist/internal/loop/score-settings.js.map +1 -0
  191. package/dist/internal/loop/sqlite.d.ts.map +1 -1
  192. package/dist/internal/loop/sqlite.js +15 -7
  193. package/dist/internal/loop/sqlite.js.map +1 -1
  194. package/dist/internal/loop/store.d.ts.map +1 -1
  195. package/dist/internal/loop/store.js +11 -7
  196. package/dist/internal/loop/store.js.map +1 -1
  197. package/dist/internal/loop/timeout.d.ts +3 -0
  198. package/dist/internal/loop/timeout.d.ts.map +1 -0
  199. package/dist/internal/loop/timeout.js +13 -0
  200. package/dist/internal/loop/timeout.js.map +1 -0
  201. package/dist/internal/mcp/error-message.d.ts +3 -0
  202. package/dist/internal/mcp/error-message.d.ts.map +1 -0
  203. package/dist/internal/mcp/error-message.js +10 -0
  204. package/dist/internal/mcp/error-message.js.map +1 -0
  205. package/dist/internal/mcp/main.d.ts.map +1 -1
  206. package/dist/internal/mcp/main.js +44 -27
  207. package/dist/internal/mcp/main.js.map +1 -1
  208. package/dist/internal/mcp/read-snapshot.d.ts +4 -0
  209. package/dist/internal/mcp/read-snapshot.d.ts.map +1 -0
  210. package/dist/internal/mcp/read-snapshot.js +22 -0
  211. package/dist/internal/mcp/read-snapshot.js.map +1 -0
  212. package/dist/internal/mcp/server.d.ts.map +1 -1
  213. package/dist/internal/mcp/server.js +181 -21
  214. package/dist/internal/mcp/server.js.map +1 -1
  215. package/dist/internal/mcp/source.d.ts +3 -0
  216. package/dist/internal/mcp/source.d.ts.map +1 -0
  217. package/dist/internal/mcp/source.js +13 -0
  218. package/dist/internal/mcp/source.js.map +1 -0
  219. package/dist/internal/mcp/tools.d.ts.map +1 -1
  220. package/dist/internal/mcp/tools.js +135 -72
  221. package/dist/internal/mcp/tools.js.map +1 -1
  222. package/dist/internal/rules/declarations.d.ts +6 -0
  223. package/dist/internal/rules/declarations.d.ts.map +1 -0
  224. package/dist/internal/rules/declarations.js +14 -0
  225. package/dist/internal/rules/declarations.js.map +1 -0
  226. package/dist/internal/rules/declare.d.ts.map +1 -1
  227. package/dist/internal/rules/declare.js +30 -16
  228. package/dist/internal/rules/declare.js.map +1 -1
  229. package/dist/internal/rules/engine.d.ts +8 -7
  230. package/dist/internal/rules/engine.d.ts.map +1 -1
  231. package/dist/internal/rules/engine.js +150 -44
  232. package/dist/internal/rules/engine.js.map +1 -1
  233. package/dist/internal/rules/rule.d.ts.map +1 -1
  234. package/dist/internal/rules/rule.js +1 -22
  235. package/dist/internal/rules/rule.js.map +1 -1
  236. package/dist/internal/shape/alias-root.d.ts +3 -0
  237. package/dist/internal/shape/alias-root.d.ts.map +1 -0
  238. package/dist/internal/shape/alias-root.js +13 -0
  239. package/dist/internal/shape/alias-root.js.map +1 -0
  240. package/dist/internal/shape/check.d.ts +15 -3
  241. package/dist/internal/shape/check.d.ts.map +1 -1
  242. package/dist/internal/shape/check.js +230 -100
  243. package/dist/internal/shape/check.js.map +1 -1
  244. package/dist/internal/shape/client.d.ts.map +1 -1
  245. package/dist/internal/shape/client.js +42 -20
  246. package/dist/internal/shape/client.js.map +1 -1
  247. package/dist/internal/shape/constraints.d.ts +8 -0
  248. package/dist/internal/shape/constraints.d.ts.map +1 -0
  249. package/dist/internal/shape/constraints.js +17 -0
  250. package/dist/internal/shape/constraints.js.map +1 -0
  251. package/dist/internal/shape/edit-distance.d.ts +3 -0
  252. package/dist/internal/shape/edit-distance.d.ts.map +1 -0
  253. package/dist/internal/shape/edit-distance.js +33 -0
  254. package/dist/internal/shape/edit-distance.js.map +1 -0
  255. package/dist/internal/shape/gate.d.ts.map +1 -1
  256. package/dist/internal/shape/gate.js +0 -0
  257. package/dist/internal/shape/gate.js.map +1 -1
  258. package/dist/internal/shape/snapshot.d.ts +4 -0
  259. package/dist/internal/shape/snapshot.d.ts.map +1 -0
  260. package/dist/internal/shape/snapshot.js +20 -0
  261. package/dist/internal/shape/snapshot.js.map +1 -0
  262. package/dist/internal/shape/suggest.d.ts +8 -6
  263. package/dist/internal/shape/suggest.d.ts.map +1 -1
  264. package/dist/internal/shape/suggest.js +208 -92
  265. package/dist/internal/shape/suggest.js.map +1 -1
  266. package/dist/internal/sync/error-message.d.ts +3 -0
  267. package/dist/internal/sync/error-message.d.ts.map +1 -0
  268. package/dist/internal/sync/error-message.js +10 -0
  269. package/dist/internal/sync/error-message.js.map +1 -0
  270. package/dist/internal/sync/index.d.ts +3 -2
  271. package/dist/internal/sync/index.d.ts.map +1 -1
  272. package/dist/internal/sync/index.js +3 -2
  273. package/dist/internal/sync/index.js.map +1 -1
  274. package/dist/internal/sync/sync.d.ts +8 -5
  275. package/dist/internal/sync/sync.d.ts.map +1 -1
  276. package/dist/internal/sync/sync.js +322 -65
  277. package/dist/internal/sync/sync.js.map +1 -1
  278. package/dist/internal/view/api.d.ts +3 -1
  279. package/dist/internal/view/api.d.ts.map +1 -1
  280. package/dist/internal/view/api.js +154 -90
  281. package/dist/internal/view/api.js.map +1 -1
  282. package/dist/internal/view/error-message.d.ts +3 -0
  283. package/dist/internal/view/error-message.d.ts.map +1 -0
  284. package/dist/internal/view/error-message.js +10 -0
  285. package/dist/internal/view/error-message.js.map +1 -0
  286. package/dist/internal/view/main.d.ts.map +1 -1
  287. package/dist/internal/view/main.js +63 -9
  288. package/dist/internal/view/main.js.map +1 -1
  289. package/dist/internal/view/page.d.ts.map +1 -1
  290. package/dist/internal/view/page.js +119 -20
  291. package/dist/internal/view/page.js.map +1 -1
  292. package/dist/internal/view/report.d.ts.map +1 -1
  293. package/dist/internal/view/report.js +180 -145
  294. package/dist/internal/view/report.js.map +1 -1
  295. package/dist/internal/view/scope.d.ts +6 -2
  296. package/dist/internal/view/scope.d.ts.map +1 -1
  297. package/dist/internal/view/scope.js +107 -24
  298. package/dist/internal/view/scope.js.map +1 -1
  299. package/dist/internal/view/sensitivity.d.ts +4 -0
  300. package/dist/internal/view/sensitivity.d.ts.map +1 -0
  301. package/dist/internal/view/sensitivity.js +11 -0
  302. package/dist/internal/view/sensitivity.js.map +1 -0
  303. package/dist/internal/view/server.d.ts.map +1 -1
  304. package/dist/internal/view/server.js +57 -20
  305. package/dist/internal/view/server.js.map +1 -1
  306. package/dist/src/atomic-output.d.ts +3 -0
  307. package/dist/src/atomic-output.d.ts.map +1 -0
  308. package/dist/src/atomic-output.js +67 -0
  309. package/dist/src/atomic-output.js.map +1 -0
  310. package/dist/src/cli.d.ts +17 -2
  311. package/dist/src/cli.d.ts.map +1 -1
  312. package/dist/src/cli.js +333 -195
  313. package/dist/src/cli.js.map +1 -1
  314. package/dist/src/commands.d.ts +2 -2
  315. package/dist/src/commands.js +2 -2
  316. package/dist/src/commands.js.map +1 -1
  317. package/dist/src/dispatch.d.ts.map +1 -1
  318. package/dist/src/dispatch.js +10 -3
  319. package/dist/src/dispatch.js.map +1 -1
  320. package/dist/src/doctor.d.ts +1 -1
  321. package/dist/src/doctor.d.ts.map +1 -1
  322. package/dist/src/doctor.js +192 -91
  323. package/dist/src/doctor.js.map +1 -1
  324. package/dist/src/error-message.d.ts +3 -0
  325. package/dist/src/error-message.d.ts.map +1 -0
  326. package/dist/src/error-message.js +20 -0
  327. package/dist/src/error-message.js.map +1 -0
  328. package/dist/src/hooks-config.d.ts +3 -0
  329. package/dist/src/hooks-config.d.ts.map +1 -0
  330. package/dist/src/hooks-config.js +23 -0
  331. package/dist/src/hooks-config.js.map +1 -0
  332. package/dist/src/index.d.ts +1 -1
  333. package/dist/src/index.d.ts.map +1 -1
  334. package/dist/src/index.js +1 -1
  335. package/dist/src/index.js.map +1 -1
  336. package/package.json +23 -20
  337. package/src/atomic-output.ts +47 -0
  338. package/src/cli.ts +345 -171
  339. package/src/commands.ts +2 -2
  340. package/src/dispatch.ts +10 -3
  341. package/src/doctor.ts +207 -100
  342. package/src/error-message.ts +13 -0
  343. package/src/hooks-config.ts +22 -0
  344. package/src/index.ts +1 -1
@@ -1,3 +1,5 @@
1
+ import { captureRecords } from "./records.js";
2
+ import { booleanOption } from "./options.js";
1
3
  /**
2
4
  * The connect pass (spec §23.2) — instantiate the mapping per record, append
3
5
  * through the standard pipeline with record provenance, and keep re-runs
@@ -17,22 +19,60 @@
17
19
  */
18
20
  import { createHash } from 'node:crypto';
19
21
  import { Claim, Key, SourceSpan, Value } from '@cavelang/core';
22
+ import { QuerySql } from '@cavelang/store';
20
23
  import { query as caveQuery } from '@cavelang/query';
21
24
  import * as Template from "./template.js";
25
+ import { withFederatedSource } from "./federation.js";
22
26
  export const digestAttribute = 'connect-digest';
23
27
  export const provenanceContext = 'src:cave-connect';
24
28
  /** First 12 hex chars of SHA-256, mirroring `@cavelang/cli/ingest` (spec §9.5). */
25
29
  export const digestOf = (content) => createHash('sha256').update(content).digest('hex').slice(0, 12);
26
30
  /**
27
- * Claim key of a unit's digest claim. The value is excluded from keys
28
- * (spec §9.2), so the key is stable while the digest evolves.
31
+ * Claim key of a bookkeeping claim — `subject HAS attribute: … @src:cave-connect`.
32
+ * The value is excluded from keys (spec §9.2), so the key is stable while
33
+ * the value evolves, and the context makes it the connector's own series:
34
+ * an authored claim with the same attribute is another series entirely.
29
35
  */
30
- const digestKey = (subject) => Key.of(Claim.of({
36
+ export const bookkeepingKey = (subject, attribute) => Key.of(Claim.of({
31
37
  subject: Claim.entity(subject),
32
38
  verb: 'HAS',
33
- payload: Claim.attribute(digestAttribute, Value.parse('x')),
39
+ payload: Claim.attribute(attribute, Value.parse('x')),
34
40
  contexts: [provenanceContext]
35
41
  }));
42
+ const digestKey = (subject) => bookkeepingKey(subject, digestAttribute);
43
+ /**
44
+ * The current row of every claim key whose subject starts with `under`,
45
+ * read with one indexed range query: the range goes into the grouped
46
+ * subquery too, so the latest-per-key aggregation runs over those rows
47
+ * alone, never the whole store.
48
+ */
49
+ export const currentRowsUnder = (store, under) => {
50
+ if (/[\uD800-\uDFFF]/u.test(under)) {
51
+ throw new TypeError('CAVE read: unpaired UTF-16 surrogate cannot be queried as UTF-8');
52
+ }
53
+ const points = [...under];
54
+ let end;
55
+ for (let index = points.length - 1; index >= 0; index--) {
56
+ const point = points[index].codePointAt(0);
57
+ if (point === 0x10ffff)
58
+ continue;
59
+ const next = point === 0xd7ff ? 0xe000 : point + 1;
60
+ end = points.slice(0, index).join('') + String.fromCodePoint(next);
61
+ break;
62
+ }
63
+ if (end === undefined) {
64
+ return store.db.prepare(`${QuerySql.current('(SELECT * FROM cave_claim WHERE subject >= ?)')} WHERE c.subject >= ? ORDER BY c.tx`).all(under, under);
65
+ }
66
+ return store.db.prepare(`${QuerySql.current('(SELECT * FROM cave_claim WHERE subject >= ? AND subject < ?)')} WHERE c.subject >= ? AND c.subject < ? ORDER BY c.tx`).all(under, end, under, end);
67
+ };
68
+ /** The current digest rows of a unit prefix — the connector's bookkeeping under `source/<name>/` or `connect/<name>/`. */
69
+ export const currentDigestsUnder = (store, under) => currentRowsUnder(store, under).filter(row => row.attribute === digestAttribute && row.negated === 0 && row.conf > 0 &&
70
+ store.toClaim(row).contexts.includes(provenanceContext));
71
+ /** @returns `true` when the unit has been connected at all — a current digest claim of any value. */
72
+ export const hasDigest = (store, subject) => {
73
+ const known = store.currentBelief(digestKey(subject));
74
+ return known !== undefined && known.conf > 0;
75
+ };
36
76
  /** @returns `true` when the unit's current digest claim matches `digest`. */
37
77
  export const isConnected = (store, subject, digest) => {
38
78
  const known = store.currentBelief(digestKey(subject));
@@ -41,6 +81,18 @@ export const isConnected = (store, subject, digest) => {
41
81
  const recordDigest = (store, subject, digest) => {
42
82
  store.ingest(`${subject} HAS ${digestAttribute}: ${digest} @${provenanceContext}`);
43
83
  };
84
+ /** Naming of an ad-hoc `cave connect <source>` pass: `connect/<name>[/<key>]` throughout. */
85
+ export const adHocNaming = (name) => ({
86
+ unit: key => key === undefined ? `connect/${name}` : `connect/${name}/${key}`,
87
+ run: key => key === undefined ? `connect/${name}` : `connect/${name}/${key}`,
88
+ recordPrefix: `connect/${name}/`
89
+ });
90
+ /** Naming of a declared `source/<name>` (spec §23.4): digests under `source/<name>[/<key>]`, stamps `@src:<name>[/<key>]`. */
91
+ export const declaredNaming = (name) => ({
92
+ unit: key => key === undefined ? `source/${name}` : `source/${name}/${key}`,
93
+ run: key => key === undefined ? name : `${name}/${key}`,
94
+ recordPrefix: `source/${name}/`
95
+ });
44
96
  const recordFailure = Symbol('cave-connect record failure');
45
97
  const failRecord = (problems) => {
46
98
  throw { [recordFailure]: true, problems };
@@ -54,7 +106,8 @@ const isRecordError = (error) => typeof error === 'object' && error !== null &&
54
106
  * source.
55
107
  */
56
108
  const keyOf = (value) => {
57
- if (value === undefined || value === null) {
109
+ if ((typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean' && typeof value !== 'bigint') ||
110
+ (typeof value === 'number' && !Number.isFinite(value))) {
58
111
  return undefined;
59
112
  }
60
113
  const text = String(value).trim().replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
@@ -64,10 +117,11 @@ const keyOf = (value) => {
64
117
  const isDeclaration = (row) => row.verb === 'REVERSE' || row.verb === 'RENAMED-TO' ||
65
118
  (row.verb === 'IS' && row.object === 'verb');
66
119
  /**
67
- * Retracts current claims carrying `context` that were not (re-)appended in
68
- * this pass (spec §23.2). Contexts are part of claim identity, so every row
69
- * of a stamped series carries the stamp — the latest row per key among the
70
- * stamped rows *is* the series' current belief.
120
+ * Retracts current claims owned by the explicit lifecycle `run` that were not
121
+ * retained in this pass (spec §23.2). Select by run provenance, then keep the
122
+ * latest row per claim key; shared authored contexts do not grant ownership
123
+ * over another connector's or manually authored series. Vocabulary declarations
124
+ * remain append-only and are excluded from lifecycle retirement.
71
125
  */
72
126
  const retractStale = (store, run, keepIds) => {
73
127
  const latest = new Map();
@@ -93,6 +147,8 @@ const retractStale = (store, run, keepIds) => {
93
147
  });
94
148
  return stale.length;
95
149
  };
150
+ /** Retracts every current claim a lifecycle run owns — a unit whose declaration changed shape is retired whole. */
151
+ export const retireRun = (store, run) => retractStale(store, run, new Set());
96
152
  /**
97
153
  * One connect pass: prelude (digest-skipped as a unit under
98
154
  * `connect/<name>`), then each record (digest-skipped under
@@ -101,109 +157,174 @@ const retractStale = (store, run, keepIds) => {
101
157
  * poisons the rest of the run.
102
158
  */
103
159
  export const connect = (store, mapping, records, options) => {
160
+ options = {
161
+ name: options.name,
162
+ naming: options.naming,
163
+ preludeLifecycle: options.preludeLifecycle,
164
+ key: options.key,
165
+ source: options.source,
166
+ spans: options.spans,
167
+ force: options.force,
168
+ prune: options.prune
169
+ };
170
+ for (const key of ['force', 'prune', 'preludeLifecycle']) {
171
+ booleanOption(options[key], key);
172
+ }
104
173
  const force = options.force === true;
105
174
  // The name rides in entity names and @src: contexts, like record keys.
106
175
  const name = keyOf(options.name);
107
176
  if (name === undefined) {
108
- throw new Error(`cave connect: unusable source name ${JSON.stringify(options.name)} — pass --name`);
177
+ let description;
178
+ try {
179
+ description = JSON.stringify(options.name);
180
+ }
181
+ catch {
182
+ description = '[unprintable value]';
183
+ }
184
+ throw new Error(`cave connect: unusable source name ${description} — pass --name`);
109
185
  }
186
+ // Missing batch entries must not be interpreted as vanished source records.
187
+ records = captureRecords(records);
188
+ // Provenance is input metadata: validate it before any lifecycle unit writes.
189
+ const source = options.source;
190
+ const defaultSourceContext = source === undefined ? undefined : SourceSpan.context(source);
191
+ const recordSourceContexts = source === undefined || options.spans === undefined ? undefined :
192
+ records.map((_record, at) => SourceSpan.context(source, options.spans?.[at]));
193
+ const naming = options.naming ?? adHocNaming(name);
110
194
  const failures = [];
111
195
  const notes = [];
112
196
  const seen = new Set();
197
+ let unidentifiedFailures = 0;
113
198
  let mapped = 0;
114
199
  let skipped = 0;
115
200
  let added = 0;
116
201
  let retracted = 0;
117
202
  let pruned = 0;
118
203
  let dropped = 0;
119
- const ingestUnit = (subject, text, digest, sourceContext) => {
120
- store.transaction(() => {
121
- const result = store.ingest(text, {
122
- source: subject,
123
- lifecycle: true,
124
- ...sourceContext === undefined ? {} : { contexts: [sourceContext] }
125
- });
126
- if (result.problems.length > 0) {
127
- failRecord(result.problems.map(problem => `line ${problem.line}: ${problem.message}`));
128
- }
129
- added += result.ids.length;
130
- retracted += retractStale(store, subject, new Set(result.ids));
131
- recordDigest(store, subject, digest);
204
+ const ingestUnit = (unit, run, text, digest, sourceContext) => store.transaction(() => {
205
+ // The optimistic check can race with another connection's refresh.
206
+ if (!force && isConnected(store, unit, digest))
207
+ return false;
208
+ const result = store.ingest(text, {
209
+ source: run,
210
+ lifecycle: true,
211
+ ...sourceContext === undefined ? {} : { contexts: [sourceContext] }
132
212
  });
133
- };
134
- if (mapping.prelude !== '') {
135
- const subject = `connect/${name}`;
213
+ if (result.problems.length > 0) {
214
+ failRecord(result.problems.map(problem => `line ${problem.line}: ${problem.message}`));
215
+ }
216
+ added += result.ids.length;
217
+ retracted += retractStale(store, run, new Set(result.ids));
218
+ recordDigest(store, unit, digest);
219
+ return true;
220
+ });
221
+ // A lifecycle prelude that became empty is still an update: the unit now
222
+ // says nothing, and every claim it owned retracts.
223
+ if (mapping.prelude !== '' || options.preludeLifecycle === true) {
224
+ const unit = naming.unit();
136
225
  const digest = digestOf(mapping.prelude);
137
- if (force || !isConnected(store, subject, digest)) {
138
- store.transaction(() => {
139
- const result = store.ingest(mapping.prelude, { source: subject });
140
- if (result.problems.length > 0) {
141
- // The prelude was linted with the mapping; a problem here aborts the run.
142
- const detail = result.problems.map(problem => `prelude line ${problem.line}: ${problem.message}`).join('\n');
143
- throw new Error(`cave connect: prelude failed to ingest\n${detail}`);
226
+ if (force || !isConnected(store, unit, digest)) {
227
+ if (options.preludeLifecycle === true) {
228
+ try {
229
+ if (!ingestUnit(unit, naming.run(), mapping.prelude, digest))
230
+ notes.push('prelude unchanged, skipped');
144
231
  }
145
- added += result.ids.length;
146
- recordDigest(store, subject, digest);
147
- });
232
+ catch (error) {
233
+ if (!isRecordError(error)) {
234
+ throw error;
235
+ }
236
+ throw new Error(`cave connect: prelude failed to ingest\n${error.problems.map(problem => `prelude ${problem}`).join('\n')}`);
237
+ }
238
+ }
239
+ else {
240
+ store.transaction(() => {
241
+ if (!force && isConnected(store, unit, digest)) {
242
+ notes.push('prelude unchanged, skipped');
243
+ return;
244
+ }
245
+ const result = store.ingest(mapping.prelude, { source: naming.run() });
246
+ if (result.problems.length > 0) {
247
+ // The prelude was linted with the mapping; a problem here aborts the run.
248
+ const detail = result.problems.map(problem => `prelude line ${problem.line}: ${problem.message}`).join('\n');
249
+ throw new Error(`cave connect: prelude failed to ingest\n${detail}`);
250
+ }
251
+ added += result.ids.length;
252
+ recordDigest(store, unit, digest);
253
+ });
254
+ }
148
255
  }
149
256
  else {
150
257
  notes.push('prelude unchanged, skipped');
151
258
  }
152
259
  }
153
260
  records.forEach((record, at) => {
154
- const instantiation = Template.instantiate(mapping.templates, name => Template.fieldOf(record, name));
261
+ const fields = new Map();
262
+ const field = (name) => {
263
+ if (!fields.has(name))
264
+ fields.set(name, Template.fieldOf(record, name));
265
+ return fields.get(name);
266
+ };
267
+ const instantiation = Template.instantiate(mapping.templates, field);
155
268
  dropped += instantiation.dropped;
156
269
  const key = options.key === undefined ?
157
270
  digestOf(instantiation.text) :
158
- keyOf(Template.fieldOf(record, options.key));
271
+ keyOf(field(options.key));
159
272
  if (key === undefined) {
160
- failures.push({ record: `record ${at + 1}`, problems: [`--key field ${JSON.stringify(options.key)} is missing or empty`] });
273
+ unidentifiedFailures += 1;
274
+ failures.push({ record: `record ${at + 1}`, problems: [`--key field ${JSON.stringify(options.key)} is missing, empty, or not a usable scalar`] });
161
275
  return;
162
276
  }
163
277
  if (seen.has(key)) {
164
- notes.push(`duplicate record key ${JSON.stringify(key)} — last record wins`);
278
+ notes.push(`duplicate record key ${JSON.stringify(key)} — last successful record wins`);
165
279
  }
166
280
  // Failed records still count as seen — pruning must never mistake a
167
281
  // transient failure for a record that left the source.
168
282
  seen.add(key);
169
283
  if (instantiation.problems.length > 0) {
284
+ if (options.key === undefined)
285
+ unidentifiedFailures += 1;
170
286
  failures.push({ record: `record ${at + 1} (${key})`, problems: instantiation.problems });
171
287
  return;
172
288
  }
173
- const subject = `connect/${name}/${key}`;
174
- const sourceContext = options.source === undefined ? undefined :
175
- SourceSpan.context(options.source, options.spans?.[at]);
289
+ const subject = naming.unit(key);
290
+ const sourceContext = recordSourceContexts?.[at] ?? defaultSourceContext;
176
291
  const digest = digestOf(`${instantiation.text}\0${sourceContext ?? ''}`);
177
292
  if (!force && isConnected(store, subject, digest)) {
178
293
  skipped += 1;
179
294
  return;
180
295
  }
181
296
  try {
182
- ingestUnit(subject, instantiation.text, digest, sourceContext);
183
- mapped += 1;
297
+ if (ingestUnit(subject, naming.run(key), instantiation.text, digest, sourceContext))
298
+ mapped += 1;
299
+ else
300
+ skipped += 1;
184
301
  }
185
302
  catch (error) {
186
303
  if (!isRecordError(error)) {
187
304
  throw error;
188
305
  }
306
+ if (options.key === undefined)
307
+ unidentifiedFailures += 1;
189
308
  failures.push({ record: `record ${at + 1} (${key})`, problems: error.problems });
190
309
  }
191
310
  });
192
- if (options.prune === true) {
193
- const prefix = `connect/${name}/`;
194
- const latest = new Map();
195
- for (const row of store.byContext(provenanceContext)) {
196
- const current = latest.get(row.claim_key);
197
- if (current === undefined || current.tx < row.tx) {
198
- latest.set(row.claim_key, row);
199
- }
200
- }
201
- for (const row of latest.values()) {
202
- if (row.conf <= 0 || !row.subject.startsWith(prefix) || seen.has(row.subject.slice(prefix.length))) {
203
- continue;
204
- }
205
- store.transaction(() => {
206
- retracted += retractStale(store, row.subject, new Set());
311
+ if (options.prune === true && unidentifiedFailures > 0) {
312
+ // Without a usable key (or valid content for a content-addressed record),
313
+ // this pass cannot distinguish a damaged record from a vanished one.
314
+ notes.push(`pruning skipped: ${unidentifiedFailures} failed record(s) have no reliable identity; repair the source and rerun with --prune`);
315
+ }
316
+ if (options.prune === true && unidentifiedFailures === 0) {
317
+ const prefix = naming.recordPrefix;
318
+ store.transaction(() => {
319
+ // Discover the source's digests under the same reservation as their
320
+ // retractions, so a concurrent writer cannot slip into a stale list.
321
+ for (const row of currentDigestsUnder(store, prefix)) {
322
+ const key = row.subject.slice(prefix.length);
323
+ if (seen.has(key)) {
324
+ continue;
325
+ }
326
+ // The digest entity names the record; its claims are found by run.
327
+ retracted += retractStale(store, naming.run(key), new Set());
207
328
  store.insertResult({
208
329
  claims: [{ claim: { ...store.toClaim(row), conf: 0, raw: '', comment: 'retracted: record left the source' }, line: 0 }],
209
330
  edges: [],
@@ -211,12 +332,11 @@ export const connect = (store, mapping, records, options) => {
211
332
  problems: []
212
333
  });
213
334
  pruned += 1;
214
- });
215
- }
335
+ }
336
+ });
216
337
  }
217
338
  return { records: records.length, mapped, skipped, added, retracted, pruned, dropped, failures, notes };
218
339
  };
219
- const rollback = Symbol('cave-connect query rollback');
220
340
  /**
221
341
  * Federation-lite (spec §23.3): appends the mapped claims inside a
222
342
  * transaction, runs the CAVE-Q pattern over the union of store and source,
@@ -224,19 +344,7 @@ const rollback = Symbol('cave-connect query rollback');
224
344
  * persists (digest bookkeeping included).
225
345
  */
226
346
  export const federatedQuery = (store, mapping, records, options, pattern, queryOptions = {}) => {
227
- let outcome;
228
- try {
229
- store.transaction(() => {
230
- const report = connect(store, mapping, records, { ...options, force: true, prune: false });
231
- outcome = { matches: caveQuery(store, pattern, queryOptions), report };
232
- throw rollback;
233
- });
234
- }
235
- catch (error) {
236
- if (error !== rollback) {
237
- throw error;
238
- }
239
- }
240
- return outcome;
347
+ const { result: matches, report } = withFederatedSource(store, mapping, records, options, () => caveQuery(store, pattern, queryOptions));
348
+ return { matches, report };
241
349
  };
242
350
  //# sourceMappingURL=run.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Record sources (spec §23) — CSV/TSV files, JSON documents, JSONL streams,
3
- * SQLite databases (read-only), and http(s) URLs serving JSON or CSV. Every
3
+ * SQLite databases (read-only), and http(s) URLs serving JSON, JSONL, CSV or TSV. Every
4
4
  * source loads to the same shape: an array of flat-ish records the template
5
5
  * layer resolves fields from (`fieldOf` handles nested JSON by dot path).
6
6
  */
7
7
  import type { LineSpan } from '@cavelang/core';
8
8
  export type Format = 'csv' | 'tsv' | 'json' | 'jsonl' | 'sqlite';
9
+ /** Every record format, in `--format` order. */
10
+ export declare const formats: readonly Format[];
9
11
  /** Injection point for tests; the built-in fetch otherwise. */
10
12
  export type FetchLike = (url: string, init: RequestInit) => Promise<Response>;
11
13
  export type Options = {
@@ -13,14 +15,25 @@ export type Options = {
13
15
  readonly format?: Format;
14
16
  /** CSV delimiter (default `,`; `\t` for tsv). */
15
17
  readonly delimiter?: string;
16
- /** SQLite table to read (`SELECT *`). */
18
+ /**
19
+ * SQLite table to read (`SELECT *`); for any other format, the name of
20
+ * the temporary table `sql` runs against (default `records`).
21
+ */
17
22
  readonly table?: string;
18
- /** SQLite query — the alternative to `table`. */
23
+ /**
24
+ * SQLite query — the alternative to `table`. For any other format the
25
+ * parsed records are loaded into a temporary in-memory SQLite table,
26
+ * values exactly as parsed (CSV cells are text; cast for arithmetic),
27
+ * and the query's rows become the records (spec §23.1): one mechanism
28
+ * for projecting, filtering, and reshaping, no expression language.
29
+ */
19
30
  readonly sql?: string;
20
31
  /** Dot path to the record array inside a JSON document. */
21
32
  readonly records?: string;
22
33
  /** URL fetch timeout in seconds (default 60). */
23
34
  readonly timeoutSeconds?: number;
35
+ /** Cancel source loading and pending URL body reads. */
36
+ readonly signal?: AbortSignal;
24
37
  /** Injection point for tests; the built-in fetch otherwise. */
25
38
  readonly fetchImpl?: FetchLike;
26
39
  };
@@ -29,6 +42,8 @@ export type Loaded = {
29
42
  readonly format: Format;
30
43
  /** Record-aligned source line spans when the format has stable lines. */
31
44
  readonly spans?: readonly LineSpan[];
45
+ /** The source's own column order when it declares one (a CSV header), records or none. */
46
+ readonly columns?: readonly string[];
32
47
  };
33
48
  export declare const isUrl: (source: string) => boolean;
34
49
  /** Infers the source format from an explicit option or the file/URL extension. */
@@ -39,6 +54,24 @@ export declare const formatOf: (source: string, options?: Options) => Format;
39
54
  */
40
55
  export declare const nameOf: (source: string) => string;
41
56
  export declare const parseCsv: (text: string, delimiter?: string) => Record<string, string>[];
57
+ /**
58
+ * Runs `sql` over the records loaded from a text format: the records
59
+ * become one temporary in-memory table (`records`, or `table`), one column
60
+ * per field in first-seen order, and the query's rows are the records
61
+ * that reach the mapping (spec §23.1). Line spans do not survive a query.
62
+ */
63
+ export declare const queryRecords: (records: readonly Record<string, unknown>[], sql: string, table?: string, schema?: readonly string[]) => Record<string, unknown>[];
64
+ /** Fetches a URL's body; the transport is injectable for tests. */
65
+ export declare const fetchText: (url: string, options: Options) => Promise<{
66
+ text: string;
67
+ contentType: string;
68
+ }>;
69
+ /**
70
+ * Loads a local source synchronously — what assembling a text store needs
71
+ * (spec §23.4); a URL source is refused, since fetching it cannot be
72
+ * synchronous: `cave connect` follows URLs.
73
+ */
74
+ export declare const loadSync: (source: string, options?: Options) => Loaded;
42
75
  /** Loads a source to records. Local files read synchronously; URLs fetch. */
43
76
  export declare const load: (source: string, options?: Options) => Promise<Loaded>;
44
77
  //# sourceMappingURL=source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/source.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9C,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEhE,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE7E,MAAM,MAAM,OAAO,GAAG;IACpB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,yCAAyC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,iDAAiD;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,QAAQ,MAAM,KAAG,OACT,CAAA;AAa9B,kFAAkF;AAClF,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,UAAS,OAAY,KAAG,MAUhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,KAAG,MAOvC,CAAA;AAqED,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,kBAAe,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,CAAA;AA0E1C,6EAA6E;AAC7E,eAAO,MAAM,IAAI,GAAU,QAAQ,MAAM,EAAE,UAAS,OAAY,KAAG,OAAO,CAAC,MAAM,CAiBhF,CAAA"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/source.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAoB9C,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEhE,gDAAgD;AAChD,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAA8C,CAAA;AAEnF,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE7E,MAAM,MAAM,OAAO,GAAG;IACpB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,iDAAiD;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;IACpC,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC,CAAA;AAkCD,eAAO,MAAM,KAAK,GAAI,QAAQ,MAAM,KAAG,OACT,CAAA;AAa9B,kFAAkF;AAClF,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,UAAS,OAAY,KAAG,MAWhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,KAAG,MAOvC,CAAA;AAgGD,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,kBAAe,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,CAAA;AA2J1C;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3C,KAAK,MAAM,EACX,cAAiB,EACjB,SAAS,SAAS,MAAM,EAAE,KACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAyFzB,CAAA;AAiBD,mEAAmE;AACnE,eAAO,MAAM,SAAS,GAAU,KAAK,MAAM,EAAE,SAAS,OAAO,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiC5G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,UAAS,OAAY,KAAG,MAUhE,CAAA;AASD,6EAA6E;AAC7E,eAAO,MAAM,IAAI,GAAU,QAAQ,MAAM,EAAE,UAAS,OAAY,KAAG,OAAO,CAAC,MAAM,CAiBhF,CAAA"}