aontu 0.52.0 → 0.53.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 (273) hide show
  1. package/README.md +88 -0
  2. package/bin/aontu-mcp.js +4 -0
  3. package/dist/agentsmd.d.ts +16 -0
  4. package/dist/agentsmd.js +107 -0
  5. package/dist/agentsmd.js.map +1 -0
  6. package/dist/aontu.d.ts +14 -3
  7. package/dist/aontu.js +145 -4
  8. package/dist/aontu.js.map +1 -1
  9. package/dist/cli.d.ts +44 -1
  10. package/dist/cli.js +2401 -44
  11. package/dist/cli.js.map +1 -1
  12. package/dist/ctx.d.ts +16 -0
  13. package/dist/ctx.js +44 -0
  14. package/dist/ctx.js.map +1 -1
  15. package/dist/diff.d.ts +22 -0
  16. package/dist/diff.js +141 -0
  17. package/dist/diff.js.map +1 -0
  18. package/dist/err.d.ts +3 -1
  19. package/dist/err.js +48 -8
  20. package/dist/err.js.map +1 -1
  21. package/dist/graph.d.ts +16 -0
  22. package/dist/graph.js +73 -0
  23. package/dist/graph.js.map +1 -0
  24. package/dist/hcanon.d.ts +3 -0
  25. package/dist/hcanon.js +146 -0
  26. package/dist/hcanon.js.map +1 -0
  27. package/dist/hints.js +223 -5
  28. package/dist/hints.js.map +1 -1
  29. package/dist/jsonschema.d.ts +20 -0
  30. package/dist/jsonschema.js +391 -0
  31. package/dist/jsonschema.js.map +1 -0
  32. package/dist/lang.js +698 -35
  33. package/dist/lang.js.map +1 -1
  34. package/dist/lsp.d.ts +9 -2
  35. package/dist/lsp.js +262 -46
  36. package/dist/lsp.js.map +1 -1
  37. package/dist/mcp-server.d.ts +20 -0
  38. package/dist/mcp-server.js +147 -0
  39. package/dist/mcp-server.js.map +1 -0
  40. package/dist/mcp.d.ts +42 -0
  41. package/dist/mcp.js +814 -0
  42. package/dist/mcp.js.map +1 -0
  43. package/dist/mod-tool.d.ts +58 -0
  44. package/dist/mod-tool.js +498 -0
  45. package/dist/mod-tool.js.map +1 -0
  46. package/dist/mod.d.ts +31 -0
  47. package/dist/mod.js +250 -0
  48. package/dist/mod.js.map +1 -0
  49. package/dist/patch.d.ts +44 -0
  50. package/dist/patch.js +506 -0
  51. package/dist/patch.js.map +1 -0
  52. package/dist/provenance.d.ts +40 -0
  53. package/dist/provenance.js +335 -0
  54. package/dist/provenance.js.map +1 -0
  55. package/dist/query.d.ts +27 -0
  56. package/dist/query.js +294 -0
  57. package/dist/query.js.map +1 -0
  58. package/dist/reach.d.ts +14 -0
  59. package/dist/reach.js +140 -0
  60. package/dist/reach.js.map +1 -0
  61. package/dist/relation.d.ts +19 -0
  62. package/dist/relation.js +305 -0
  63. package/dist/relation.js.map +1 -0
  64. package/dist/report-sarif.d.ts +14 -0
  65. package/dist/report-sarif.js +102 -0
  66. package/dist/report-sarif.js.map +1 -0
  67. package/dist/site.d.ts +4 -0
  68. package/dist/site.js +31 -0
  69. package/dist/site.js.map +1 -1
  70. package/dist/std.d.ts +1 -0
  71. package/dist/std.js +73 -0
  72. package/dist/std.js.map +1 -0
  73. package/dist/subsume.d.ts +39 -0
  74. package/dist/subsume.js +526 -0
  75. package/dist/subsume.js.map +1 -0
  76. package/dist/trim.d.ts +19 -0
  77. package/dist/trim.js +155 -0
  78. package/dist/trim.js.map +1 -0
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. package/dist/type.d.ts +17 -1
  81. package/dist/type.js.map +1 -1
  82. package/dist/unify.d.ts +3 -1
  83. package/dist/unify.js +287 -18
  84. package/dist/unify.js.map +1 -1
  85. package/dist/utility.d.ts +9 -1
  86. package/dist/utility.js +122 -1
  87. package/dist/utility.js.map +1 -1
  88. package/dist/val/AggFuncVal.d.ts +33 -0
  89. package/dist/val/AggFuncVal.js +202 -0
  90. package/dist/val/AggFuncVal.js.map +1 -0
  91. package/dist/val/ArithFuncVal.d.ts +31 -0
  92. package/dist/val/ArithFuncVal.js +62 -0
  93. package/dist/val/ArithFuncVal.js.map +1 -0
  94. package/dist/val/BagVal.d.ts +5 -0
  95. package/dist/val/BagVal.js +96 -5
  96. package/dist/val/BagVal.js.map +1 -1
  97. package/dist/val/CloseFuncVal.js +9 -1
  98. package/dist/val/CloseFuncVal.js.map +1 -1
  99. package/dist/val/ConjunctVal.d.ts +1 -1
  100. package/dist/val/ConjunctVal.js +19 -0
  101. package/dist/val/ConjunctVal.js.map +1 -1
  102. package/dist/val/ConstraintVal.d.ts +48 -1
  103. package/dist/val/ConstraintVal.js +1501 -110
  104. package/dist/val/ConstraintVal.js.map +1 -1
  105. package/dist/val/CopyFuncVal.d.ts +1 -2
  106. package/dist/val/CopyFuncVal.js +7 -0
  107. package/dist/val/CopyFuncVal.js.map +1 -1
  108. package/dist/val/Decimal.d.ts +1 -0
  109. package/dist/val/Decimal.js +13 -0
  110. package/dist/val/Decimal.js.map +1 -1
  111. package/dist/val/DeprecateFuncVal.d.ts +11 -0
  112. package/dist/val/DeprecateFuncVal.js +47 -0
  113. package/dist/val/DeprecateFuncVal.js.map +1 -0
  114. package/dist/val/DisjunctVal.js +130 -21
  115. package/dist/val/DisjunctVal.js.map +1 -1
  116. package/dist/val/EachFuncVal.d.ts +15 -0
  117. package/dist/val/EachFuncVal.js +75 -0
  118. package/dist/val/EachFuncVal.js.map +1 -0
  119. package/dist/val/ExpectVal.d.ts +1 -0
  120. package/dist/val/ExpectVal.js +41 -4
  121. package/dist/val/ExpectVal.js.map +1 -1
  122. package/dist/val/FeatureVal.js +1 -1
  123. package/dist/val/FeatureVal.js.map +1 -1
  124. package/dist/val/FilterFuncVal.d.ts +15 -0
  125. package/dist/val/FilterFuncVal.js +91 -0
  126. package/dist/val/FilterFuncVal.js.map +1 -0
  127. package/dist/val/FuncBaseVal.d.ts +6 -1
  128. package/dist/val/FuncBaseVal.js +178 -2
  129. package/dist/val/FuncBaseVal.js.map +1 -1
  130. package/dist/val/HideFuncVal.js.map +1 -1
  131. package/dist/val/IdFuncVal.d.ts +13 -0
  132. package/dist/val/IdFuncVal.js +54 -0
  133. package/dist/val/IdFuncVal.js.map +1 -0
  134. package/dist/val/JunctionVal.js +7 -1
  135. package/dist/val/JunctionVal.js.map +1 -1
  136. package/dist/val/KeyFuncVal.d.ts +1 -1
  137. package/dist/val/KeyFuncVal.js +38 -30
  138. package/dist/val/KeyFuncVal.js.map +1 -1
  139. package/dist/val/ListVal.js +117 -17
  140. package/dist/val/ListVal.js.map +1 -1
  141. package/dist/val/LowerFuncVal.js.map +1 -1
  142. package/dist/val/MapVal.js +102 -8
  143. package/dist/val/MapVal.js.map +1 -1
  144. package/dist/val/MatchFuncVal.d.ts +15 -0
  145. package/dist/val/MatchFuncVal.js +107 -0
  146. package/dist/val/MatchFuncVal.js.map +1 -0
  147. package/dist/val/MoveFuncVal.js.map +1 -1
  148. package/dist/val/NilVal.js +24 -0
  149. package/dist/val/NilVal.js.map +1 -1
  150. package/dist/val/OpBaseVal.d.ts +1 -1
  151. package/dist/val/OpBaseVal.js +24 -2
  152. package/dist/val/OpBaseVal.js.map +1 -1
  153. package/dist/val/OpenFuncVal.js +4 -1
  154. package/dist/val/OpenFuncVal.js.map +1 -1
  155. package/dist/val/PackFuncVal.d.ts +15 -0
  156. package/dist/val/PackFuncVal.js +108 -0
  157. package/dist/val/PackFuncVal.js.map +1 -0
  158. package/dist/val/PathFuncVal.js.map +1 -1
  159. package/dist/val/PlaceVal.d.ts +13 -0
  160. package/dist/val/PlaceVal.js +131 -0
  161. package/dist/val/PlaceVal.js.map +1 -0
  162. package/dist/val/PlusOpVal.js +11 -2
  163. package/dist/val/PlusOpVal.js.map +1 -1
  164. package/dist/val/PrefFuncVal.js.map +1 -1
  165. package/dist/val/PrefVal.d.ts +2 -2
  166. package/dist/val/PrefVal.js +78 -23
  167. package/dist/val/PrefVal.js.map +1 -1
  168. package/dist/val/RefVal.d.ts +1 -1
  169. package/dist/val/RefVal.js +158 -30
  170. package/dist/val/RefVal.js.map +1 -1
  171. package/dist/val/ReferFuncVal.d.ts +36 -0
  172. package/dist/val/ReferFuncVal.js +303 -0
  173. package/dist/val/ReferFuncVal.js.map +1 -0
  174. package/dist/val/ScalarKindVal.d.ts +1 -2
  175. package/dist/val/ScalarKindVal.js +0 -11
  176. package/dist/val/ScalarKindVal.js.map +1 -1
  177. package/dist/val/TopVal.js.map +1 -1
  178. package/dist/val/TypeFuncVal.js.map +1 -1
  179. package/dist/val/UpperFuncVal.js.map +1 -1
  180. package/dist/val/Val.d.ts +9 -2
  181. package/dist/val/Val.js +150 -4
  182. package/dist/val/Val.js.map +1 -1
  183. package/dist/val/VarVal.js.map +1 -1
  184. package/dist/val/arith.d.ts +6 -0
  185. package/dist/val/arith.js +170 -0
  186. package/dist/val/arith.js.map +1 -0
  187. package/dist/vet.d.ts +45 -0
  188. package/dist/vet.js +776 -0
  189. package/dist/vet.js.map +1 -0
  190. package/dist/walk.d.ts +2 -0
  191. package/dist/walk.js +91 -0
  192. package/dist/walk.js.map +1 -0
  193. package/grammar/aontu.gbnf +130 -0
  194. package/grammar/aontu.lark +113 -0
  195. package/package.json +30 -15
  196. package/skill/SKILL.md +37 -0
  197. package/skill/error-codes.md +62 -0
  198. package/skill/examples.md +99 -0
  199. package/skill/grammar-card.md +57 -0
  200. package/src/agentsmd.ts +135 -0
  201. package/src/aontu.ts +192 -4
  202. package/src/cli.ts +2858 -71
  203. package/src/ctx.ts +81 -0
  204. package/src/diff.ts +196 -0
  205. package/src/err.ts +52 -8
  206. package/src/graph.ts +135 -0
  207. package/src/hcanon.ts +169 -0
  208. package/src/hints.ts +271 -5
  209. package/src/jsonschema.ts +511 -0
  210. package/src/lang.ts +779 -37
  211. package/src/lsp.ts +281 -47
  212. package/src/mcp-server.ts +187 -0
  213. package/src/mcp.ts +993 -0
  214. package/src/mod-tool.ts +679 -0
  215. package/src/mod.ts +344 -0
  216. package/src/patch.ts +624 -0
  217. package/src/provenance.ts +430 -0
  218. package/src/query.ts +379 -0
  219. package/src/reach.ts +184 -0
  220. package/src/relation.ts +395 -0
  221. package/src/report-sarif.ts +137 -0
  222. package/src/site.ts +36 -1
  223. package/src/std.ts +73 -0
  224. package/src/subsume.ts +690 -0
  225. package/src/trim.ts +195 -0
  226. package/src/tsconfig.json +10 -4
  227. package/src/type.ts +51 -2
  228. package/src/unify.ts +311 -16
  229. package/src/utility.ts +139 -1
  230. package/src/val/AggFuncVal.ts +319 -0
  231. package/src/val/ArithFuncVal.ts +108 -0
  232. package/src/val/BagVal.ts +101 -4
  233. package/src/val/CloseFuncVal.ts +9 -1
  234. package/src/val/ConjunctVal.ts +20 -0
  235. package/src/val/ConstraintVal.ts +1699 -116
  236. package/src/val/CopyFuncVal.ts +7 -1
  237. package/src/val/Decimal.ts +15 -0
  238. package/src/val/DeprecateFuncVal.ts +84 -0
  239. package/src/val/DisjunctVal.ts +139 -28
  240. package/src/val/EachFuncVal.ts +133 -0
  241. package/src/val/ExpectVal.ts +43 -6
  242. package/src/val/FeatureVal.ts +1 -1
  243. package/src/val/FilterFuncVal.ts +154 -0
  244. package/src/val/FuncBaseVal.ts +200 -3
  245. package/src/val/HideFuncVal.ts +0 -2
  246. package/src/val/IdFuncVal.ts +91 -0
  247. package/src/val/JunctionVal.ts +7 -1
  248. package/src/val/KeyFuncVal.ts +39 -35
  249. package/src/val/ListVal.ts +125 -18
  250. package/src/val/LowerFuncVal.ts +0 -1
  251. package/src/val/MapVal.ts +110 -8
  252. package/src/val/MatchFuncVal.ts +176 -0
  253. package/src/val/MoveFuncVal.ts +0 -2
  254. package/src/val/NilVal.ts +25 -0
  255. package/src/val/OpBaseVal.ts +26 -3
  256. package/src/val/OpenFuncVal.ts +4 -2
  257. package/src/val/PackFuncVal.ts +175 -0
  258. package/src/val/PathFuncVal.ts +0 -1
  259. package/src/val/PlaceVal.ts +193 -0
  260. package/src/val/PlusOpVal.ts +11 -2
  261. package/src/val/PrefFuncVal.ts +0 -1
  262. package/src/val/PrefVal.ts +79 -36
  263. package/src/val/RefVal.ts +163 -30
  264. package/src/val/ReferFuncVal.ts +387 -0
  265. package/src/val/ScalarKindVal.ts +0 -13
  266. package/src/val/TopVal.ts +0 -1
  267. package/src/val/TypeFuncVal.ts +0 -2
  268. package/src/val/UpperFuncVal.ts +0 -1
  269. package/src/val/Val.ts +213 -3
  270. package/src/val/VarVal.ts +0 -1
  271. package/src/val/arith.ts +316 -0
  272. package/src/vet.ts +992 -0
  273. package/src/walk.ts +99 -0
@@ -0,0 +1,526 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.effectiveDefault = effectiveDefault;
5
+ exports.subsumeNode = subsumeNode;
6
+ exports.subsume = subsume;
7
+ const aontu_1 = require("./aontu");
8
+ const vet_1 = require("./vet");
9
+ const hcanon_1 = require("./hcanon");
10
+ const ConstraintVal_1 = require("./val/ConstraintVal");
11
+ const ScalarKindVal_1 = require("./val/ScalarKindVal");
12
+ const PrefVal_1 = require("./val/PrefVal");
13
+ const DEFAULT_GENERAL_URL = 'general';
14
+ const DEFAULT_SPECIFIC_URL = 'specific';
15
+ function pathText(path) {
16
+ return '$' + (0 < path.length ? '.' + path.join('.') : '');
17
+ }
18
+ // Every recorded operand is a real evaluated Val or the sited topLike
19
+ // stand-in, so no null guards: a Val's site is always an object, and a
20
+ // value parsed without a usable frame (a disjunct, say) already carries
21
+ // the -1 coordinates in it.
22
+ function siteOf(v, role, url) {
23
+ return {
24
+ file: url,
25
+ row: v.site.row,
26
+ col: v.site.col,
27
+ len: v.site.len,
28
+ role: role,
29
+ src: v.site.src,
30
+ value: v.canon,
31
+ };
32
+ }
33
+ // One finding: general and specific sites (general first — it is the
34
+ // contract being weakened or broken), canons as expected/actual.
35
+ function record(state, code, path, g, s, message) {
36
+ state.findings.push({
37
+ code,
38
+ class: 'compat',
39
+ severity: 'error',
40
+ path: pathText(path),
41
+ message,
42
+ sites: [
43
+ siteOf(g, 'general', state.generalUrl),
44
+ siteOf(s, 'specific', state.specificUrl),
45
+ ],
46
+ expected: g.canon,
47
+ actual: s.canon,
48
+ });
49
+ }
50
+ // The admission view of a value under a profile: a BARE preference
51
+ // admits what its superior admits (the engine's own PrefVal.superpeg
52
+ // semantics, and the docs' "a bare preference is gated by kind"); the
53
+ // default itself is compared separately, by the `defaults` and `gen`
54
+ // profiles.
55
+ function admission(v) {
56
+ return true === v?.isPref ? v.superpeg : v;
57
+ }
58
+ // A PREFERRED BRANCH CONTRIBUTES EXACTLY ITS OWN VALUE (ADR-004). The
59
+ // admission gate made that the engine's rule -- `*'auto'|'literal'|'data'`
60
+ // admits those three strings and nothing else -- and the subsumption
61
+ // walk kept comparing a pref MEMBER by its kind superior, the
62
+ // pre-ADR-004 reading. So a disjunction with a default did not subsume
63
+ // ITSELF: every member of the specific side widened to `string`, which
64
+ // no general member admits, and the walk answered the distribution
65
+ // case. `aontu_policy: hide({compat: *backward|forward|full|none})` --
66
+ // the verbatim idiom from reference-api.md -- failed self-subsumption
67
+ // under --profile gen (use-cases/BUGS.md §29).
68
+ //
69
+ // Only for a member of a disjunction: a bare `*x` standing alone is
70
+ // still gated by kind, which is the rule above and the documented one.
71
+ function memberAdmission(v) {
72
+ return true === v?.isPref ? (0, PrefVal_1.prefInnerPeg)(v) : v;
73
+ }
74
+ // The effective default of a value, or undefined when it has none, or
75
+ // 'indeterminate' when equal-rank preferences disagree (which the
76
+ // engine itself refuses only at generation).
77
+ // Exported (with subsumeNode) for the default-validity lint in
78
+ // ts/src/vet.ts (G3 phase 5): the lint asks exactly this walk's two
79
+ // questions — what is the effective default, and does a member admit
80
+ // it.
81
+ function effectiveDefault(v) {
82
+ // EVERY pref layer is unwrapped (prefInnerPeg), not just one: a
83
+ // ranked default's effective value is the innermost peg — `**member`
84
+ // generates "member" exactly as `*member` does (the rank-uniform
85
+ // meet, ADR-004). The one-layer unwrap left a rank-2 default wearing
86
+ // a `*`-wrapper no plain alternative subsumes, which is the
87
+ // pref_not_instance lint's ranked false positive of
88
+ // use-cases/BUGS.md §4 (`**member|member|admin|owner` warned while
89
+ // generating a value its own branch admits).
90
+ if (true === v?.isPref) {
91
+ return (0, PrefVal_1.prefInnerPeg)(v);
92
+ }
93
+ if (true === v?.isDisjunct && Array.isArray(v.peg)) {
94
+ const prefs = v.peg.filter((m) => true === m?.isPref);
95
+ if (0 === prefs.length) {
96
+ return undefined;
97
+ }
98
+ // Generation picks the LOWEST rank (`a:**1|*2` generates 2 —
99
+ // test/spec/edge.tsv), so the effective default does too.
100
+ const minRank = Math.min(...prefs.map((p) => p.rank));
101
+ const top = prefs.filter((p) => p.rank === minRank);
102
+ const first = (0, PrefVal_1.prefInnerPeg)(top[0]);
103
+ for (const p of top.slice(1)) {
104
+ if (!first.same?.((0, PrefVal_1.prefInnerPeg)(p))) {
105
+ return 'indeterminate';
106
+ }
107
+ }
108
+ return first;
109
+ }
110
+ return undefined;
111
+ }
112
+ // Is this evaluated value concrete enough to serve as a witness — a
113
+ // value that certainly IS an instance of the specific side?
114
+ function isConcrete(v) {
115
+ if (true === v?.isScalar) {
116
+ return true;
117
+ }
118
+ if ((true === v?.isMap || true === v?.isList) && null != v.peg) {
119
+ const children = Array.isArray(v.peg) ? v.peg : Object.values(v.peg);
120
+ return children.every((c) => isConcrete(c));
121
+ }
122
+ return false;
123
+ }
124
+ // Unresolved residue makes the relation undecidable at this node:
125
+ // references, variables, unreduced conjuncts and functions have no
126
+ // admitted set to compare.
127
+ function unresolved(v) {
128
+ return true === v?.isRef || true === v?.isVar ||
129
+ true === v?.isConjunct || true === v?.isExpect ||
130
+ (true === v?.isFunc && true !== v?.isConstraint);
131
+ }
132
+ // Exported for the defensive-arm unit test (ADR-002,
133
+ // ts/test/coverage3.test.ts): the no-rule fold at the walk's tail is
134
+ // unreachable through subsume() today — the ladder is total for every
135
+ // evaluated former — and the walk is otherwise private.
136
+ function subsumeNode(state, path, g0, s0) {
137
+ const g = admission(g0);
138
+ const s = admission(s0);
139
+ // Marks change the OUTPUT shape, not the admitted set: only the `gen`
140
+ // profile reports them, and only when they differ on corresponding
141
+ // nodes.
142
+ if ('gen' === state.profile && true !== state.distributing &&
143
+ (!!g?.mark?.type !== !!s?.mark?.type ||
144
+ !!g?.mark?.hide !== !!s?.mark?.hide)) {
145
+ record(state, 'compat_marks_changed', path, g, s, 'marks differ: general ' + JSON.stringify(g?.mark) +
146
+ ', specific ' + JSON.stringify(s?.mark));
147
+ return 'no';
148
+ }
149
+ // TOP admits everything. There is no nil rule: an error-free
150
+ // evaluated document carries no nil (failing disjunct members are
151
+ // discarded, every other nil collects an error, and subsume() answers
152
+ // `error` for a source that does not stand alone), so a nil handed to
153
+ // the walk by a future caller falls to the no-rule fold below —
154
+ // `undecided`, the safe direction.
155
+ if (true === g?.isTop) {
156
+ return 'yes';
157
+ }
158
+ if (unresolved(g) || unresolved(s)) {
159
+ // REFLEXIVITY IS A LAW, not a rule the ladder gets to skip. Every
160
+ // value admits itself, residue included: the set admitted by
161
+ // `integer & min(0)` is exactly the set admitted by
162
+ // `integer & min(0)`. Without this, a constraint inside a spread
163
+ // template made a contract non-SELF-subsumable -- expected and
164
+ // actual byte-identical, verdict `undecided` -- so `breaking` on
165
+ // the documented close-per-entry idiom hard-failed reflexivity and
166
+ // had to run --allow-undecided, which then masks the genuine
167
+ // undecideds it exists to surface (use-cases/BUGS.md §28).
168
+ //
169
+ // Identity is the HASH FORM, not the canon: canon drops closedness
170
+ // and the marks, so `close({a:1})` and `{a:1}` share a canon while
171
+ // admitting different sets. Computed only on this branch, where
172
+ // the answer would otherwise be undecided, so the hot path is
173
+ // untouched.
174
+ if ((0, hcanon_1.hcanon)(g) === (0, hcanon_1.hcanon)(s)) {
175
+ return 'yes';
176
+ }
177
+ record(state, 'sub_unresolved', path, g, s, 'unresolved residue: the admitted set is not comparable');
178
+ return 'undecided';
179
+ }
180
+ // Disjunctions. General side first: a specific member must be
181
+ // subsumed by SOME general member; member-wise failure is not proof
182
+ // (the distribution case), so a concrete failing member becomes the
183
+ // witness and anything else is honestly undecided.
184
+ if (true === s?.isDisjunct) {
185
+ let out = 'yes';
186
+ for (const raw of s.peg) {
187
+ const member = memberAdmission(raw);
188
+ const trial = trialSubsume(state, path, g, member);
189
+ if ('yes' !== trial) {
190
+ if (isConcrete(admission(member))) {
191
+ record(state, 'compat_narrowed', path, g, member, 'a specific alternative is not admitted by the general value');
192
+ return 'no';
193
+ }
194
+ record(state, 'sub_disjunct_distribution', path, g, member, 'a specific alternative is not admitted member-wise, and no' +
195
+ ' concrete counterexample settles the distribution case');
196
+ out = 'undecided';
197
+ }
198
+ }
199
+ return out;
200
+ }
201
+ if (true === g?.isDisjunct) {
202
+ for (const raw of g.peg) {
203
+ if ('yes' === trialSubsume(state, path, memberAdmission(raw), s)) {
204
+ return 'yes';
205
+ }
206
+ }
207
+ if (isConcrete(s)) {
208
+ record(state, 'compat_narrowed', path, g, s, 'no general alternative admits the specific value');
209
+ return 'no';
210
+ }
211
+ record(state, 'sub_disjunct_distribution', path, g, s, 'no general alternative admits the specific value member-wise,' +
212
+ ' and no concrete counterexample settles the distribution case');
213
+ return 'undecided';
214
+ }
215
+ // Scalar kinds: a kind subsumes its scalars, narrower kinds, and the
216
+ // constraint residuals of its domain.
217
+ if (true === g?.isScalarKind) {
218
+ if (true === s?.isScalarKind) {
219
+ if (g.peg === s.peg || (0, ScalarKindVal_1.kindSubsumes)(g.peg, s.peg)) {
220
+ return 'yes';
221
+ }
222
+ record(state, 'compat_narrowed', path, g, s, 'the general kind does not admit the specific kind');
223
+ return 'no';
224
+ }
225
+ if (true === s?.isScalar) {
226
+ const leaf = s.superior?.();
227
+ if (true === leaf?.isScalarKind &&
228
+ (g.peg === leaf.peg || (0, ScalarKindVal_1.kindSubsumes)(g.peg, leaf.peg))) {
229
+ return 'yes';
230
+ }
231
+ record(state, 'compat_narrowed', path, g, s, 'the general kind does not admit the specific scalar');
232
+ return 'no';
233
+ }
234
+ if (true === s?.isConstraint) {
235
+ // A kind covers a residual of its own domain: `number` admits any
236
+ // numeric residual (the supertype admits every leaf a bound can
237
+ // pin), a numeric LEAF kind admits only a residual pinned to that
238
+ // leaf, and `string` admits any pattern residual. A residual with
239
+ // no domain (sizing-only) admits containers no kind covers.
240
+ const dom = s.domain;
241
+ const skind = s.kind;
242
+ if ('number' === dom &&
243
+ (Number === g.peg ||
244
+ (null != skind && (0, ScalarKindVal_1.kindSubsumes)(g.peg, skind)))) {
245
+ return 'yes';
246
+ }
247
+ if ('string' === dom && String === g.peg) {
248
+ return 'yes';
249
+ }
250
+ record(state, 'compat_narrowed', path, g, s, 'the general kind does not cover the specific residual');
251
+ return 'no';
252
+ }
253
+ record(state, 'compat_narrowed', path, g, s, 'the general kind admits no such value');
254
+ return 'no';
255
+ }
256
+ // Constraint residuals.
257
+ if (true === g?.isConstraint) {
258
+ if (true === s?.isConstraint) {
259
+ const r = (0, ConstraintVal_1.constraintSubsumesConstraint)(g, s);
260
+ if (true === r) {
261
+ return 'yes';
262
+ }
263
+ if ('undecided' === r) {
264
+ record(state, 'sub_evaluate_only', path, g, s, 'an evaluate-only check (must) makes the admitted set opaque');
265
+ return 'undecided';
266
+ }
267
+ record(state, 'compat_narrowed', path, g, s, 'the general residual does not contain the specific residual');
268
+ return 'no';
269
+ }
270
+ if (true === s?.isScalar) {
271
+ const r = (0, ConstraintVal_1.constraintAdmitsScalar)(g, s);
272
+ if (true === r) {
273
+ return 'yes';
274
+ }
275
+ if ('undecided' === r) {
276
+ record(state, 'sub_evaluate_only', path, g, s, 'an evaluate-only check (must) makes the admitted set opaque');
277
+ return 'undecided';
278
+ }
279
+ record(state, 'compat_narrowed', path, g, s, 'the general residual does not admit the specific scalar');
280
+ return 'no';
281
+ }
282
+ record(state, 'compat_narrowed', path, g, s, 'the general residual constrains a domain the specific value is not in');
283
+ return 'no';
284
+ }
285
+ // Concrete scalars subsume only themselves (identity compares kind
286
+ // as well as value).
287
+ if (true === g?.isScalar) {
288
+ if (true === s?.isScalar && true === g.same?.(s)) {
289
+ return 'yes';
290
+ }
291
+ record(state, 'compat_narrowed', path, g, s, 'a concrete value subsumes only itself');
292
+ return 'no';
293
+ }
294
+ // Maps.
295
+ if (true === g?.isMap) {
296
+ if (true !== s?.isMap) {
297
+ record(state, 'compat_narrowed', path, g, s, 'the general value is a map and the specific value is not');
298
+ return 'no';
299
+ }
300
+ return subsumeBag(state, path, g, s, Object.keys(g.peg), Object.keys(s.peg), (v, k) => v.peg[k]);
301
+ }
302
+ // Lists: element-wise by position; the same required/optional shape
303
+ // as maps, with positions as keys.
304
+ if (true === g?.isList) {
305
+ if (true !== s?.isList) {
306
+ record(state, 'compat_narrowed', path, g, s, 'the general value is a list and the specific value is not');
307
+ return 'no';
308
+ }
309
+ const gk = g.peg.map((_, i) => '' + i);
310
+ const sk = s.peg.map((_, i) => '' + i);
311
+ return subsumeBag(state, path, g, s, gk, sk, (v, k) => v.peg[Number(k)]);
312
+ }
313
+ // The ladder above is total in practice: every evaluated former is a
314
+ // scalar, kind, constraint, map, list, disjunct, or top, or is caught
315
+ // by admission (pref) or unresolved (ref, var, conjunct, expect,
316
+ // func). The arm is kept because "in practice" is evaluation's
317
+ // property, not this walk's, and a future value class (or a nil, see
318
+ // the top rule) must land on an honest `undecided`, not fall out of
319
+ // the walk with no answer.
320
+ record(state, 'sub_unresolved', path, g, s, 'no subsumption rule covers this pair of value formers');
321
+ return 'undecided';
322
+ }
323
+ // Maps and lists share one shape: required keys of the general side
324
+ // must be required in the specific side and subsume; optional keys
325
+ // compare when present; closedness bounds the specific key set; spread
326
+ // templates govern the specific side's surplus.
327
+ function subsumeBag(state, path, g, s, gKeys, sKeys, child) {
328
+ let out = 'yes';
329
+ const worse = (r) => {
330
+ if ('no' === r || ('undecided' === r && 'no' !== out)) {
331
+ out = 'no' === r ? 'no' : 'undecided';
332
+ }
333
+ };
334
+ // Always arrays on an evaluated bag (BagVal initialises them).
335
+ const gOptional = g.optionalKeys;
336
+ const sOptional = s.optionalKeys;
337
+ for (const k of gKeys) {
338
+ const gChild = child(g, k);
339
+ const has = sKeys.includes(k);
340
+ const optional = gOptional.includes(k);
341
+ if (!has) {
342
+ if (optional) {
343
+ continue;
344
+ }
345
+ record(state, 'compat_required_added', [...path, k], gChild, s, 'the general value requires this key; the specific value admits' +
346
+ ' instances without it');
347
+ worse('no');
348
+ continue;
349
+ }
350
+ if (!optional && sOptional.includes(k)) {
351
+ record(state, 'compat_required_added', [...path, k], gChild, child(s, k), 'the general value requires this key; the specific value makes' +
352
+ ' it optional, so instances without it are admitted');
353
+ worse('no');
354
+ continue;
355
+ }
356
+ worse(subsumeNode(state, [...path, k], gChild, child(s, k)));
357
+ }
358
+ // Closedness: a closed general bag admits only key sets it declares,
359
+ // so the specific side must be closed and inside it.
360
+ if (true === g.closed) {
361
+ if (true !== s.closed) {
362
+ record(state, 'compat_narrowed', path, g, s, 'the general value is closed; the open specific value admits' +
363
+ ' surplus keys');
364
+ worse('no');
365
+ }
366
+ else {
367
+ for (const k of sKeys) {
368
+ if (!gKeys.includes(k)) {
369
+ record(state, 'compat_narrowed', [...path, k], g, child(s, k), 'the closed general value does not declare this key');
370
+ worse('no');
371
+ }
372
+ }
373
+ }
374
+ }
375
+ // Spread templates: a path-dependent template's meaning depends on
376
+ // where it lands, which no structural comparison can decide.
377
+ const gcj = g.spread?.cj;
378
+ const scj = s.spread?.cj;
379
+ if (null != gcj || null != scj) {
380
+ if (true === gcj?.isPathDependent || true === scj?.isPathDependent) {
381
+ record(state, 'sub_path_dependent_spread', path, gcj ?? g, scj ?? s, 'a path-dependent spread template cannot be compared structurally');
382
+ worse('undecided');
383
+ }
384
+ else if (null != gcj) {
385
+ // The general template governs the specific side's surplus keys
386
+ // and its template.
387
+ for (const k of sKeys) {
388
+ if (!gKeys.includes(k)) {
389
+ worse(subsumeNode(state, [...path, k], gcj, child(s, k)));
390
+ }
391
+ }
392
+ worse(subsumeNode(state, [...path, '&'], gcj, scj ?? topLike()));
393
+ }
394
+ // A specific-only template narrows the specific side; nothing for
395
+ // the (unconstrained) general side to refuse.
396
+ }
397
+ return out;
398
+ }
399
+ // A stand-in TOP for "the specific side leaves this unconstrained".
400
+ let topVal;
401
+ function topLike() {
402
+ if (null == topVal) {
403
+ // A full site, not a partial one: `len` and `src` are as much part
404
+ // of the shape as row and col, and leaving them undefined dropped
405
+ // both keys from the emitted report — so this stand-in was the one
406
+ // site in either port with no `len` at all, and the Go twin (which
407
+ // has no undefined) disagreed. It occupies no source, so the values
408
+ // are the "unknown" ones.
409
+ topVal = {
410
+ isTop: true, canon: 'top',
411
+ site: { row: -1, col: -1, len: -1, src: '' },
412
+ };
413
+ }
414
+ return topVal;
415
+ }
416
+ // A trial comparison whose findings are DISCARDED: disjunct
417
+ // member-matching asks many "would this member do?" questions, and only
418
+ // the aggregated outcome is a finding.
419
+ // A DISTRIBUTION TRIAL IS NOT A NODE CORRESPONDENCE. It asks whether
420
+ // one ALTERNATIVE of one side admits one alternative of the other,
421
+ // which is a question about admitted sets; the two values it compares
422
+ // are not the same node of the two documents. The `gen` profile's mark
423
+ // rule is a correspondence question -- did a field that used to be
424
+ // generated become hidden -- and firing it here compared a whole
425
+ // disjunction (carrying its enclosing bag's mark) against a member
426
+ // extracted out of one (which does not), so `hide({c: *a|b})` stopped
427
+ // subsuming ITSELF under --profile gen (use-cases/BUGS.md §29). The
428
+ // enclosing node's marks are compared where they correspond: at that
429
+ // node, by the ordinary walk.
430
+ function trialSubsume(state, path, g, s) {
431
+ const trial = { ...state, findings: [], distributing: true };
432
+ return subsumeNode(trial, path, g, s);
433
+ }
434
+ // The defaults comparison (the `defaults` and `gen` profiles): the
435
+ // specific side's effective default must survive into the general side
436
+ // unchanged. Adding a default where none existed is compatible;
437
+ // changing or removing one is not (removal turns previously generable
438
+ // documents incomplete).
439
+ function subsumeDefaults(state, path, g, s) {
440
+ const sd = effectiveDefault(s);
441
+ if (undefined === sd) {
442
+ return 'yes';
443
+ }
444
+ const gd = effectiveDefault(g);
445
+ if ('indeterminate' === sd || 'indeterminate' === gd) {
446
+ record(state, 'sub_default_indeterminate', path, g, s, 'equal-rank preferences disagree, so the effective default is' +
447
+ ' not a single value');
448
+ return 'undecided';
449
+ }
450
+ if (undefined === gd || true !== gd.same?.(sd)) {
451
+ record(state, 'compat_default_changed', path, g, s, 'the effective default changed: previously generable documents' +
452
+ ' materialise differently or become incomplete');
453
+ return 'no';
454
+ }
455
+ return 'yes';
456
+ }
457
+ // Walk both trees for default agreement wherever the specific side has
458
+ // one: at the node itself and inside every corresponding bag child.
459
+ function subsumeDefaultsWalk(state, path, g, s) {
460
+ let out = subsumeDefaults(state, path, g, s);
461
+ const gm = true === g?.isMap ? g.peg : undefined;
462
+ const sm = true === s?.isMap ? s.peg : undefined;
463
+ if (null != gm && null != sm) {
464
+ for (const k of Object.keys(sm)) {
465
+ if (null != gm[k]) {
466
+ const r = subsumeDefaultsWalk(state, [...path, k], gm[k], sm[k]);
467
+ if ('no' === r || ('undecided' === r && 'no' !== out)) {
468
+ out = 'no' === r ? 'no' : 'undecided';
469
+ }
470
+ }
471
+ }
472
+ }
473
+ return out;
474
+ }
475
+ /**
476
+ * Does `generalSrc` subsume `specificSrc` — is every instance the
477
+ * specific admits admitted by the general too?
478
+ *
479
+ * Both sources are evaluated fresh (single-use trees make this
480
+ * mandatory), and the recursion runs on the finished values. The
481
+ * verdict is three-valued plus `error` (a source that does not stand up
482
+ * on its own, mirroring vet's schema-error verdict); findings reuse
483
+ * G2's object with class `compat`.
484
+ */
485
+ function subsume(generalSrc, specificSrc, opts) {
486
+ const options = opts ?? {};
487
+ const profile = options.profile ?? 'defaults';
488
+ const state = {
489
+ profile,
490
+ findings: [],
491
+ generalUrl: options.generalUrl ?? DEFAULT_GENERAL_URL,
492
+ specificUrl: options.specificUrl ?? DEFAULT_SPECIFIC_URL,
493
+ };
494
+ const load = (src, path) => {
495
+ const aontu = new aontu_1.Aontu(null == options.trust ? undefined : { trust: options.trust });
496
+ const ctx = aontu.ctx({ collect: true });
497
+ const v = aontu.unify(src, null == path ? undefined : { path }, ctx);
498
+ if (0 < ctx.err.length || true === v?.isNil) {
499
+ return undefined;
500
+ }
501
+ return v;
502
+ };
503
+ let g = load(generalSrc, options.generalPath);
504
+ let s = load(specificSrc, options.specificPath);
505
+ if (null == g || null == s) {
506
+ return { verdict: 'error', findings: [] };
507
+ }
508
+ if (null != options.at) {
509
+ g = (0, vet_1.anchorAt)(g, options.at);
510
+ s = (0, vet_1.anchorAt)(s, options.at);
511
+ if (null == g || null == s) {
512
+ return { verdict: 'error', findings: [] };
513
+ }
514
+ }
515
+ let out = subsumeNode(state, [], g, s);
516
+ if ('values' !== profile) {
517
+ const d = subsumeDefaultsWalk(state, [], g, s);
518
+ if ('no' === d || ('undecided' === d && 'no' !== out)) {
519
+ out = 'no' === d ? 'no' : 'undecided';
520
+ }
521
+ }
522
+ const verdict = 'no' === out ? 'does_not_subsume' :
523
+ 'undecided' === out ? 'undecided' : 'subsumes';
524
+ return { verdict, findings: state.findings };
525
+ }
526
+ //# sourceMappingURL=subsume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsume.js","sourceRoot":"","sources":["../src/subsume.ts"],"names":[],"mappings":"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"}
package/dist/trim.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { VetFinding } from './vet';
2
+ import type { TrustOptions } from './type';
3
+ export type TrimVerdict = 'clean' | 'redundant' | 'error';
4
+ export type TrimReport = {
5
+ verdict: TrimVerdict;
6
+ redundant: string[];
7
+ errors?: VetFinding[];
8
+ };
9
+ export type TrimOptions = {
10
+ path?: string;
11
+ trust?: TrustOptions;
12
+ };
13
+ export declare function candidates(v: any, path: string[], out: string[][]): void;
14
+ export declare function deleteAt(root: any, path: string[]): boolean;
15
+ export declare function evalCanon(src: string, opts: TrimOptions, delPath?: string[], sink?: {
16
+ ctx?: any;
17
+ failed?: any;
18
+ }): string | undefined;
19
+ export declare function trimCheck(src: string, opts?: TrimOptions): TrimReport;