aontu 0.52.1 → 0.54.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 (310) 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 +15 -3
  7. package/dist/aontu.js +126 -5
  8. package/dist/aontu.js.map +1 -1
  9. package/dist/cli.d.ts +45 -1
  10. package/dist/cli.js +2845 -69
  11. package/dist/cli.js.map +1 -1
  12. package/dist/ctx.d.ts +18 -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 +45 -8
  20. package/dist/err.js.map +1 -1
  21. package/dist/graph.d.ts +13 -0
  22. package/dist/graph.js +110 -0
  23. package/dist/graph.js.map +1 -0
  24. package/dist/hcanon.d.ts +3 -0
  25. package/dist/hcanon.js +145 -0
  26. package/dist/hcanon.js.map +1 -0
  27. package/dist/hints.js +235 -8
  28. package/dist/hints.js.map +1 -1
  29. package/dist/jsonschema.d.ts +20 -0
  30. package/dist/jsonschema.js +425 -0
  31. package/dist/jsonschema.js.map +1 -0
  32. package/dist/lang.js +955 -110
  33. package/dist/lang.js.map +1 -1
  34. package/dist/lsp.d.ts +9 -2
  35. package/dist/lsp.js +343 -48
  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 +941 -0
  42. package/dist/mcp.js.map +1 -0
  43. package/dist/mod-tool.d.ts +58 -0
  44. package/dist/mod-tool.js +532 -0
  45. package/dist/mod-tool.js.map +1 -0
  46. package/dist/mod.d.ts +35 -0
  47. package/dist/mod.js +345 -0
  48. package/dist/mod.js.map +1 -0
  49. package/dist/patch.d.ts +49 -0
  50. package/dist/patch.js +506 -0
  51. package/dist/patch.js.map +1 -0
  52. package/dist/provenance.d.ts +41 -0
  53. package/dist/provenance.js +336 -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 +15 -0
  59. package/dist/reach.js +168 -0
  60. package/dist/reach.js.map +1 -0
  61. package/dist/relation.d.ts +23 -0
  62. package/dist/relation.js +230 -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/sig.d.ts +25 -0
  68. package/dist/sig.js +277 -0
  69. package/dist/sig.js.map +1 -0
  70. package/dist/sigdecl.d.ts +2 -0
  71. package/dist/sigdecl.js +11 -0
  72. package/dist/sigdecl.js.map +1 -0
  73. package/dist/siggate.d.ts +4 -0
  74. package/dist/siggate.js +90 -0
  75. package/dist/siggate.js.map +1 -0
  76. package/dist/site.d.ts +4 -0
  77. package/dist/site.js +31 -0
  78. package/dist/site.js.map +1 -1
  79. package/dist/std.d.ts +1 -0
  80. package/dist/std.js +129 -0
  81. package/dist/std.js.map +1 -0
  82. package/dist/subsume.d.ts +39 -0
  83. package/dist/subsume.js +573 -0
  84. package/dist/subsume.js.map +1 -0
  85. package/dist/trim.d.ts +19 -0
  86. package/dist/trim.js +155 -0
  87. package/dist/trim.js.map +1 -0
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/dist/type.d.ts +17 -1
  90. package/dist/type.js.map +1 -1
  91. package/dist/unify.d.ts +2 -1
  92. package/dist/unify.js +234 -38
  93. package/dist/unify.js.map +1 -1
  94. package/dist/utility.d.ts +8 -1
  95. package/dist/utility.js +68 -1
  96. package/dist/utility.js.map +1 -1
  97. package/dist/val/AggFuncVal.d.ts +44 -0
  98. package/dist/val/AggFuncVal.js +364 -0
  99. package/dist/val/AggFuncVal.js.map +1 -0
  100. package/dist/val/ArithFuncVal.d.ts +31 -0
  101. package/dist/val/ArithFuncVal.js +62 -0
  102. package/dist/val/ArithFuncVal.js.map +1 -0
  103. package/dist/val/BagVal.d.ts +7 -0
  104. package/dist/val/BagVal.js +150 -11
  105. package/dist/val/BagVal.js.map +1 -1
  106. package/dist/val/CloseFuncVal.js +9 -1
  107. package/dist/val/CloseFuncVal.js.map +1 -1
  108. package/dist/val/ConjunctVal.d.ts +1 -1
  109. package/dist/val/ConjunctVal.js +19 -0
  110. package/dist/val/ConjunctVal.js.map +1 -1
  111. package/dist/val/ConstraintVal.d.ts +7 -1
  112. package/dist/val/ConstraintVal.js +523 -45
  113. package/dist/val/ConstraintVal.js.map +1 -1
  114. package/dist/val/ContainerKindVal.d.ts +35 -0
  115. package/dist/val/ContainerKindVal.js +99 -0
  116. package/dist/val/ContainerKindVal.js.map +1 -0
  117. package/dist/val/CopyFuncVal.d.ts +1 -2
  118. package/dist/val/CopyFuncVal.js.map +1 -1
  119. package/dist/val/Decimal.d.ts +1 -0
  120. package/dist/val/Decimal.js +13 -0
  121. package/dist/val/Decimal.js.map +1 -1
  122. package/dist/val/DeprecateFuncVal.d.ts +11 -0
  123. package/dist/val/DeprecateFuncVal.js +47 -0
  124. package/dist/val/DeprecateFuncVal.js.map +1 -0
  125. package/dist/val/DisjunctVal.d.ts +1 -2
  126. package/dist/val/DisjunctVal.js +269 -53
  127. package/dist/val/DisjunctVal.js.map +1 -1
  128. package/dist/val/EachFuncVal.d.ts +15 -0
  129. package/dist/val/EachFuncVal.js +75 -0
  130. package/dist/val/EachFuncVal.js.map +1 -0
  131. package/dist/val/ExpectVal.js +62 -4
  132. package/dist/val/ExpectVal.js.map +1 -1
  133. package/dist/val/FeatureVal.js +1 -1
  134. package/dist/val/FeatureVal.js.map +1 -1
  135. package/dist/val/FilterFuncVal.d.ts +15 -0
  136. package/dist/val/FilterFuncVal.js +91 -0
  137. package/dist/val/FilterFuncVal.js.map +1 -0
  138. package/dist/val/FuncBaseVal.d.ts +7 -1
  139. package/dist/val/FuncBaseVal.js +183 -2
  140. package/dist/val/FuncBaseVal.js.map +1 -1
  141. package/dist/val/GraphAtomVal.d.ts +39 -0
  142. package/dist/val/GraphAtomVal.js +184 -0
  143. package/dist/val/GraphAtomVal.js.map +1 -0
  144. package/dist/val/HideFuncVal.js.map +1 -1
  145. package/dist/val/JunctionVal.js +24 -1
  146. package/dist/val/JunctionVal.js.map +1 -1
  147. package/dist/val/KeyFuncVal.d.ts +1 -1
  148. package/dist/val/KeyFuncVal.js +38 -30
  149. package/dist/val/KeyFuncVal.js.map +1 -1
  150. package/dist/val/ListVal.js +94 -14
  151. package/dist/val/ListVal.js.map +1 -1
  152. package/dist/val/LowerFuncVal.js.map +1 -1
  153. package/dist/val/MapVal.d.ts +1 -0
  154. package/dist/val/MapVal.js +146 -14
  155. package/dist/val/MapVal.js.map +1 -1
  156. package/dist/val/MatchFuncVal.d.ts +15 -0
  157. package/dist/val/MatchFuncVal.js +107 -0
  158. package/dist/val/MatchFuncVal.js.map +1 -0
  159. package/dist/val/MoveFuncVal.js.map +1 -1
  160. package/dist/val/NilVal.js +24 -0
  161. package/dist/val/NilVal.js.map +1 -1
  162. package/dist/val/OpBaseVal.d.ts +1 -1
  163. package/dist/val/OpBaseVal.js +19 -1
  164. package/dist/val/OpBaseVal.js.map +1 -1
  165. package/dist/val/OpenFuncVal.js +4 -1
  166. package/dist/val/OpenFuncVal.js.map +1 -1
  167. package/dist/val/PackFuncVal.d.ts +15 -0
  168. package/dist/val/PackFuncVal.js +108 -0
  169. package/dist/val/PackFuncVal.js.map +1 -0
  170. package/dist/val/PathFuncVal.d.ts +2 -2
  171. package/dist/val/PathFuncVal.js +75 -16
  172. package/dist/val/PathFuncVal.js.map +1 -1
  173. package/dist/val/PathVal.d.ts +25 -0
  174. package/dist/val/PathVal.js +150 -0
  175. package/dist/val/PathVal.js.map +1 -0
  176. package/dist/val/PlaceVal.d.ts +13 -0
  177. package/dist/val/PlaceVal.js +131 -0
  178. package/dist/val/PlaceVal.js.map +1 -0
  179. package/dist/val/PlusOpVal.d.ts +2 -1
  180. package/dist/val/PlusOpVal.js +61 -37
  181. package/dist/val/PlusOpVal.js.map +1 -1
  182. package/dist/val/PrefFuncVal.js.map +1 -1
  183. package/dist/val/PrefVal.d.ts +4 -2
  184. package/dist/val/PrefVal.js +223 -41
  185. package/dist/val/PrefVal.js.map +1 -1
  186. package/dist/val/RecurseVal.d.ts +19 -0
  187. package/dist/val/RecurseVal.js +217 -0
  188. package/dist/val/RecurseVal.js.map +1 -0
  189. package/dist/val/RefVal.d.ts +3 -2
  190. package/dist/val/RefVal.js +181 -66
  191. package/dist/val/RefVal.js.map +1 -1
  192. package/dist/val/ReferFuncVal.d.ts +59 -0
  193. package/dist/val/ReferFuncVal.js +604 -0
  194. package/dist/val/ReferFuncVal.js.map +1 -0
  195. package/dist/val/ScalarKindVal.d.ts +4 -3
  196. package/dist/val/ScalarKindVal.js +12 -12
  197. package/dist/val/ScalarKindVal.js.map +1 -1
  198. package/dist/val/SuperFuncVal.d.ts +4 -2
  199. package/dist/val/SuperFuncVal.js +118 -14
  200. package/dist/val/SuperFuncVal.js.map +1 -1
  201. package/dist/val/TopVal.d.ts +1 -1
  202. package/dist/val/TopVal.js.map +1 -1
  203. package/dist/val/TypeFuncVal.js.map +1 -1
  204. package/dist/val/UpperFuncVal.js.map +1 -1
  205. package/dist/val/Val.d.ts +7 -1
  206. package/dist/val/Val.js +170 -2
  207. package/dist/val/Val.js.map +1 -1
  208. package/dist/val/VarVal.js.map +1 -1
  209. package/dist/val/arith.d.ts +6 -0
  210. package/dist/val/arith.js +173 -0
  211. package/dist/val/arith.js.map +1 -0
  212. package/dist/vet.d.ts +45 -0
  213. package/dist/vet.js +802 -0
  214. package/dist/vet.js.map +1 -0
  215. package/dist/view.d.ts +85 -0
  216. package/dist/view.js +1948 -0
  217. package/dist/view.js.map +1 -0
  218. package/dist/walk.d.ts +2 -0
  219. package/dist/walk.js +91 -0
  220. package/dist/walk.js.map +1 -0
  221. package/grammar/aontu.gbnf +138 -0
  222. package/grammar/aontu.lark +118 -0
  223. package/grammar/aontu.tmLanguage.json +184 -0
  224. package/package.json +30 -8
  225. package/skill/SKILL.md +37 -0
  226. package/skill/error-codes.md +62 -0
  227. package/skill/examples.md +99 -0
  228. package/skill/grammar-card.md +56 -0
  229. package/src/agentsmd.ts +135 -0
  230. package/src/aontu.ts +166 -5
  231. package/src/cli.ts +3324 -72
  232. package/src/ctx.ts +93 -1
  233. package/src/diff.ts +198 -0
  234. package/src/err.ts +50 -8
  235. package/src/graph.ts +185 -0
  236. package/src/hcanon.ts +167 -0
  237. package/src/hints.ts +291 -8
  238. package/src/jsonschema.ts +552 -0
  239. package/src/lang.ts +1049 -110
  240. package/src/lsp.ts +351 -49
  241. package/src/mcp-server.ts +187 -0
  242. package/src/mcp.ts +1130 -0
  243. package/src/mod-tool.ts +718 -0
  244. package/src/mod.ts +453 -0
  245. package/src/patch.ts +628 -0
  246. package/src/provenance.ts +437 -0
  247. package/src/query.ts +381 -0
  248. package/src/reach.ts +213 -0
  249. package/src/relation.ts +298 -0
  250. package/src/report-sarif.ts +137 -0
  251. package/src/sig.ts +345 -0
  252. package/src/sigdecl.ts +11 -0
  253. package/src/siggate.ts +144 -0
  254. package/src/site.ts +36 -1
  255. package/src/std.ts +131 -0
  256. package/src/subsume.ts +739 -0
  257. package/src/trim.ts +195 -0
  258. package/src/tsconfig.json +10 -4
  259. package/src/type.ts +51 -2
  260. package/src/unify.ts +253 -38
  261. package/src/utility.ts +79 -1
  262. package/src/val/AggFuncVal.ts +546 -0
  263. package/src/val/ArithFuncVal.ts +108 -0
  264. package/src/val/BagVal.ts +158 -12
  265. package/src/val/CloseFuncVal.ts +9 -1
  266. package/src/val/ConjunctVal.ts +20 -0
  267. package/src/val/ConstraintVal.ts +576 -48
  268. package/src/val/ContainerKindVal.ts +158 -0
  269. package/src/val/CopyFuncVal.ts +0 -1
  270. package/src/val/Decimal.ts +15 -0
  271. package/src/val/DeprecateFuncVal.ts +84 -0
  272. package/src/val/DisjunctVal.ts +282 -59
  273. package/src/val/EachFuncVal.ts +133 -0
  274. package/src/val/ExpectVal.ts +65 -8
  275. package/src/val/FeatureVal.ts +1 -1
  276. package/src/val/FilterFuncVal.ts +154 -0
  277. package/src/val/FuncBaseVal.ts +206 -2
  278. package/src/val/GraphAtomVal.ts +264 -0
  279. package/src/val/HideFuncVal.ts +0 -2
  280. package/src/val/JunctionVal.ts +24 -1
  281. package/src/val/KeyFuncVal.ts +39 -35
  282. package/src/val/ListVal.ts +101 -15
  283. package/src/val/LowerFuncVal.ts +0 -1
  284. package/src/val/MapVal.ts +153 -14
  285. package/src/val/MatchFuncVal.ts +176 -0
  286. package/src/val/MoveFuncVal.ts +0 -2
  287. package/src/val/NilVal.ts +25 -0
  288. package/src/val/OpBaseVal.ts +20 -1
  289. package/src/val/OpenFuncVal.ts +4 -2
  290. package/src/val/PackFuncVal.ts +175 -0
  291. package/src/val/PathFuncVal.ts +107 -20
  292. package/src/val/PathVal.ts +221 -0
  293. package/src/val/PlaceVal.ts +193 -0
  294. package/src/val/PlusOpVal.ts +67 -39
  295. package/src/val/PrefFuncVal.ts +0 -1
  296. package/src/val/PrefVal.ts +251 -60
  297. package/src/val/RecurseVal.ts +285 -0
  298. package/src/val/RefVal.ts +183 -78
  299. package/src/val/ReferFuncVal.ts +732 -0
  300. package/src/val/ScalarKindVal.ts +12 -13
  301. package/src/val/SuperFuncVal.ts +137 -13
  302. package/src/val/TopVal.ts +1 -2
  303. package/src/val/TypeFuncVal.ts +0 -2
  304. package/src/val/UpperFuncVal.ts +0 -1
  305. package/src/val/Val.ts +216 -4
  306. package/src/val/VarVal.ts +0 -1
  307. package/src/val/arith.ts +319 -0
  308. package/src/vet.ts +1025 -0
  309. package/src/view.ts +2563 -0
  310. package/src/walk.ts +99 -0
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.jsonSchema = jsonSchema;
5
+ // JSON SCHEMA EXPORT (the review's finding I / SUPPORT.md act 2).
6
+ //
7
+ // "JSON Schema's decisive 2026 advantage is not its validator ecosystem
8
+ // -- it is that every major LLM provider's structured-output API
9
+ // natively constrains generation to JSON Schema." Without an export,
10
+ // Aontu cannot ride that path and then apply `vet` as the semantic gate
11
+ // -- the hybrid an enterprise would actually deploy -- and an MCP tool's
12
+ // `inputSchema`, which the protocol REQUIRES to be JSON Schema, cannot
13
+ // be derived from an Aontu tool model at all (use case 09's interop
14
+ // wall).
15
+ //
16
+ // THE MAPPING IS LOSSY, AND SAYS SO PER CONSTRUCT. That is the whole
17
+ // design. Aontu's constraint algebra maps cleanly onto JSON Schema's
18
+ // core -- bounds, patterns, lengths, enums, required and closed -- and
19
+ // then stops: an evaluate-only `must()` is opaque by construction, an
20
+ // exact `0d` leaf has no JSON type that preserves it, a cross-field
21
+ // reference is not a property constraint at all, and `unique(k)` has no
22
+ // JSON Schema spelling. A converter that dropped those silently would
23
+ // hand its caller a schema that ADMITS MORE than the model does, which
24
+ // is the failure mode this whole language exists to refuse. So every
25
+ // loss is reported with its path, its construct and its reason, and
26
+ // `--strict` turns the report into a refusal.
27
+ //
28
+ // It exports the UNIFIED value, not the parse: what a document MEANS is
29
+ // what a consumer should be constrained to, and the meaning is what the
30
+ // fixpoint produced.
31
+ //
32
+ // Draft 2020-12, because that is what the structured-output APIs read.
33
+ const aontu_1 = require("./aontu");
34
+ const err_1 = require("./err");
35
+ const BagVal_1 = require("./val/BagVal");
36
+ const vet_1 = require("./vet");
37
+ const vet_2 = require("./vet");
38
+ const DRAFT = 'https://json-schema.org/draft/2020-12/schema';
39
+ function pathText(path) {
40
+ return '$' + (0 < path.length ? '.' + path.join('.') : '');
41
+ }
42
+ function lose(ctx, path, construct, reason) {
43
+ ctx.lossy.push({ path: pathText(path), construct, reason });
44
+ }
45
+ // The JSON type for a kind marker, by the marker CLASS's name -- the
46
+ // same load-bearing name canon renders (ScalarKindVal). `number` and
47
+ // its four leaves all become JSON's two numeric types; the exactness of
48
+ // `biginteger`/`bigdecimal` has no JSON type at all, which is a loss the
49
+ // caller is told about rather than a silent widening.
50
+ const KIND_TYPE = {
51
+ String: 'string',
52
+ Boolean: 'boolean',
53
+ Integer: 'integer',
54
+ BigInteger: 'integer',
55
+ Float: 'number',
56
+ BigDecimal: 'number',
57
+ Number: 'number',
58
+ // A path value is its address string at the JSON boundary
59
+ // (docs/design/PATHS.0.md), so the projection says `string` -- the
60
+ // same lossy-projection rule the exact numeric leaves follow.
61
+ Path: 'string',
62
+ };
63
+ // The JSON value of a concrete scalar, for `const`, `enum` and
64
+ // `default`. An exact leaf renders through its own digits rather than
65
+ // through binary64 -- and is reported as a loss where it is emitted,
66
+ // because JSON's number has no exactness to receive it.
67
+ function scalarJson(v) {
68
+ if (v.isBigInteger) {
69
+ return Number(v.peg);
70
+ }
71
+ if (v.isBigDecimal) {
72
+ return Number(v.peg.toString());
73
+ }
74
+ return v.peg;
75
+ }
76
+ function scalarType(v) {
77
+ if (v.isBigDecimal) {
78
+ return 'number';
79
+ }
80
+ if (v.isInteger || v.isBigInteger) {
81
+ return 'integer';
82
+ }
83
+ const t = typeof v.peg;
84
+ return 'number' === t ? 'number' : 'boolean' === t ? 'boolean' : 'string';
85
+ }
86
+ // The constraint residual's atoms, onto JSON Schema's keywords. The
87
+ // three that map exactly (bounds, pattern, count) go across; the two
88
+ // that cannot (`must`, `unique(k)`) are reported.
89
+ function fromConstraint(ctx, path, c) {
90
+ const out = {};
91
+ if (null != c.kind && null != KIND_TYPE[c.kind.name]) {
92
+ out.type = KIND_TYPE[c.kind.name];
93
+ }
94
+ else if ('string' === c.domain) {
95
+ out.type = 'string';
96
+ }
97
+ else if ('number' === c.domain) {
98
+ out.type = 'number';
99
+ }
100
+ // Bounds. An OPEN endpoint is JSON Schema's exclusive form, which is
101
+ // a keyword of its own in 2020-12 rather than the boolean flag draft-4
102
+ // used.
103
+ if (null != c.lo) {
104
+ out[c.lo.open ? 'exclusiveMinimum' : 'minimum'] = scalarJson(c.lo.v);
105
+ }
106
+ if (null != c.hi) {
107
+ out[c.hi.open ? 'exclusiveMaximum' : 'maximum'] = scalarJson(c.hi.v);
108
+ }
109
+ // Exclusions. `neq(1,2)` is "not one of these", which is exactly
110
+ // `not: {enum: [...]}`.
111
+ if (0 < c.neqs.length) {
112
+ out.not = { enum: c.neqs.map(scalarJson) };
113
+ }
114
+ // Patterns. Aontu DEFINES its portable subset (`re`'s abbreviations
115
+ // mean the same in both ports); every member of that subset is also
116
+ // an ECMA-262 regular expression, which is what JSON Schema's
117
+ // `pattern` is read as, so this crosses without translation. More
118
+ // than one pattern needs `allOf`: `pattern` is a single keyword.
119
+ if (1 === c.res.length) {
120
+ out.pattern = c.res[0].src;
121
+ }
122
+ else if (1 < c.res.length) {
123
+ out.allOf = c.res.map((r) => ({ pattern: r.src }));
124
+ }
125
+ // A COUNT is a length or a size depending on what is counted, and the
126
+ // residual does not always know which. Where the domain says string,
127
+ // it is minLength/maxLength; otherwise the container keywords, since
128
+ // a count atom on a container is what `length` overwhelmingly means.
129
+ if (null != c.count) {
130
+ const lo = null == c.count.lo ? undefined : scalarJson(c.count.lo.v);
131
+ const hi = null == c.count.hi ? undefined : scalarJson(c.count.hi.v);
132
+ const str = 'string' === c.domain || 'string' === out.type;
133
+ if (null != lo) {
134
+ out[str ? 'minLength' : 'minItems'] = lo;
135
+ }
136
+ if (null != hi) {
137
+ out[str ? 'maxLength' : 'maxItems'] = hi;
138
+ }
139
+ if (!str && null == c.domain) {
140
+ lose(ctx, path, 'length', 'a count with no domain is exported as minItems/maxItems; ' +
141
+ 'JSON Schema has no keyword that counts a string OR a container');
142
+ }
143
+ }
144
+ if (c.uniq) {
145
+ out.uniqueItems = true;
146
+ }
147
+ for (const key of c.uniqBy) {
148
+ lose(ctx, path, 'unique(' + key + ')', 'JSON Schema has no uniqueness-by-property keyword; uniqueItems ' +
149
+ 'compares whole items, so this constraint is DROPPED and the ' +
150
+ 'schema admits records sharing a `' + key + '`');
151
+ }
152
+ if (0 < c.musts.length) {
153
+ lose(ctx, path, 'must', 'an evaluate-only check is opaque by construction -- it carries ' +
154
+ 'the author\'s own message and the algebra never reasons about ' +
155
+ 'it -- so it is DROPPED and the schema admits values `vet` refuses');
156
+ }
157
+ return out;
158
+ }
159
+ // The exporter proper. Every arm answers a schema; the ones that cannot
160
+ // answer honestly report a loss and fall back to `{}`, which admits
161
+ // anything -- the safe direction for a document that will be checked
162
+ // again by `vet`, and the direction the loss report exists to make
163
+ // visible.
164
+ // NO DEFENSIVE GUARD ON `v`. Every caller walks a bag's own children
165
+ // and a bag holds Vals, so a non-Val here is not a degenerate input,
166
+ // it is a bug in this file -- and an unreachable `if` is a branch arm
167
+ // the ADR-002 gate counts and no `node:coverage ignore` suppresses
168
+ // (the marker drops LINES, not branches). Go's twin keeps its `nil ==
169
+ // v` arm because a missing map key there yields a typed nil rather
170
+ // than an absent property.
171
+ // DEPRECATION IS AN ANNOTATION, and 2020-12 has one: `deprecated`.
172
+ // The export used to drop the whole record in SILENCE -- no keyword,
173
+ // and no loss line even under --strict -- which is the one thing the
174
+ // verb's own contract says it never does (use-cases/BUGS.md §56).
175
+ //
176
+ // The boolean crosses faithfully. The record's STRINGS (msg, use,
177
+ // since) have no home in 2020-12, so they are reported as a loss
178
+ // rather than invented into `description`: this exporter emits no
179
+ // `description` anywhere, and quietly making it mean "deprecation
180
+ // note" would be a mapping a consumer cannot undo.
181
+ function fromVal(ctx, path, v) {
182
+ const out = fromValInner(ctx, path, v);
183
+ const dep = v?.deprecation;
184
+ if (null != dep && null != out && 'object' === typeof out) {
185
+ const said = DEPRECATION_TEXT.filter((k) => null != dep[k]);
186
+ if (0 < said.length) {
187
+ lose(ctx, path, 'deprecate', 'JSON Schema 2020-12 has the `deprecated` flag and no field for ' +
188
+ 'what it SAYS, so ' + said.join('/') + ' cannot cross; the ' +
189
+ 'schema marks the property deprecated and a consumer must read ' +
190
+ 'the model for the reason');
191
+ }
192
+ return { ...out, deprecated: true };
193
+ }
194
+ return out;
195
+ }
196
+ // The record's text keys -- the ones with nothing to carry them.
197
+ // `DEPRECATION_KEYS` in DeprecateFuncVal.ts is the authority on what a
198
+ // record may hold; this is that list, and a key added there without a
199
+ // JSON Schema home belongs here too.
200
+ const DEPRECATION_TEXT = ['msg', 'use', 'since'];
201
+ function fromValInner(ctx, path, v) {
202
+ // A preference is its inner value plus a DEFAULT. JSON Schema's
203
+ // `default` is annotation rather than constraint -- it does not
204
+ // validate -- which is exactly what a preference is when something
205
+ // else supplies the value.
206
+ if (true === v.isPref) {
207
+ const inner = fromVal(ctx, path, v.peg);
208
+ const gen = generated(v.peg);
209
+ return undefined === gen ? inner : { ...inner, default: gen };
210
+ }
211
+ if (true === v.isDisjunct && Array.isArray(v.peg)) {
212
+ return fromDisjunct(ctx, path, v);
213
+ }
214
+ if (true === v.isConstraint) {
215
+ return fromConstraint(ctx, path, v);
216
+ }
217
+ // A SIZING RESIDUE is a container and its own sizing atom, kept
218
+ // together because more members could still change the atom's reading
219
+ // (use-cases/BUGS.md §16). Both halves are exportable and both must
220
+ // be: the container gives the shape, the atom gives `uniqueItems` and
221
+ // the length keywords, and a walk that saw only "a conjunct" would
222
+ // report the whole field as unresolved and admit anything.
223
+ const residue = (0, BagVal_1.sizingResidue)(v);
224
+ if (undefined !== residue) {
225
+ return {
226
+ ...fromVal(ctx, path, residue.bag),
227
+ ...fromConstraint(ctx, path, residue.con),
228
+ };
229
+ }
230
+ if (true === v.isMap) {
231
+ return fromMap(ctx, path, v);
232
+ }
233
+ if (true === v.isList) {
234
+ return fromList(ctx, path, v);
235
+ }
236
+ if (true === v.isScalarKind) {
237
+ const t = KIND_TYPE[v.peg?.name];
238
+ if ('BigInteger' === v.peg?.name || 'BigDecimal' === v.peg?.name) {
239
+ lose(ctx, path, v.peg.name.toLowerCase(), 'JSON has one number type and it is binary64, so the EXACTNESS ' +
240
+ 'this leaf exists for cannot be carried; the schema says ' +
241
+ '"' + t + '" and a consumer may round');
242
+ }
243
+ // KIND_TYPE is TOTAL over the kinds a marker can carry, so there is
244
+ // no miss to fall back from -- and a fallback that cannot be taken
245
+ // is a branch arm the coverage gate counts. Go's twin keeps its
246
+ // empty-map arm, which its own ignore mechanism can carry.
247
+ return { type: t };
248
+ }
249
+ if (true === v.isNull) {
250
+ return { type: 'null' };
251
+ }
252
+ if (true === v.isTop) {
253
+ return {};
254
+ }
255
+ if (true === v.isScalar) {
256
+ if (v.isBigInteger || v.isBigDecimal) {
257
+ lose(ctx, path, 'exact literal', 'JSON has one number type and it is binary64, so this exact ' +
258
+ 'value is emitted as the nearest JSON number');
259
+ }
260
+ return { const: scalarJson(v), type: scalarType(v) };
261
+ }
262
+ // Everything else is residue: a reference that did not resolve, a
263
+ // function or operator still waiting, a nil. None of them is a
264
+ // property constraint, and guessing one would be inventing a promise.
265
+ lose(ctx, path, residueName(v), 'this is not a value yet, so there is nothing to constrain a ' +
266
+ 'consumer to; the schema admits anything here');
267
+ return {};
268
+ }
269
+ function residueName(v) {
270
+ return true === v.isNil ? 'nil' :
271
+ true === v.isRef ? 'reference' :
272
+ true === v.isFunc ? v.funcname() :
273
+ 'unresolved';
274
+ }
275
+ // The generated JSON of a value, or undefined where it does not
276
+ // generate. Used for `default` and for `enum` members: both are VALUES
277
+ // in the schema, so a member that is itself a shape has none to give.
278
+ function generated(v) {
279
+ // No try/catch: a collecting context RECORDS a failed generation on
280
+ // itself instead of throwing, which is the whole point of the mode.
281
+ // Neither `vet` nor the Go twin (`schemaGenerated`) wraps this
282
+ // either, and an untakeable catch is a branch arm the gate counts.
283
+ const a0 = new aontu_1.Aontu();
284
+ const ctx = a0.ctx({ collect: true });
285
+ const out = v.gen(ctx);
286
+ return 0 === ctx.err.length ? out : undefined;
287
+ }
288
+ // A disjunction of CONCRETE members is an enum -- the shape a
289
+ // structured-output API constrains best. Anything else is `anyOf`. A
290
+ // preferred member contributes the `default` either way, which is how
291
+ // `*"a"|"b"|"c"` reaches a provider as a defaulted enum.
292
+ function fromDisjunct(ctx, path, v) {
293
+ const members = v.peg;
294
+ let def = undefined;
295
+ for (const m of members) {
296
+ if (true === m?.isPref && undefined === def) {
297
+ def = generated(m.peg);
298
+ }
299
+ }
300
+ const bare = members.map((m) => true === m?.isPref ? m.peg : m);
301
+ const consts = bare.map((m) => true === m?.isScalar && true !== m?.isNil ? scalarJson(m) : undefined);
302
+ const out = consts.every((c) => undefined !== c) ?
303
+ { enum: consts } :
304
+ { anyOf: bare.map((m) => fromVal(ctx, path, m)) };
305
+ return undefined === def ? out : { ...out, default: def };
306
+ }
307
+ function fromMap(ctx, path, v) {
308
+ const props = {};
309
+ const required = [];
310
+ const optional = v.optionalKeys;
311
+ let spread = undefined;
312
+ for (const key of Object.keys(v.peg).sort()) {
313
+ const child = v.peg[key];
314
+ // A hidden child does not generate, so it is not part of the value
315
+ // a consumer produces -- and a schema that demanded it would refuse
316
+ // every correct document.
317
+ if (true === child?.mark?.hide) {
318
+ lose(ctx, [...path, key], 'hide', 'a hidden entry is not generated, so it is omitted from the ' +
319
+ 'schema; a consumer is neither asked for it nor allowed to know ' +
320
+ 'about it');
321
+ continue;
322
+ }
323
+ props[key] = fromVal(ctx, [...path, key], child);
324
+ if (!optional.includes(key)) {
325
+ required.push(key);
326
+ }
327
+ }
328
+ const spr = v.spread?.cj;
329
+ if (null != spr) {
330
+ spread = fromVal(ctx, [...path, '&'], spr);
331
+ }
332
+ const out = { type: 'object', properties: props };
333
+ if (0 < required.length) {
334
+ out.required = required;
335
+ }
336
+ // CLOSEDNESS IS THE ONE THING JSON SCHEMA SAYS EXACTLY AS AONTU DOES.
337
+ // A closed map is `additionalProperties: false`; an open one leaves
338
+ // the keyword off, since JSON Schema's default is already open.
339
+ if (true === v.closed) {
340
+ out.additionalProperties = false;
341
+ if (null != spread) {
342
+ lose(ctx, path, '&:', 'a spread on a CLOSED map constrains keys that cannot exist, ' +
343
+ 'so additionalProperties:false stands alone and the template ' +
344
+ 'is dropped');
345
+ }
346
+ }
347
+ else if (null != spread) {
348
+ // A spread IS additionalProperties-with-a-schema: every key the
349
+ // author did not name must still satisfy the template.
350
+ out.additionalProperties = spread;
351
+ }
352
+ return out;
353
+ }
354
+ function fromList(ctx, path, v) {
355
+ const els = v.peg;
356
+ const spr = v.spread?.cj;
357
+ // A list with a spread template is homogeneous: every element, named
358
+ // or not, satisfies it. That is `items`.
359
+ if (null != spr) {
360
+ const out = {
361
+ type: 'array',
362
+ items: fromVal(ctx, [...path, '&'], spr),
363
+ };
364
+ if (0 < els.length) {
365
+ out.minItems = els.length;
366
+ }
367
+ return out;
368
+ }
369
+ // A written list literal is a TUPLE: position by position, and no
370
+ // more. 2020-12 spells that `prefixItems` plus `items: false`.
371
+ return {
372
+ type: 'array',
373
+ prefixItems: els.map((el, i) => fromVal(ctx, [...path, String(i)], el)),
374
+ items: false,
375
+ minItems: els.length,
376
+ };
377
+ }
378
+ // The verb. Evaluate, anchor, walk, report.
379
+ function jsonSchema(src, options) {
380
+ const opts = options ?? {};
381
+ const aontu = new aontu_1.Aontu(null == opts.trust ? {} : { trust: opts.trust });
382
+ // COLLECT MODE, so a syntax error arrives on the context rather than
383
+ // as a throw -- the same failure Go's `parseEntry` hands back as an
384
+ // error, reached by the branch below. No try/catch here for the same
385
+ // reason `vet` has none: the mode exists so the failure can be
386
+ // reported rather than escape, and a catch that cannot be entered is
387
+ // a branch arm the ADR-002 gate counts.
388
+ const actx = aontu.ctx({ collect: true });
389
+ const root = aontu.unify(src, { path: opts.path, collect: true }, actx);
390
+ // A nil root always arrives with its reason collected beside it, which
391
+ // is failureFinding's stated precondition (ts/src/vet.ts: "ctx.err is
392
+ // never empty at a call site").
393
+ if (0 < actx.err.length || true === root?.isNil) {
394
+ return {
395
+ verdict: 'error', schema: {}, lossy: [],
396
+ errors: [(0, vet_1.failureFinding)(actx, opts.path, root)],
397
+ };
398
+ }
399
+ let node = root;
400
+ const anchor = [];
401
+ if (null != opts.at && '' !== opts.at) {
402
+ const found = (0, vet_2.anchorAt)(root, opts.at);
403
+ if (null == found) {
404
+ // The anchor names nothing. Reported as a `no_path` nil through
405
+ // the same finding shape every other refusal here uses, so a
406
+ // caller reads one error format rather than two.
407
+ const nil = (0, err_1.makeNilErr)(actx, 'no_path', root, undefined, 'at');
408
+ actx.err.push(nil);
409
+ return {
410
+ verdict: 'error', schema: {}, lossy: [],
411
+ errors: [(0, vet_1.failureFinding)(actx, opts.path, root)],
412
+ };
413
+ }
414
+ node = found;
415
+ anchor.push(...opts.at.replace(/^\$/, '').split('.').filter((p) => '' !== p));
416
+ }
417
+ const ctx = { lossy: [] };
418
+ const body = fromVal(ctx, anchor, node);
419
+ return {
420
+ verdict: 0 < ctx.lossy.length ? 'lossy' : 'ok',
421
+ schema: { $schema: DRAFT, ...body },
422
+ lossy: ctx.lossy,
423
+ };
424
+ }
425
+ //# sourceMappingURL=jsonschema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonschema.js","sourceRoot":"","sources":["../src/jsonschema.ts"],"names":[],"mappings":"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"}