@cavelang/cli 0.27.14 → 0.29.1

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 (321) hide show
  1. package/Authors.md +5 -0
  2. package/License.md +6 -0
  3. package/README.md +122 -24
  4. package/dist/internal/act/action.d.ts +69 -0
  5. package/dist/internal/act/action.d.ts.map +1 -0
  6. package/dist/internal/act/action.js +201 -0
  7. package/dist/internal/act/action.js.map +1 -0
  8. package/dist/internal/act/declare.d.ts +102 -0
  9. package/dist/internal/act/declare.d.ts.map +1 -0
  10. package/dist/internal/act/declare.js +270 -0
  11. package/dist/internal/act/declare.js.map +1 -0
  12. package/dist/internal/act/engine.d.ts +103 -0
  13. package/dist/internal/act/engine.d.ts.map +1 -0
  14. package/dist/internal/act/engine.js +298 -0
  15. package/dist/internal/act/engine.js.map +1 -0
  16. package/dist/internal/act/index.d.ts +27 -0
  17. package/dist/internal/act/index.d.ts.map +1 -0
  18. package/dist/internal/act/index.js +25 -0
  19. package/dist/internal/act/index.js.map +1 -0
  20. package/dist/internal/automate/automation.d.ts +78 -0
  21. package/dist/internal/automate/automation.d.ts.map +1 -0
  22. package/dist/internal/automate/automation.js +135 -0
  23. package/dist/internal/automate/automation.js.map +1 -0
  24. package/dist/internal/automate/declare.d.ts +84 -0
  25. package/dist/internal/automate/declare.d.ts.map +1 -0
  26. package/dist/internal/automate/declare.js +233 -0
  27. package/dist/internal/automate/declare.js.map +1 -0
  28. package/dist/internal/automate/engine.d.ts +125 -0
  29. package/dist/internal/automate/engine.d.ts.map +1 -0
  30. package/dist/internal/automate/engine.js +388 -0
  31. package/dist/internal/automate/engine.js.map +1 -0
  32. package/dist/internal/automate/index.d.ts +28 -0
  33. package/dist/internal/automate/index.d.ts.map +1 -0
  34. package/dist/internal/automate/index.js +26 -0
  35. package/dist/internal/automate/index.js.map +1 -0
  36. package/dist/internal/automate/main.d.ts +26 -0
  37. package/dist/internal/automate/main.d.ts.map +1 -0
  38. package/dist/internal/automate/main.js +298 -0
  39. package/dist/internal/automate/main.js.map +1 -0
  40. package/dist/internal/connect/index.d.ts +26 -0
  41. package/dist/internal/connect/index.d.ts.map +1 -0
  42. package/dist/internal/connect/index.js +24 -0
  43. package/dist/internal/connect/index.js.map +1 -0
  44. package/dist/internal/connect/main.d.ts +23 -0
  45. package/dist/internal/connect/main.d.ts.map +1 -0
  46. package/dist/internal/connect/main.js +330 -0
  47. package/dist/internal/connect/main.js.map +1 -0
  48. package/dist/internal/connect/run.d.ts +85 -0
  49. package/dist/internal/connect/run.d.ts.map +1 -0
  50. package/dist/internal/connect/run.js +242 -0
  51. package/dist/internal/connect/run.js.map +1 -0
  52. package/dist/internal/connect/source.d.ts +44 -0
  53. package/dist/internal/connect/source.d.ts.map +1 -0
  54. package/dist/internal/connect/source.js +215 -0
  55. package/dist/internal/connect/source.js.map +1 -0
  56. package/dist/internal/connect/template.d.ts +69 -0
  57. package/dist/internal/connect/template.d.ts.map +1 -0
  58. package/dist/internal/connect/template.js +221 -0
  59. package/dist/internal/connect/template.js.map +1 -0
  60. package/dist/internal/eval/index.d.ts +28 -0
  61. package/dist/internal/eval/index.d.ts.map +1 -0
  62. package/dist/internal/eval/index.js +27 -0
  63. package/dist/internal/eval/index.js.map +1 -0
  64. package/dist/internal/eval/judge.d.ts +30 -0
  65. package/dist/internal/eval/judge.d.ts.map +1 -0
  66. package/dist/internal/eval/judge.js +101 -0
  67. package/dist/internal/eval/judge.js.map +1 -0
  68. package/dist/internal/eval/loop.d.ts +64 -0
  69. package/dist/internal/eval/loop.d.ts.map +1 -0
  70. package/dist/internal/eval/loop.js +123 -0
  71. package/dist/internal/eval/loop.js.map +1 -0
  72. package/dist/internal/eval/main.d.ts +17 -0
  73. package/dist/internal/eval/main.d.ts.map +1 -0
  74. package/dist/internal/eval/main.js +236 -0
  75. package/dist/internal/eval/main.js.map +1 -0
  76. package/dist/internal/eval/queries.d.ts +74 -0
  77. package/dist/internal/eval/queries.d.ts.map +1 -0
  78. package/dist/internal/eval/queries.js +161 -0
  79. package/dist/internal/eval/queries.js.map +1 -0
  80. package/dist/internal/eval/run.d.ts +143 -0
  81. package/dist/internal/eval/run.d.ts.map +1 -0
  82. package/dist/internal/eval/run.js +376 -0
  83. package/dist/internal/eval/run.js.map +1 -0
  84. package/dist/internal/eval/score.d.ts +81 -0
  85. package/dist/internal/eval/score.d.ts.map +1 -0
  86. package/dist/internal/eval/score.js +126 -0
  87. package/dist/internal/eval/score.js.map +1 -0
  88. package/dist/internal/eval/suite.d.ts +66 -0
  89. package/dist/internal/eval/suite.d.ts.map +1 -0
  90. package/dist/internal/eval/suite.js +130 -0
  91. package/dist/internal/eval/suite.js.map +1 -0
  92. package/dist/internal/ingest/context.d.ts +20 -0
  93. package/dist/internal/ingest/context.d.ts.map +1 -0
  94. package/dist/internal/ingest/context.js +59 -0
  95. package/dist/internal/ingest/context.js.map +1 -0
  96. package/dist/internal/ingest/files.d.ts +46 -0
  97. package/dist/internal/ingest/files.d.ts.map +1 -0
  98. package/dist/internal/ingest/files.js +115 -0
  99. package/dist/internal/ingest/files.js.map +1 -0
  100. package/dist/internal/ingest/index.d.ts +31 -0
  101. package/dist/internal/ingest/index.d.ts.map +1 -0
  102. package/dist/internal/ingest/index.js +29 -0
  103. package/dist/internal/ingest/index.js.map +1 -0
  104. package/dist/internal/ingest/main.d.ts +12 -0
  105. package/dist/internal/ingest/main.d.ts.map +1 -0
  106. package/dist/internal/ingest/main.js +180 -0
  107. package/dist/internal/ingest/main.js.map +1 -0
  108. package/dist/internal/ingest/prompt.d.ts +32 -0
  109. package/dist/internal/ingest/prompt.d.ts.map +1 -0
  110. package/dist/internal/ingest/prompt.js +75 -0
  111. package/dist/internal/ingest/prompt.js.map +1 -0
  112. package/dist/internal/ingest/run.d.ts +142 -0
  113. package/dist/internal/ingest/run.d.ts.map +1 -0
  114. package/dist/internal/ingest/run.js +350 -0
  115. package/dist/internal/ingest/run.js.map +1 -0
  116. package/dist/internal/ingest/web.d.ts +48 -0
  117. package/dist/internal/ingest/web.d.ts.map +1 -0
  118. package/dist/internal/ingest/web.js +140 -0
  119. package/dist/internal/ingest/web.js.map +1 -0
  120. package/dist/internal/loop/demo.d.ts +22 -0
  121. package/dist/internal/loop/demo.d.ts.map +1 -0
  122. package/dist/internal/loop/demo.js +67 -0
  123. package/dist/internal/loop/demo.js.map +1 -0
  124. package/dist/internal/loop/index.d.ts +20 -0
  125. package/dist/internal/loop/index.d.ts.map +1 -0
  126. package/dist/internal/loop/index.js +17 -0
  127. package/dist/internal/loop/index.js.map +1 -0
  128. package/dist/internal/loop/llm.d.ts +99 -0
  129. package/dist/internal/loop/llm.d.ts.map +1 -0
  130. package/dist/internal/loop/llm.js +231 -0
  131. package/dist/internal/loop/llm.js.map +1 -0
  132. package/dist/internal/loop/reconstruct.d.ts +87 -0
  133. package/dist/internal/loop/reconstruct.d.ts.map +1 -0
  134. package/dist/internal/loop/reconstruct.js +157 -0
  135. package/dist/internal/loop/reconstruct.js.map +1 -0
  136. package/dist/internal/loop/sqlite.d.ts +13 -0
  137. package/dist/internal/loop/sqlite.d.ts.map +1 -0
  138. package/dist/internal/loop/sqlite.js +33 -0
  139. package/dist/internal/loop/sqlite.js.map +1 -0
  140. package/dist/internal/loop/store.d.ts +50 -0
  141. package/dist/internal/loop/store.d.ts.map +1 -0
  142. package/dist/internal/loop/store.js +100 -0
  143. package/dist/internal/loop/store.js.map +1 -0
  144. package/dist/internal/mcp/bin.d.ts +7 -0
  145. package/dist/internal/mcp/bin.d.ts.map +1 -0
  146. package/dist/internal/mcp/bin.js +8 -0
  147. package/dist/internal/mcp/bin.js.map +1 -0
  148. package/dist/internal/mcp/index.d.ts +25 -0
  149. package/dist/internal/mcp/index.d.ts.map +1 -0
  150. package/dist/internal/mcp/index.js +23 -0
  151. package/dist/internal/mcp/index.js.map +1 -0
  152. package/dist/internal/mcp/main.d.ts +23 -0
  153. package/dist/internal/mcp/main.d.ts.map +1 -0
  154. package/dist/internal/mcp/main.js +156 -0
  155. package/dist/internal/mcp/main.js.map +1 -0
  156. package/dist/internal/mcp/server.d.ts +92 -0
  157. package/dist/internal/mcp/server.d.ts.map +1 -0
  158. package/dist/internal/mcp/server.js +251 -0
  159. package/dist/internal/mcp/server.js.map +1 -0
  160. package/dist/internal/mcp/tools.d.ts +91 -0
  161. package/dist/internal/mcp/tools.d.ts.map +1 -0
  162. package/dist/internal/mcp/tools.js +584 -0
  163. package/dist/internal/mcp/tools.js.map +1 -0
  164. package/dist/internal/rules/declare.d.ts +58 -0
  165. package/dist/internal/rules/declare.d.ts.map +1 -0
  166. package/dist/internal/rules/declare.js +152 -0
  167. package/dist/internal/rules/declare.js.map +1 -0
  168. package/dist/internal/rules/engine.d.ts +125 -0
  169. package/dist/internal/rules/engine.d.ts.map +1 -0
  170. package/dist/internal/rules/engine.js +575 -0
  171. package/dist/internal/rules/engine.js.map +1 -0
  172. package/dist/internal/rules/index.d.ts +23 -0
  173. package/dist/internal/rules/index.d.ts.map +1 -0
  174. package/dist/internal/rules/index.js +21 -0
  175. package/dist/internal/rules/index.js.map +1 -0
  176. package/dist/internal/rules/rule.d.ts +88 -0
  177. package/dist/internal/rules/rule.d.ts.map +1 -0
  178. package/dist/internal/rules/rule.js +221 -0
  179. package/dist/internal/rules/rule.js.map +1 -0
  180. package/dist/internal/shape/check.d.ts +118 -0
  181. package/dist/internal/shape/check.d.ts.map +1 -0
  182. package/dist/internal/shape/check.js +331 -0
  183. package/dist/internal/shape/check.js.map +1 -0
  184. package/dist/internal/shape/client.d.ts +31 -0
  185. package/dist/internal/shape/client.d.ts.map +1 -0
  186. package/dist/internal/shape/client.js +170 -0
  187. package/dist/internal/shape/client.js.map +1 -0
  188. package/dist/internal/shape/gate.d.ts +33 -0
  189. package/dist/internal/shape/gate.d.ts.map +1 -0
  190. package/dist/internal/shape/gate.js +0 -0
  191. package/dist/internal/shape/gate.js.map +1 -0
  192. package/dist/internal/shape/index.d.ts +27 -0
  193. package/dist/internal/shape/index.d.ts.map +1 -0
  194. package/dist/internal/shape/index.js +23 -0
  195. package/dist/internal/shape/index.js.map +1 -0
  196. package/dist/internal/shape/suggest.d.ts +82 -0
  197. package/dist/internal/shape/suggest.d.ts.map +1 -0
  198. package/dist/internal/shape/suggest.js +374 -0
  199. package/dist/internal/shape/suggest.js.map +1 -0
  200. package/dist/internal/sync/index.d.ts +22 -0
  201. package/dist/internal/sync/index.d.ts.map +1 -0
  202. package/dist/internal/sync/index.js +21 -0
  203. package/dist/internal/sync/index.js.map +1 -0
  204. package/dist/internal/sync/sync.d.ts +95 -0
  205. package/dist/internal/sync/sync.d.ts.map +1 -0
  206. package/dist/internal/sync/sync.js +342 -0
  207. package/dist/internal/sync/sync.js.map +1 -0
  208. package/dist/internal/view/api.d.ts +196 -0
  209. package/dist/internal/view/api.d.ts.map +1 -0
  210. package/dist/internal/view/api.js +189 -0
  211. package/dist/internal/view/api.js.map +1 -0
  212. package/dist/internal/view/index.d.ts +33 -0
  213. package/dist/internal/view/index.d.ts.map +1 -0
  214. package/dist/internal/view/index.js +30 -0
  215. package/dist/internal/view/index.js.map +1 -0
  216. package/dist/internal/view/main.d.ts +11 -0
  217. package/dist/internal/view/main.d.ts.map +1 -0
  218. package/dist/internal/view/main.js +98 -0
  219. package/dist/internal/view/main.js.map +1 -0
  220. package/dist/internal/view/page.d.ts +14 -0
  221. package/dist/internal/view/page.d.ts.map +1 -0
  222. package/dist/internal/view/page.js +370 -0
  223. package/dist/internal/view/page.js.map +1 -0
  224. package/dist/internal/view/report.d.ts +52 -0
  225. package/dist/internal/view/report.d.ts.map +1 -0
  226. package/dist/internal/view/report.js +367 -0
  227. package/dist/internal/view/report.js.map +1 -0
  228. package/dist/internal/view/scope.d.ts +11 -0
  229. package/dist/internal/view/scope.d.ts.map +1 -0
  230. package/dist/internal/view/scope.js +41 -0
  231. package/dist/internal/view/scope.js.map +1 -0
  232. package/dist/internal/view/server.d.ts +35 -0
  233. package/dist/internal/view/server.d.ts.map +1 -0
  234. package/dist/internal/view/server.js +141 -0
  235. package/dist/internal/view/server.js.map +1 -0
  236. package/dist/src/act.d.ts +3 -0
  237. package/dist/src/act.d.ts.map +1 -0
  238. package/dist/src/act.js +3 -0
  239. package/dist/src/act.js.map +1 -0
  240. package/dist/src/automate.d.ts +3 -0
  241. package/dist/src/automate.d.ts.map +1 -0
  242. package/dist/src/automate.js +3 -0
  243. package/dist/src/automate.js.map +1 -0
  244. package/dist/src/cli.d.ts +24 -17
  245. package/dist/src/cli.d.ts.map +1 -1
  246. package/dist/src/cli.js +408 -107
  247. package/dist/src/cli.js.map +1 -1
  248. package/dist/src/commands.d.ts +104 -0
  249. package/dist/src/commands.d.ts.map +1 -0
  250. package/dist/src/commands.js +33 -0
  251. package/dist/src/commands.js.map +1 -0
  252. package/dist/src/connect.d.ts +3 -0
  253. package/dist/src/connect.d.ts.map +1 -0
  254. package/dist/src/connect.js +3 -0
  255. package/dist/src/connect.js.map +1 -0
  256. package/dist/src/dispatch.d.ts +14 -0
  257. package/dist/src/dispatch.d.ts.map +1 -0
  258. package/dist/src/dispatch.js +116 -0
  259. package/dist/src/dispatch.js.map +1 -0
  260. package/dist/src/doctor.d.ts +45 -0
  261. package/dist/src/doctor.d.ts.map +1 -0
  262. package/dist/src/doctor.js +284 -0
  263. package/dist/src/doctor.js.map +1 -0
  264. package/dist/src/eval.d.ts +3 -0
  265. package/dist/src/eval.d.ts.map +1 -0
  266. package/dist/src/eval.js +3 -0
  267. package/dist/src/eval.js.map +1 -0
  268. package/dist/src/index.d.ts +9 -2
  269. package/dist/src/index.d.ts.map +1 -1
  270. package/dist/src/index.js +6 -2
  271. package/dist/src/index.js.map +1 -1
  272. package/dist/src/ingest.d.ts +3 -0
  273. package/dist/src/ingest.d.ts.map +1 -0
  274. package/dist/src/ingest.js +3 -0
  275. package/dist/src/ingest.js.map +1 -0
  276. package/dist/src/loop.d.ts +3 -0
  277. package/dist/src/loop.d.ts.map +1 -0
  278. package/dist/src/loop.js +3 -0
  279. package/dist/src/loop.js.map +1 -0
  280. package/dist/src/main.d.ts +1 -1
  281. package/dist/src/main.d.ts.map +1 -1
  282. package/dist/src/main.js +3 -75
  283. package/dist/src/main.js.map +1 -1
  284. package/dist/src/mcp.d.ts +3 -0
  285. package/dist/src/mcp.d.ts.map +1 -0
  286. package/dist/src/mcp.js +3 -0
  287. package/dist/src/mcp.js.map +1 -0
  288. package/dist/src/rules.d.ts +3 -0
  289. package/dist/src/rules.d.ts.map +1 -0
  290. package/dist/src/rules.js +3 -0
  291. package/dist/src/rules.js.map +1 -0
  292. package/dist/src/shape.d.ts +3 -0
  293. package/dist/src/shape.d.ts.map +1 -0
  294. package/dist/src/shape.js +3 -0
  295. package/dist/src/shape.js.map +1 -0
  296. package/dist/src/sync.d.ts +3 -0
  297. package/dist/src/sync.d.ts.map +1 -0
  298. package/dist/src/sync.js +3 -0
  299. package/dist/src/sync.js.map +1 -0
  300. package/dist/src/view.d.ts +3 -0
  301. package/dist/src/view.d.ts.map +1 -0
  302. package/dist/src/view.js +3 -0
  303. package/dist/src/view.js.map +1 -0
  304. package/package.json +81 -21
  305. package/src/act.ts +2 -0
  306. package/src/automate.ts +2 -0
  307. package/src/cli.ts +416 -102
  308. package/src/commands.ts +48 -0
  309. package/src/connect.ts +2 -0
  310. package/src/dispatch.ts +141 -0
  311. package/src/doctor.ts +370 -0
  312. package/src/eval.ts +2 -0
  313. package/src/index.ts +9 -2
  314. package/src/ingest.ts +2 -0
  315. package/src/loop.ts +2 -0
  316. package/src/main.ts +3 -66
  317. package/src/mcp.ts +2 -0
  318. package/src/rules.ts +2 -0
  319. package/src/shape.ts +2 -0
  320. package/src/sync.ts +2 -0
  321. package/src/view.ts +2 -0
@@ -0,0 +1,575 @@
1
+ /**
2
+ * The forward-chaining derivation engine (spec §24.2–§24.5).
3
+ *
4
+ * Rules live in the store as ordinary claims (§24.1's declaration shape),
5
+ * so derived claims can point lineage edges at them:
6
+ *
7
+ * ```cave
8
+ * rule/9f30ac9be4dd HAS rule: `?x NEEDS ?y, ?y NEEDS ?z => ?x NEEDS ?z` @src:cave-derive
9
+ * ```
10
+ *
11
+ * `derive` fires every current positive rule over current beliefs and
12
+ * appends what follows:
13
+ *
14
+ * - premises join left-to-right, each partial binding specializing the
15
+ * next pattern and running it through the ordinary CAVE-Q compiler —
16
+ * inverse verbs, transitive hops and the alias closure come for free;
17
+ * - conclusion confidence is noisy-AND (`@cavelang/fusion`, the
18
+ * independence assumption explicit): rule conf × Π premise-row confs;
19
+ * several derivations of one conclusion keep the strongest (§24.2);
20
+ * - derived rows are stamped `@src:rule/<digest>` (§9.5) and linked
21
+ * `BECAUSE` to their specific premise rows and `VIA` to the rule's
22
+ * declaration row (§24.3);
23
+ * - re-runs are idempotent — a conclusion equal to current belief appends
24
+ * nothing — and incremental by per-rule tx watermark claims: a rule
25
+ * re-fires only when rows recorded since its watermark could extend a
26
+ * premise match, and a watermark predating the rule's current
27
+ * declaration row is stale — a re-declared rule fires from scratch
28
+ * (§24.4);
29
+ * - support is recomputed on every firing: previously-derived claims the
30
+ * rule no longer concludes are retracted `@ 0%`, and while a fired
31
+ * rule's earlier derivations are being re-established they are invisible
32
+ * to premise matching unless re-supported — so retracting a premise
33
+ * retracts the whole dependent chain, mutually-supporting cycles
34
+ * included (§24.5).
35
+ */
36
+ import { Claim, Confidence, Context, Key, Value, Verb } from '@cavelang/core';
37
+ import * as Canonical from '@cavelang/canonical';
38
+ import { noisyAndIndependent } from '@cavelang/fusion';
39
+ import { Row } from '@cavelang/store';
40
+ import { match } from '@cavelang/query';
41
+ import * as Rule from "./rule.js";
42
+ /** Attribute of rule declaration claims: `rule/<digest> HAS rule: …`. */
43
+ export const ruleAttribute = 'rule';
44
+ /** Attribute of per-rule watermark claims (§24.4). */
45
+ export const watermarkAttribute = 'derive-watermark';
46
+ /** Source context stamped on declarations and bookkeeping (like `src:cave-connect`). */
47
+ export const provenanceContext = 'src:cave-derive';
48
+ /** Declaration subject of a rule: its digest under the `rule/` scope. */
49
+ export const ruleSubject = (digest) => `rule/${digest}`;
50
+ export const defaultMinConf = 0.05;
51
+ export const defaultMaxPasses = 20;
52
+ const safeAtomRe = /^[A-Za-z0-9][A-Za-z0-9._/+-]*$/;
53
+ /** In-band vocabulary declarations are append-only and never lifecycle-retracted. */
54
+ const isDeclaration = (row) => row.verb === 'REVERSE' || row.verb === 'RENAMED-TO' ||
55
+ (row.verb === 'IS' && row.object === 'verb');
56
+ const isDeclarationClaim = (claim) => claim.verb === 'REVERSE' || claim.verb === 'RENAMED-TO' ||
57
+ (claim.verb === 'IS' && claim.payload.kind === 'relation' &&
58
+ claim.payload.object.kind === 'entity' && claim.payload.object.text === 'verb');
59
+ /** Claim key of a `subject HAS <attribute>: … @src:cave-derive` bookkeeping claim. */
60
+ const bookkeepingKey = (subject, attribute) => Key.of(Claim.of({
61
+ subject: Claim.entity(subject),
62
+ verb: 'HAS',
63
+ payload: Claim.attribute(attribute, Value.parse('x')),
64
+ contexts: [provenanceContext]
65
+ }));
66
+ const maxTx = (store) => store.db.prepare('SELECT MAX(tx) AS t FROM cave_claim').get().t ?? undefined;
67
+ /** Latest row per claim key among `rows` — the series current beliefs. */
68
+ const latestPerKey = (rows) => {
69
+ const latest = new Map();
70
+ for (const row of rows) {
71
+ const seen = latest.get(row.claim_key);
72
+ if (seen === undefined || seen.tx < row.tx) {
73
+ latest.set(row.claim_key, row);
74
+ }
75
+ }
76
+ return latest;
77
+ };
78
+ /** Appends a retraction — the row's claim at `@ 0%`, same claim key (§9.3). */
79
+ const retract = (store, row, comment) => {
80
+ store.insertResult({
81
+ claims: [{ claim: { ...store.toClaim(row), conf: 0, raw: '', comment }, line: 0 }],
82
+ edges: [],
83
+ registry: store.registry(),
84
+ problems: []
85
+ });
86
+ };
87
+ /**
88
+ * Loads every current positive rule declaration (attribute `rule`),
89
+ * parses the rule text and dedupes by digest.
90
+ */
91
+ const loadRules = (store) => {
92
+ const loaded = [];
93
+ const problems = [];
94
+ const notes = [];
95
+ const byDigest = new Map();
96
+ const declarations = store.currentBeliefs().filter(row => row.verb === 'HAS' && row.attribute === ruleAttribute && row.negated === 0 && row.conf > 0 && row.value_text !== null);
97
+ for (const row of declarations) {
98
+ const text = Row.parseValue(row.value_text).raw;
99
+ const parsed = Rule.parse(text);
100
+ if (!parsed.ok) {
101
+ problems.push({ subject: row.subject, problems: parsed.problems });
102
+ continue;
103
+ }
104
+ const seenAs = byDigest.get(parsed.rule.digest);
105
+ if (seenAs !== undefined) {
106
+ notes.push(`${row.subject} duplicates ${seenAs} — one rule, first declaration fires`);
107
+ continue;
108
+ }
109
+ byDigest.set(parsed.rule.digest, row.subject);
110
+ const label = parsed.rule.label ?? row.comment ?? undefined;
111
+ loaded.push({
112
+ rule: parsed.rule,
113
+ row,
114
+ outcome: {
115
+ subject: row.subject,
116
+ digest: parsed.rule.digest,
117
+ text: parsed.rule.text,
118
+ ...label === undefined ? {} : { label },
119
+ fired: false,
120
+ evaluations: 0,
121
+ solutions: 0,
122
+ appended: 0,
123
+ updated: 0,
124
+ unchanged: 0,
125
+ retracted: 0,
126
+ problems: []
127
+ }
128
+ });
129
+ }
130
+ return { loaded, problems, notes };
131
+ };
132
+ /**
133
+ * Could a row recorded after `mark` extend a match of one of the rule's
134
+ * premises? A *shape* test — subject/verb/object/attribute/negated plus
135
+ * context and tag membership; confidence and currency are ignored, so a
136
+ * retraction row re-fires the rules its claim used to feed (§24.5).
137
+ * Over-matching costs a harmless re-evaluation; under-matching would be a
138
+ * correctness bug — under `aliases`, entity terms are dropped from the
139
+ * test (closure membership can widen any name) and any new `ALIAS` row
140
+ * fires too.
141
+ */
142
+ const shapeMatchesSince = (store, rule, mark, aliases) => {
143
+ const registry = store.registry();
144
+ for (const premise of rule.premises) {
145
+ if (premise.kind !== 'pattern') {
146
+ continue;
147
+ }
148
+ let verb = premise.pattern.verb;
149
+ let subjectSlot = premise.pattern.subject;
150
+ let objectSlot = premise.pattern.payload.kind === 'object' ? premise.pattern.payload.object : undefined;
151
+ if (verb.kind === 'verb') {
152
+ const { primary, isInverse } = Canonical.Registry.primaryOf(registry, verb.name);
153
+ if (isInverse) {
154
+ const swapped = objectSlot ?? { kind: 'wildcard' };
155
+ objectSlot = subjectSlot;
156
+ subjectSlot = swapped;
157
+ verb = { kind: 'verb', name: primary, transitive: verb.transitive };
158
+ }
159
+ else {
160
+ verb = { kind: 'verb', name: primary, transitive: verb.transitive };
161
+ }
162
+ }
163
+ const transitive = verb.kind === 'verb' && verb.transitive;
164
+ const conditions = ['c.tx > ?'];
165
+ const params = [mark];
166
+ if (verb.kind === 'verb') {
167
+ conditions.push('c.verb = ?');
168
+ params.push(verb.name);
169
+ }
170
+ conditions.push(`c.negated = ${!transitive && premise.pattern.negated ? 1 : 0}`);
171
+ if (transitive) {
172
+ // Any new edge of the verb can extend a path — endpoints unbounded.
173
+ conditions.push('c.object IS NOT NULL');
174
+ }
175
+ else {
176
+ if (subjectSlot.kind === 'term' && !aliases) {
177
+ conditions.push('c.subject = ?');
178
+ params.push(subjectSlot.text);
179
+ }
180
+ if (objectSlot?.kind === 'term' && !aliases) {
181
+ // A date/number object also matches metric rows (value in value_text).
182
+ conditions.push('(c.object = ? OR c.value_text = ?)');
183
+ params.push(objectSlot.text, objectSlot.text);
184
+ }
185
+ if (premise.pattern.payload.kind === 'attribute') {
186
+ conditions.push('c.attribute = ?');
187
+ params.push(premise.pattern.payload.attribute);
188
+ if (premise.pattern.payload.value.kind === 'term') {
189
+ conditions.push('c.value_text = ?');
190
+ params.push(premise.pattern.payload.value.text);
191
+ }
192
+ }
193
+ }
194
+ for (const context of premise.pattern.contexts) {
195
+ conditions.push('EXISTS (SELECT 1 FROM cave_context x WHERE x.claim_id = c.id AND x.context = ?)');
196
+ params.push(context);
197
+ }
198
+ for (const tag of premise.pattern.tags) {
199
+ if (tag.value === undefined) {
200
+ conditions.push('EXISTS (SELECT 1 FROM cave_tag t WHERE t.claim_id = c.id AND t.key = ? AND t.value IS NULL)');
201
+ params.push(tag.key);
202
+ }
203
+ else {
204
+ conditions.push('EXISTS (SELECT 1 FROM cave_tag t WHERE t.claim_id = c.id AND t.key = ? AND t.value = ?)');
205
+ params.push(tag.key, tag.value);
206
+ }
207
+ }
208
+ const row = store.db.prepare(`SELECT 1 AS hit FROM cave_claim c WHERE ${conditions.join(' AND ')} LIMIT 1`)
209
+ .get(...params);
210
+ if (row !== undefined) {
211
+ return true;
212
+ }
213
+ }
214
+ if (aliases) {
215
+ const row = store.db.prepare("SELECT 1 AS hit FROM cave_claim c WHERE c.tx > ? AND c.verb = 'ALIAS' LIMIT 1").get(mark);
216
+ if (row !== undefined) {
217
+ return true;
218
+ }
219
+ }
220
+ return false;
221
+ };
222
+ /**
223
+ * Specializes a pattern under partial bindings: bound variables become
224
+ * terms, so each join step runs an ordinary CAVE-Q query. Shared with
225
+ * `@cavelang/cli/act`, whose premise evaluation is the same left-to-right
226
+ * join with parameters pre-bound (spec §25.2).
227
+ * @returns `undefined` when a verb variable is bound to a non-verb —
228
+ * no row can match.
229
+ */
230
+ export const specialize = (pattern, bindings) => {
231
+ const slot = (candidate) => candidate.kind === 'var' && bindings[candidate.name] !== undefined ?
232
+ { kind: 'term', text: bindings[candidate.name] } :
233
+ candidate;
234
+ let verb = pattern.verb;
235
+ if (verb.kind === 'var' && bindings[verb.name] !== undefined) {
236
+ const name = bindings[verb.name];
237
+ if (!Verb.isVerbToken(name)) {
238
+ return undefined;
239
+ }
240
+ verb = { kind: 'verb', name, transitive: false };
241
+ }
242
+ const payload = pattern.payload.kind === 'object' ? { kind: 'object', object: slot(pattern.payload.object) } :
243
+ pattern.payload.kind === 'attribute' ? { kind: 'attribute', attribute: pattern.payload.attribute, value: slot(pattern.payload.value) } :
244
+ pattern.payload;
245
+ return { ...pattern, subject: slot(pattern.subject), verb, payload };
246
+ };
247
+ /** Evaluates a `?var op value` constraint against the variable's binding. */
248
+ export const satisfies = (bound, op, literal) => {
249
+ if (bound === undefined) {
250
+ return false;
251
+ }
252
+ const value = Row.parseValue(bound);
253
+ if (value.num !== undefined && literal.num !== undefined) {
254
+ // A unit on the constraint demands the same unit on the value; a bare
255
+ // numeric constraint compares numbers regardless of unit.
256
+ if (literal.unit !== undefined && value.unit !== literal.unit) {
257
+ return false;
258
+ }
259
+ switch (op) {
260
+ case '=': return value.num === literal.num;
261
+ case '!=': return value.num !== literal.num;
262
+ case '>': return value.num > literal.num;
263
+ case '>=': return value.num >= literal.num;
264
+ case '<': return value.num < literal.num;
265
+ case '<=': return value.num <= literal.num;
266
+ }
267
+ }
268
+ if (op === '=') {
269
+ return value.raw === literal.raw;
270
+ }
271
+ if (op === '!=') {
272
+ return value.raw !== literal.raw;
273
+ }
274
+ return false;
275
+ };
276
+ /**
277
+ * A bound value substituted into a conclusion term slot. Stored bindings
278
+ * are formatted (`"…"`/`` `…` `` literals keep their delimiters); bare
279
+ * text that would not re-tokenize as one term is wrapped as a text
280
+ * literal — except number/date values in payload position, which the
281
+ * pipeline classifies as metrics.
282
+ */
283
+ export const boundTerm = (bound, position) => {
284
+ const term = Row.parseTerm(bound);
285
+ if (term.kind !== 'entity') {
286
+ return term;
287
+ }
288
+ if (safeAtomRe.test(term.text)) {
289
+ return term;
290
+ }
291
+ if (position === 'payload') {
292
+ const value = Value.parse(term.text);
293
+ if (value.kind === 'number' || value.kind === 'date') {
294
+ return term;
295
+ }
296
+ }
297
+ return Claim.text(term.text);
298
+ };
299
+ /**
300
+ * Instantiates the conclusion template for one solution and pushes it
301
+ * through the ordinary emit → canonicalize pipeline, so inverse verbs
302
+ * swap, entities normalize, and the stored `raw_line` is the canonical
303
+ * text (§24.2). The claim key is computed on the *stamped* claim — the
304
+ * same claim `insertResult` will key.
305
+ */
306
+ const conclude = (rule, solution, registry) => {
307
+ const template = rule.conclusion;
308
+ const term = (candidate, position) => candidate.kind === 'entity' && candidate.text.startsWith('?') && candidate.text.length > 1 ?
309
+ boundTerm(solution.bindings[candidate.text.slice(1)], position) :
310
+ candidate;
311
+ let payload = template.payload;
312
+ if (payload.kind === 'relation') {
313
+ payload = Claim.relation(term(payload.object, 'payload'));
314
+ }
315
+ else if (payload.kind === 'attribute' && payload.value.kind === 'atom' && payload.value.raw.startsWith('?')) {
316
+ payload = Claim.attribute(payload.attribute, Row.parseValue(solution.bindings[payload.value.raw.slice(1)]));
317
+ }
318
+ else if (payload.kind === 'metric' && payload.value.kind === 'atom' && payload.value.raw.startsWith('?')) {
319
+ payload = Claim.metric(Row.parseValue(solution.bindings[payload.value.raw.slice(1)]));
320
+ }
321
+ const conf = Confidence.parse(Confidence.format(noisyAndIndependent(rule.conf, solution.rows.map(row => row.conf))));
322
+ const draft = Claim.of({
323
+ subject: term(template.subject, 'subject'),
324
+ verb: template.verb,
325
+ negated: template.negated,
326
+ payload,
327
+ contexts: template.meta.contexts,
328
+ tags: template.meta.tags,
329
+ importance: template.meta.importance,
330
+ conf,
331
+ ...template.meta.comment === undefined ? {} : { comment: template.meta.comment }
332
+ });
333
+ const result = Canonical.canonicalizeText(Canonical.emitClaim(draft), registry);
334
+ const claim = result.claims[0]?.claim;
335
+ if (result.problems.length > 0 || claim === undefined) {
336
+ const detail = result.problems.map(problem => problem.message).join('; ');
337
+ return { problem: `conclusion ${JSON.stringify(Canonical.emitClaim(draft))} did not canonicalize${detail === '' ? '' : ` — ${detail}`}` };
338
+ }
339
+ // Lifecycle stamp (spec §9.5, §24.3): applied even when the template
340
+ // names its own `src:` — suspension and `--retract` find derived rows
341
+ // by this context, so an authored source must not displace it.
342
+ const stamp = Context.source(ruleSubject(rule.digest));
343
+ const stamped = claim.contexts.includes(stamp) ?
344
+ claim :
345
+ { ...claim, contexts: [...claim.contexts, stamp] };
346
+ return { conclusion: { key: Key.of(stamped), claim, conf: stamped.conf, rows: solution.rows } };
347
+ };
348
+ const rollback = Symbol('cave-derive dry run');
349
+ /**
350
+ * Fires the store's rules to fixpoint (§24.2). See the module doc for the
351
+ * semantics; `dryRun` computes the same report inside a rolled-back
352
+ * transaction.
353
+ */
354
+ export const derive = (store, options = {}) => {
355
+ const minConf = options.minConf ?? defaultMinConf;
356
+ const maxPasses = options.maxPasses ?? defaultMaxPasses;
357
+ const aliases = options.aliases === true;
358
+ const { loaded, problems, notes } = loadRules(store);
359
+ let passes = 0;
360
+ const supported = new Set();
361
+ /** Suspended rows (§24.5): a fired rule's prior derivations, by row id. */
362
+ const suspended = new Map();
363
+ const fired = new Set();
364
+ /** Per-rule scan mark: rows at or before it are fully accounted for. */
365
+ const marks = new Map();
366
+ const storedMarks = new Map();
367
+ let complete = true;
368
+ for (const { rule, row } of loaded) {
369
+ const watermark = store.currentBelief(bookkeepingKey(ruleSubject(rule.digest), watermarkAttribute));
370
+ // A watermark is trusted only when it postdates the current
371
+ // declaration row: retracting and re-declaring a rule keeps its
372
+ // digest — and so its watermark claim key — while the conclusions
373
+ // were retracted with it, so an older watermark would skip every
374
+ // pre-existing premise (BUGS.md stale-rule-watermark). A re-declared
375
+ // rule fires from scratch.
376
+ const stored = watermark !== undefined && watermark.conf > 0 && watermark.tx > row.tx ?
377
+ watermark.value_text ?? undefined :
378
+ undefined;
379
+ storedMarks.set(rule.digest, stored);
380
+ marks.set(rule.digest, options.full === true ? undefined : stored);
381
+ }
382
+ const suspend = (entry) => {
383
+ const rows = store.byProvenance('run', ruleSubject(entry.rule.digest));
384
+ for (const row of latestPerKey(rows).values()) {
385
+ if (row.conf > 0 && !isDeclaration(row)) {
386
+ suspended.set(row.id, { row, outcome: entry.outcome });
387
+ }
388
+ }
389
+ };
390
+ /** Premise matches, minus suspended rows that have not been re-supported. */
391
+ const matchPremise = (pattern) => match(store, pattern, { aliases }).filter(entry => entry.row === undefined || !suspended.has(entry.row.id) || supported.has(entry.row.claim_key));
392
+ const evaluate = (entry) => {
393
+ const { rule, row, outcome } = entry;
394
+ let progress = false;
395
+ let solutions = [{ bindings: {}, rows: [] }];
396
+ for (const premise of rule.premises) {
397
+ if (premise.kind === 'constraint') {
398
+ solutions = solutions.filter(solution => satisfies(solution.bindings[premise.variable], premise.op, premise.value));
399
+ }
400
+ else {
401
+ solutions = solutions.flatMap(solution => {
402
+ const pattern = specialize(premise.pattern, solution.bindings);
403
+ if (pattern === undefined) {
404
+ return [];
405
+ }
406
+ return matchPremise(pattern).map(found => ({
407
+ bindings: { ...solution.bindings, ...found.bindings },
408
+ rows: found.row === undefined ? solution.rows : [...solution.rows, found.row]
409
+ }));
410
+ });
411
+ }
412
+ if (solutions.length === 0) {
413
+ break;
414
+ }
415
+ }
416
+ outcome.evaluations += 1;
417
+ outcome.solutions = solutions.length;
418
+ /** Strongest derivation per conclusion key (§24.2). */
419
+ const best = new Map();
420
+ for (const solution of solutions) {
421
+ const { conclusion, problem } = conclude(rule, solution, store.registry());
422
+ if (problem !== undefined) {
423
+ if (!outcome.problems.includes(problem)) {
424
+ outcome.problems.push(problem);
425
+ }
426
+ continue;
427
+ }
428
+ const seen = best.get(conclusion.key);
429
+ if (seen === undefined || conclusion.conf > seen.conf) {
430
+ best.set(conclusion.key, conclusion);
431
+ }
432
+ }
433
+ for (const conclusion of best.values()) {
434
+ if (conclusion.conf < minConf) {
435
+ continue;
436
+ }
437
+ if (!supported.has(conclusion.key)) {
438
+ supported.add(conclusion.key);
439
+ progress = true;
440
+ }
441
+ const current = store.currentBelief(conclusion.key);
442
+ const columns = Row.toColumns(conclusion.claim);
443
+ if (current !== undefined && current.conf > 0 &&
444
+ Math.abs(current.conf - conclusion.conf) < 1e-9 && current.value_text === columns.valueText) {
445
+ outcome.unchanged += 1;
446
+ continue;
447
+ }
448
+ const inserted = store.insertResult({ claims: [{ claim: conclusion.claim, line: 0 }], edges: [], registry: store.registry(), problems: [] }, { source: ruleSubject(rule.digest), lifecycle: true });
449
+ // `conclude` returns the claim rather than its one-line registry
450
+ // result. Replay all stored declarations after a generated vocabulary
451
+ // claim so later rules and fixpoint passes see it immediately.
452
+ if (isDeclarationClaim(conclusion.claim)) {
453
+ store.reloadRegistry();
454
+ }
455
+ const id = inserted.ids[0];
456
+ const premiseIds = [...new Set(conclusion.rows.map(premiseRow => premiseRow.id))];
457
+ store.appendEdges([
458
+ ...premiseIds.map(childId => ({ parentId: id, role: 'BECAUSE', childId })),
459
+ { parentId: id, role: 'VIA', childId: row.id }
460
+ ]);
461
+ if (current === undefined || current.conf === 0) {
462
+ outcome.appended += 1;
463
+ }
464
+ else {
465
+ outcome.updated += 1;
466
+ }
467
+ progress = true;
468
+ }
469
+ return progress;
470
+ };
471
+ const run = () => {
472
+ const truncate = () => {
473
+ complete = false;
474
+ notes.push(`stopped at ${maxPasses} passes before reaching a fixpoint — no unsupported conclusions were retracted and no watermarks were advanced; re-run to continue, or raise maxPasses`);
475
+ };
476
+ for (;;) {
477
+ // Pass loop: evaluate until no rule writes or extends support.
478
+ let quiescent = false;
479
+ while (!quiescent && passes < maxPasses) {
480
+ passes += 1;
481
+ let progress = false;
482
+ for (const entry of loaded) {
483
+ const mark = marks.get(entry.rule.digest);
484
+ const now = maxTx(store);
485
+ if (mark !== undefined && !shapeMatchesSince(store, entry.rule, mark, aliases)) {
486
+ continue;
487
+ }
488
+ if (!fired.has(entry.rule.digest)) {
489
+ fired.add(entry.rule.digest);
490
+ entry.outcome.fired = true;
491
+ suspend(entry);
492
+ }
493
+ if (evaluate(entry)) {
494
+ progress = true;
495
+ }
496
+ marks.set(entry.rule.digest, now);
497
+ }
498
+ quiescent = !progress;
499
+ }
500
+ // Support is incomplete when the pass guard stops active evaluation.
501
+ // Retraction would turn every not-yet-revisited suspended row into a
502
+ // false negative, so leave both rows and watermarks untouched.
503
+ if (!quiescent) {
504
+ truncate();
505
+ return;
506
+ }
507
+ // Retraction phase (§24.5): suspended rows never re-supported lost
508
+ // their premises. Retraction rows are ordinary appends — the loop
509
+ // re-enters so dependent rules see them and cascade.
510
+ let retracted = false;
511
+ for (const [id, { row, outcome }] of suspended) {
512
+ if (supported.has(row.claim_key)) {
513
+ continue;
514
+ }
515
+ retract(store, row, 'retracted: premises no longer hold');
516
+ suspended.delete(id);
517
+ outcome.retracted += 1;
518
+ retracted = true;
519
+ }
520
+ if (!retracted) {
521
+ return;
522
+ }
523
+ if (passes >= maxPasses) {
524
+ truncate();
525
+ return;
526
+ }
527
+ }
528
+ };
529
+ const finalize = () => {
530
+ if (!complete)
531
+ return;
532
+ for (const entry of loaded) {
533
+ if (!fired.has(entry.rule.digest)) {
534
+ continue;
535
+ }
536
+ const mark = marks.get(entry.rule.digest);
537
+ if (mark === undefined || mark === storedMarks.get(entry.rule.digest)) {
538
+ continue;
539
+ }
540
+ store.ingest(`${ruleSubject(entry.rule.digest)} HAS ${watermarkAttribute}: ${mark} @${provenanceContext}`);
541
+ }
542
+ };
543
+ if (options.dryRun === true) {
544
+ try {
545
+ store.transaction(() => {
546
+ run();
547
+ throw rollback;
548
+ });
549
+ }
550
+ catch (error) {
551
+ if (error !== rollback) {
552
+ throw error;
553
+ }
554
+ }
555
+ }
556
+ else {
557
+ store.transaction(() => {
558
+ run();
559
+ finalize();
560
+ });
561
+ }
562
+ const outcomes = loaded.map(entry => entry.outcome);
563
+ return {
564
+ rules: outcomes,
565
+ problems,
566
+ complete,
567
+ passes,
568
+ appended: outcomes.reduce((sum, outcome) => sum + outcome.appended, 0),
569
+ updated: outcomes.reduce((sum, outcome) => sum + outcome.updated, 0),
570
+ unchanged: outcomes.reduce((sum, outcome) => sum + outcome.unchanged, 0),
571
+ retracted: outcomes.reduce((sum, outcome) => sum + outcome.retracted, 0),
572
+ notes
573
+ };
574
+ };
575
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC7E,OAAO,KAAK,SAAS,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,GAAG,EAAc,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAgB,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA;AAEnC,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAA;AAEpD,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAA;AAElD,yEAAyE;AACzE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CACpD,QAAQ,MAAM,EAAE,CAAA;AAelB,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AA2ClC,MAAM,UAAU,GAAG,gCAAgC,CAAA;AAEnD,qFAAqF;AACrF,MAAM,aAAa,GAAG,CAAC,GAAU,EAAW,EAAE,CAC5C,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;IACnD,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAA;AAE9C,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAW,EAAE,CACrD,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;IACvD,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;QACvD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAEnF,sFAAsF;AACtF,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,SAAiB,EAAU,EAAE,CACpE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAC9B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,QAAQ,EAAE,CAAC,iBAAiB,CAAC;CAC9B,CAAC,CAAC,CAAA;AAEL,MAAM,KAAK,GAAG,CAAC,KAAY,EAAsB,EAAE,CAChD,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAA2B,CAAC,CAAC,IAAI,SAAS,CAAA;AAExG,0EAA0E;AAC1E,MAAM,YAAY,GAAG,CAAC,IAAsB,EAAsB,EAAE;IAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAA;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,+EAA+E;AAC/E,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,GAAU,EAAE,OAAe,EAAQ,EAAE;IAClE,KAAK,CAAC,YAAY,CAAC;QACjB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAClF,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QAC1B,QAAQ,EAAE,EAAE;KACb,CAAC,CAAA;AACJ,CAAC,CAAA;AASD;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,KAAY,EAAkE,EAAE;IACjG,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACvD,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,SAAS,KAAK,aAAa,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAAA;IACxH,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAW,CAAC,CAAC,GAAG,CAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;YAClE,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,eAAe,MAAM,sCAAsC,CAAC,CAAA;YACrF,SAAQ;QACV,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;QAC3D,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG;YACH,OAAO,EAAE;gBACP,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;gBAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;gBACtB,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;gBACvC,KAAK,EAAE,KAAK;gBACZ,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AACpC,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,IAAY,EAAE,IAAY,EAAE,OAAgB,EAAW,EAAE;IAChG,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;QAC/B,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAA;QACzC,IAAI,UAAU,GACZ,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;QACxF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;YAChF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAA;gBAC3D,UAAU,GAAG,WAAW,CAAA;gBACxB,WAAW,GAAG,OAAO,CAAA;gBACrB,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAA;YACrE,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAA;YACrE,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAA;QAC1D,MAAM,UAAU,GAAa,CAAC,UAAU,CAAC,CAAA;QACzC,MAAM,MAAM,GAAwB,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAChF,IAAI,UAAU,EAAE,CAAC;YACf,oEAAoE;YACpE,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5C,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gBAChC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAC/B,CAAC;YACD,IAAI,UAAU,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC5C,uEAAuE;gBACvE,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;gBACrD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;YAC/C,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACjD,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAClC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBAC9C,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAClD,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;oBACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC/C,UAAU,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;YAClG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtB,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5B,UAAU,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAA;gBAC9G,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,yFAAyF,CAAC,CAAA;gBAC1G,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;aACxG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;QACjB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvH,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAkB,EAAE,QAA0C,EAAyB,EAAE;IAClH,MAAM,IAAI,GAAG,CAAC,SAAuB,EAAgB,EAAE,CACrD,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;QAClE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,CAAC,CAAC;QACnD,SAAS,CAAA;IACb,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAE,CAAA;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAClD,CAAC;IACD,MAAM,OAAO,GACX,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxI,OAAO,CAAC,OAAO,CAAA;IACjB,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AACtE,CAAC,CAAA;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAyB,EAAE,EAAqB,EAAE,OAAgB,EAAW,EAAE;IACvG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACnC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACzD,sEAAsE;QACtE,0DAA0D;QAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAA;QACd,CAAC;QACD,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAA;YAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAA;YAC3C,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACxC,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;YAC1C,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;YACxC,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;QAC5C,CAAC;IACH,CAAC;IACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAA;IAClC,CAAC;IACD,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAA;IAClC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,QAA+B,EAAc,EAAE;IACtF,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACrD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC,CAAA;AAcD;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CACf,IAAY,EACZ,QAAkB,EAClB,QAA8B,EACiB,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAA;IAChC,MAAM,IAAI,GAAG,CAAC,SAAqB,EAAE,QAA+B,EAAc,EAAE,CAClF,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1F,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClE,SAAS,CAAA;IACb,IAAI,OAAO,GAAkB,QAAQ,CAAC,OAAO,CAAA;IAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAC3D,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9G,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;IAC9G,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3G,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;IACxF,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAC7C,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACnE,CAAE,CAAA;IACH,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QAC1C,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,OAAO;QACP,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;QAChC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;QACxB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU;QACpC,IAAI;QACJ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;KACjF,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAA;IACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzE,OAAO,EAAE,OAAO,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,wBAAwB,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,EAAE,EAAE,CAAA;IAC3I,CAAC;IACD,qEAAqE;IACrE,sEAAsE;IACtE,+DAA+D;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,CAAC;QACP,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAA;IACpD,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAA;AACjG,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,UAAyB,EAAE,EAAgB,EAAE;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAA;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,CAAA;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAA;IACxC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAEpD,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgD,CAAA;IACzE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAA;IACnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAA;IACzD,IAAI,QAAQ,GAAG,IAAI,CAAA;IAEnB,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAA;QACnG,4DAA4D;QAC5D,gEAAgE;QAChE,kEAAkE;QAClE,iEAAiE;QACjE,qEAAqE;QACrE,2BAA2B;QAC3B,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YACrF,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;YACnC,SAAS,CAAA;QACX,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACpC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,KAAa,EAAQ,EAAE;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QACtE,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,6EAA6E;IAC7E,MAAM,YAAY,GAAG,CAAC,OAAkB,EAAiE,EAAE,CACzG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChD,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;IAElG,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAW,EAAE;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;QACpC,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,SAAS,GAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QACxD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAClC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;YACrH,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACvC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAC9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;wBAC1B,OAAO,EAAE,CAAA;oBACX,CAAC;oBACD,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACzC,QAAQ,EAAE,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;wBACrD,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;qBAC9E,CAAC,CAAC,CAAA;gBACL,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAK;YACP,CAAC;QACH,CAAC;QACD,OAAO,CAAC,WAAW,IAAI,CAAC,CAAA;QACxB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAA;QAEpC,uDAAuD;QACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsB,CAAA;QAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC1E,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAChC,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAW,CAAC,GAAG,CAAC,CAAA;YACtC,IAAI,IAAI,KAAK,SAAS,IAAI,UAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,UAAW,CAAC,GAAG,EAAE,UAAW,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,UAAU,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;gBAC9B,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;gBAC7B,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YACnD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YAC/C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;gBACzC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;gBAChG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA;gBACtB,SAAQ;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CACjC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EACvG,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CACtD,CAAA;YACD,iEAAiE;YACjE,sEAAsE;YACtE,+DAA+D;YAC/D,IAAI,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,cAAc,EAAE,CAAA;YACxB,CAAC;YACD,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;YAC3B,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACjF,KAAK,CAAC,WAAW,CAAC;gBAChB,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnF,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAc,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE;aACxD,CAAC,CAAA;YACF,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,IAAI,CAAC,CAAA;YACtB,CAAC;YACD,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,GAAS,EAAE;QACrB,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,QAAQ,GAAG,KAAK,CAAA;YAChB,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,wJAAwJ,CAAC,CAAA;QAC7L,CAAC,CAAA;QACD,SAAS,CAAC;YACR,+DAA+D;YAC/D,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,OAAO,CAAC,SAAS,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;gBACxC,MAAM,IAAI,CAAC,CAAA;gBACX,IAAI,QAAQ,GAAG,KAAK,CAAA;gBACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;oBACxB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC/E,SAAQ;oBACV,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBAC5B,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;wBAC1B,OAAO,CAAC,KAAK,CAAC,CAAA;oBAChB,CAAC;oBACD,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,QAAQ,GAAG,IAAI,CAAA;oBACjB,CAAC;oBACD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACnC,CAAC;gBACD,SAAS,GAAG,CAAC,QAAQ,CAAA;YACvB,CAAC;YACD,qEAAqE;YACrE,qEAAqE;YACrE,+DAA+D;YAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,QAAQ,EAAE,CAAA;gBACV,OAAM;YACR,CAAC;YACD,mEAAmE;YACnE,kEAAkE;YAClE,qDAAqD;YACrD,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,SAAQ;gBACV,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,oCAAoC,CAAC,CAAA;gBACzD,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACpB,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA;gBACtB,SAAS,GAAG,IAAI,CAAA;YAClB,CAAC;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAM;YACR,CAAC;YACD,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;gBACxB,QAAQ,EAAE,CAAA;gBACV,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,SAAQ;YACV,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,kBAAkB,KAAK,IAAI,KAAK,iBAAiB,EAAE,CAAC,CAAA;QAC5G,CAAC;IACH,CAAC,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;gBACrB,GAAG,EAAE,CAAA;gBACL,MAAM,QAAQ,CAAA;YAChB,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACrB,GAAG,EAAE,CAAA;YACL,QAAQ,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACnD,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACxE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QACxE,KAAK;KACN,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `@cavelang/cli/rules` — the CAVE rules engine (spec §24): forward-chaining
3
+ * `premises => conclusion` rules over current beliefs.
4
+ *
5
+ * ```ts
6
+ * import { declareRules, derive } from '@cavelang/cli/rules'
7
+ *
8
+ * declareRules(store, '?x NEEDS ?y, ?y NEEDS ?z => ?x NEEDS ?z')
9
+ * derive(store)
10
+ * // appends e.g. `a NEEDS c @src:rule/9f30ac9be4dd`, linked BECAUSE to the
11
+ * // two premise rows and VIA to the rule's declaration row
12
+ * ```
13
+ *
14
+ * Derived confidence is noisy-AND (`@cavelang/fusion`, independence
15
+ * explicit); re-runs are idempotent and incremental by tx watermark;
16
+ * premise retraction retracts dependents (§24.4–§24.5).
17
+ */
18
+ export * as Rule from './rule.ts';
19
+ export { boundTerm, derive, defaultMinConf, defaultMaxPasses, provenanceContext, ruleAttribute, ruleSubject, satisfies, specialize, watermarkAttribute } from './engine.ts';
20
+ export type { DeriveOptions, DeriveReport, RuleOutcome, RuleProblem } from './engine.ts';
21
+ export { declareRules, listRules, retractRule } from './declare.ts';
22
+ export type { Declaration, ListedRule, Retraction } from './declare.ts';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC3K,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `@cavelang/cli/rules` — the CAVE rules engine (spec §24): forward-chaining
3
+ * `premises => conclusion` rules over current beliefs.
4
+ *
5
+ * ```ts
6
+ * import { declareRules, derive } from '@cavelang/cli/rules'
7
+ *
8
+ * declareRules(store, '?x NEEDS ?y, ?y NEEDS ?z => ?x NEEDS ?z')
9
+ * derive(store)
10
+ * // appends e.g. `a NEEDS c @src:rule/9f30ac9be4dd`, linked BECAUSE to the
11
+ * // two premise rows and VIA to the rule's declaration row
12
+ * ```
13
+ *
14
+ * Derived confidence is noisy-AND (`@cavelang/fusion`, independence
15
+ * explicit); re-runs are idempotent and incremental by tx watermark;
16
+ * premise retraction retracts dependents (§24.4–§24.5).
17
+ */
18
+ export * as Rule from "./rule.js";
19
+ export { boundTerm, derive, defaultMinConf, defaultMaxPasses, provenanceContext, ruleAttribute, ruleSubject, satisfies, specialize, watermarkAttribute } from "./engine.js";
20
+ export { declareRules, listRules, retractRule } from "./declare.js";
21
+ //# sourceMappingURL=index.js.map