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,391 @@
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
+ };
59
+ // The JSON value of a concrete scalar, for `const`, `enum` and
60
+ // `default`. An exact leaf renders through its own digits rather than
61
+ // through binary64 -- and is reported as a loss where it is emitted,
62
+ // because JSON's number has no exactness to receive it.
63
+ function scalarJson(v) {
64
+ if (v.isBigInteger) {
65
+ return Number(v.peg);
66
+ }
67
+ if (v.isBigDecimal) {
68
+ return Number(v.peg.toString());
69
+ }
70
+ return v.peg;
71
+ }
72
+ function scalarType(v) {
73
+ if (v.isBigDecimal) {
74
+ return 'number';
75
+ }
76
+ if (v.isInteger || v.isBigInteger) {
77
+ return 'integer';
78
+ }
79
+ const t = typeof v.peg;
80
+ return 'number' === t ? 'number' : 'boolean' === t ? 'boolean' : 'string';
81
+ }
82
+ // The constraint residual's atoms, onto JSON Schema's keywords. The
83
+ // three that map exactly (bounds, pattern, count) go across; the two
84
+ // that cannot (`must`, `unique(k)`) are reported.
85
+ function fromConstraint(ctx, path, c) {
86
+ const out = {};
87
+ if (null != c.kind && null != KIND_TYPE[c.kind.name]) {
88
+ out.type = KIND_TYPE[c.kind.name];
89
+ }
90
+ else if ('string' === c.domain) {
91
+ out.type = 'string';
92
+ }
93
+ else if ('number' === c.domain) {
94
+ out.type = 'number';
95
+ }
96
+ // Bounds. An OPEN endpoint is JSON Schema's exclusive form, which is
97
+ // a keyword of its own in 2020-12 rather than the boolean flag draft-4
98
+ // used.
99
+ if (null != c.lo) {
100
+ out[c.lo.open ? 'exclusiveMinimum' : 'minimum'] = scalarJson(c.lo.v);
101
+ }
102
+ if (null != c.hi) {
103
+ out[c.hi.open ? 'exclusiveMaximum' : 'maximum'] = scalarJson(c.hi.v);
104
+ }
105
+ // Exclusions. `neq(1,2)` is "not one of these", which is exactly
106
+ // `not: {enum: [...]}`.
107
+ if (0 < c.neqs.length) {
108
+ out.not = { enum: c.neqs.map(scalarJson) };
109
+ }
110
+ // Patterns. Aontu DEFINES its portable subset (`re`'s abbreviations
111
+ // mean the same in both ports); every member of that subset is also
112
+ // an ECMA-262 regular expression, which is what JSON Schema's
113
+ // `pattern` is read as, so this crosses without translation. More
114
+ // than one pattern needs `allOf`: `pattern` is a single keyword.
115
+ if (1 === c.res.length) {
116
+ out.pattern = c.res[0].src;
117
+ }
118
+ else if (1 < c.res.length) {
119
+ out.allOf = c.res.map((r) => ({ pattern: r.src }));
120
+ }
121
+ // A COUNT is a length or a size depending on what is counted, and the
122
+ // residual does not always know which. Where the domain says string,
123
+ // it is minLength/maxLength; otherwise the container keywords, since
124
+ // a count atom on a container is what `length` overwhelmingly means.
125
+ if (null != c.count) {
126
+ const lo = null == c.count.lo ? undefined : scalarJson(c.count.lo.v);
127
+ const hi = null == c.count.hi ? undefined : scalarJson(c.count.hi.v);
128
+ const str = 'string' === c.domain || 'string' === out.type;
129
+ if (null != lo) {
130
+ out[str ? 'minLength' : 'minItems'] = lo;
131
+ }
132
+ if (null != hi) {
133
+ out[str ? 'maxLength' : 'maxItems'] = hi;
134
+ }
135
+ if (!str && null == c.domain) {
136
+ lose(ctx, path, 'length', 'a count with no domain is exported as minItems/maxItems; ' +
137
+ 'JSON Schema has no keyword that counts a string OR a container');
138
+ }
139
+ }
140
+ if (c.uniq) {
141
+ out.uniqueItems = true;
142
+ }
143
+ for (const key of c.uniqBy) {
144
+ lose(ctx, path, 'unique(' + key + ')', 'JSON Schema has no uniqueness-by-property keyword; uniqueItems ' +
145
+ 'compares whole items, so this constraint is DROPPED and the ' +
146
+ 'schema admits records sharing a `' + key + '`');
147
+ }
148
+ if (0 < c.musts.length) {
149
+ lose(ctx, path, 'must', 'an evaluate-only check is opaque by construction -- it carries ' +
150
+ 'the author\'s own message and the algebra never reasons about ' +
151
+ 'it -- so it is DROPPED and the schema admits values `vet` refuses');
152
+ }
153
+ return out;
154
+ }
155
+ // The exporter proper. Every arm answers a schema; the ones that cannot
156
+ // answer honestly report a loss and fall back to `{}`, which admits
157
+ // anything -- the safe direction for a document that will be checked
158
+ // again by `vet`, and the direction the loss report exists to make
159
+ // visible.
160
+ // NO DEFENSIVE GUARD ON `v`. Every caller walks a bag's own children
161
+ // and a bag holds Vals, so a non-Val here is not a degenerate input,
162
+ // it is a bug in this file -- and an unreachable `if` is a branch arm
163
+ // the ADR-002 gate counts and no `node:coverage ignore` suppresses
164
+ // (the marker drops LINES, not branches). Go's twin keeps its `nil ==
165
+ // v` arm because a missing map key there yields a typed nil rather
166
+ // than an absent property.
167
+ function fromVal(ctx, path, v) {
168
+ // A preference is its inner value plus a DEFAULT. JSON Schema's
169
+ // `default` is annotation rather than constraint -- it does not
170
+ // validate -- which is exactly what a preference is when something
171
+ // else supplies the value.
172
+ if (true === v.isPref) {
173
+ const inner = fromVal(ctx, path, v.peg);
174
+ const gen = generated(v.peg);
175
+ return undefined === gen ? inner : { ...inner, default: gen };
176
+ }
177
+ if (true === v.isDisjunct && Array.isArray(v.peg)) {
178
+ return fromDisjunct(ctx, path, v);
179
+ }
180
+ if (true === v.isConstraint) {
181
+ return fromConstraint(ctx, path, v);
182
+ }
183
+ // A SIZING RESIDUE is a container and its own sizing atom, kept
184
+ // together because more members could still change the atom's reading
185
+ // (use-cases/BUGS.md §16). Both halves are exportable and both must
186
+ // be: the container gives the shape, the atom gives `uniqueItems` and
187
+ // the length keywords, and a walk that saw only "a conjunct" would
188
+ // report the whole field as unresolved and admit anything.
189
+ const residue = (0, BagVal_1.sizingResidue)(v);
190
+ if (undefined !== residue) {
191
+ return {
192
+ ...fromVal(ctx, path, residue.bag),
193
+ ...fromConstraint(ctx, path, residue.con),
194
+ };
195
+ }
196
+ if (true === v.isMap) {
197
+ return fromMap(ctx, path, v);
198
+ }
199
+ if (true === v.isList) {
200
+ return fromList(ctx, path, v);
201
+ }
202
+ if (true === v.isScalarKind) {
203
+ const t = KIND_TYPE[v.peg?.name];
204
+ if ('BigInteger' === v.peg?.name || 'BigDecimal' === v.peg?.name) {
205
+ lose(ctx, path, v.peg.name.toLowerCase(), 'JSON has one number type and it is binary64, so the EXACTNESS ' +
206
+ 'this leaf exists for cannot be carried; the schema says ' +
207
+ '"' + t + '" and a consumer may round');
208
+ }
209
+ // KIND_TYPE is TOTAL over the kinds a marker can carry, so there is
210
+ // no miss to fall back from -- and a fallback that cannot be taken
211
+ // is a branch arm the coverage gate counts. Go's twin keeps its
212
+ // empty-map arm, which its own ignore mechanism can carry.
213
+ return { type: t };
214
+ }
215
+ if (true === v.isNull) {
216
+ return { type: 'null' };
217
+ }
218
+ if (true === v.isTop) {
219
+ return {};
220
+ }
221
+ if (true === v.isScalar) {
222
+ if (v.isBigInteger || v.isBigDecimal) {
223
+ lose(ctx, path, 'exact literal', 'JSON has one number type and it is binary64, so this exact ' +
224
+ 'value is emitted as the nearest JSON number');
225
+ }
226
+ return { const: scalarJson(v), type: scalarType(v) };
227
+ }
228
+ // Everything else is residue: a reference that did not resolve, a
229
+ // function or operator still waiting, a nil. None of them is a
230
+ // property constraint, and guessing one would be inventing a promise.
231
+ lose(ctx, path, residueName(v), 'this is not a value yet, so there is nothing to constrain a ' +
232
+ 'consumer to; the schema admits anything here');
233
+ return {};
234
+ }
235
+ function residueName(v) {
236
+ return true === v.isNil ? 'nil' :
237
+ true === v.isRef ? 'reference' :
238
+ true === v.isFunc ? v.funcname() :
239
+ 'unresolved';
240
+ }
241
+ // The generated JSON of a value, or undefined where it does not
242
+ // generate. Used for `default` and for `enum` members: both are VALUES
243
+ // in the schema, so a member that is itself a shape has none to give.
244
+ function generated(v) {
245
+ // No try/catch: a collecting context RECORDS a failed generation on
246
+ // itself instead of throwing, which is the whole point of the mode.
247
+ // Neither `vet` nor the Go twin (`schemaGenerated`) wraps this
248
+ // either, and an untakeable catch is a branch arm the gate counts.
249
+ const a0 = new aontu_1.Aontu();
250
+ const ctx = a0.ctx({ collect: true });
251
+ const out = v.gen(ctx);
252
+ return 0 === ctx.err.length ? out : undefined;
253
+ }
254
+ // A disjunction of CONCRETE members is an enum -- the shape a
255
+ // structured-output API constrains best. Anything else is `anyOf`. A
256
+ // preferred member contributes the `default` either way, which is how
257
+ // `*"a"|"b"|"c"` reaches a provider as a defaulted enum.
258
+ function fromDisjunct(ctx, path, v) {
259
+ const members = v.peg;
260
+ let def = undefined;
261
+ for (const m of members) {
262
+ if (true === m?.isPref && undefined === def) {
263
+ def = generated(m.peg);
264
+ }
265
+ }
266
+ const bare = members.map((m) => true === m?.isPref ? m.peg : m);
267
+ const consts = bare.map((m) => true === m?.isScalar && true !== m?.isNil ? scalarJson(m) : undefined);
268
+ const out = consts.every((c) => undefined !== c) ?
269
+ { enum: consts } :
270
+ { anyOf: bare.map((m) => fromVal(ctx, path, m)) };
271
+ return undefined === def ? out : { ...out, default: def };
272
+ }
273
+ function fromMap(ctx, path, v) {
274
+ const props = {};
275
+ const required = [];
276
+ const optional = v.optionalKeys;
277
+ let spread = undefined;
278
+ for (const key of Object.keys(v.peg).sort()) {
279
+ const child = v.peg[key];
280
+ // A hidden child does not generate, so it is not part of the value
281
+ // a consumer produces -- and a schema that demanded it would refuse
282
+ // every correct document.
283
+ if (true === child?.mark?.hide) {
284
+ lose(ctx, [...path, key], 'hide', 'a hidden entry is not generated, so it is omitted from the ' +
285
+ 'schema; a consumer is neither asked for it nor allowed to know ' +
286
+ 'about it');
287
+ continue;
288
+ }
289
+ props[key] = fromVal(ctx, [...path, key], child);
290
+ if (!optional.includes(key)) {
291
+ required.push(key);
292
+ }
293
+ }
294
+ const spr = v.spread?.cj;
295
+ if (null != spr) {
296
+ spread = fromVal(ctx, [...path, '&'], spr);
297
+ }
298
+ const out = { type: 'object', properties: props };
299
+ if (0 < required.length) {
300
+ out.required = required;
301
+ }
302
+ // CLOSEDNESS IS THE ONE THING JSON SCHEMA SAYS EXACTLY AS AONTU DOES.
303
+ // A closed map is `additionalProperties: false`; an open one leaves
304
+ // the keyword off, since JSON Schema's default is already open.
305
+ if (true === v.closed) {
306
+ out.additionalProperties = false;
307
+ if (null != spread) {
308
+ lose(ctx, path, '&:', 'a spread on a CLOSED map constrains keys that cannot exist, ' +
309
+ 'so additionalProperties:false stands alone and the template ' +
310
+ 'is dropped');
311
+ }
312
+ }
313
+ else if (null != spread) {
314
+ // A spread IS additionalProperties-with-a-schema: every key the
315
+ // author did not name must still satisfy the template.
316
+ out.additionalProperties = spread;
317
+ }
318
+ return out;
319
+ }
320
+ function fromList(ctx, path, v) {
321
+ const els = v.peg;
322
+ const spr = v.spread?.cj;
323
+ // A list with a spread template is homogeneous: every element, named
324
+ // or not, satisfies it. That is `items`.
325
+ if (null != spr) {
326
+ const out = {
327
+ type: 'array',
328
+ items: fromVal(ctx, [...path, '&'], spr),
329
+ };
330
+ if (0 < els.length) {
331
+ out.minItems = els.length;
332
+ }
333
+ return out;
334
+ }
335
+ // A written list literal is a TUPLE: position by position, and no
336
+ // more. 2020-12 spells that `prefixItems` plus `items: false`.
337
+ return {
338
+ type: 'array',
339
+ prefixItems: els.map((el, i) => fromVal(ctx, [...path, String(i)], el)),
340
+ items: false,
341
+ minItems: els.length,
342
+ };
343
+ }
344
+ // The verb. Evaluate, anchor, walk, report.
345
+ function jsonSchema(src, options) {
346
+ const opts = options ?? {};
347
+ const aontu = new aontu_1.Aontu(null == opts.trust ? {} : { trust: opts.trust });
348
+ // COLLECT MODE, so a syntax error arrives on the context rather than
349
+ // as a throw -- the same failure Go's `parseEntry` hands back as an
350
+ // error, reached by the branch below. No try/catch here for the same
351
+ // reason `vet` has none: the mode exists so the failure can be
352
+ // reported rather than escape, and a catch that cannot be entered is
353
+ // a branch arm the ADR-002 gate counts.
354
+ const actx = aontu.ctx({ collect: true });
355
+ const root = aontu.unify(src, { path: opts.path, collect: true }, actx);
356
+ // A nil root always arrives with its reason collected beside it, which
357
+ // is failureFinding's stated precondition (ts/src/vet.ts: "ctx.err is
358
+ // never empty at a call site").
359
+ if (0 < actx.err.length || true === root?.isNil) {
360
+ return {
361
+ verdict: 'error', schema: {}, lossy: [],
362
+ errors: [(0, vet_1.failureFinding)(actx, opts.path, root)],
363
+ };
364
+ }
365
+ let node = root;
366
+ const anchor = [];
367
+ if (null != opts.at && '' !== opts.at) {
368
+ const found = (0, vet_2.anchorAt)(root, opts.at);
369
+ if (null == found) {
370
+ // The anchor names nothing. Reported as a `no_path` nil through
371
+ // the same finding shape every other refusal here uses, so a
372
+ // caller reads one error format rather than two.
373
+ const nil = (0, err_1.makeNilErr)(actx, 'no_path', root, undefined, 'at');
374
+ actx.err.push(nil);
375
+ return {
376
+ verdict: 'error', schema: {}, lossy: [],
377
+ errors: [(0, vet_1.failureFinding)(actx, opts.path, root)],
378
+ };
379
+ }
380
+ node = found;
381
+ anchor.push(...opts.at.replace(/^\$/, '').split('.').filter((p) => '' !== p));
382
+ }
383
+ const ctx = { lossy: [] };
384
+ const body = fromVal(ctx, anchor, node);
385
+ return {
386
+ verdict: 0 < ctx.lossy.length ? 'lossy' : 'ok',
387
+ schema: { $schema: DRAFT, ...body },
388
+ lossy: ctx.lossy,
389
+ };
390
+ }
391
+ //# sourceMappingURL=jsonschema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonschema.js","sourceRoot":"","sources":["../src/jsonschema.ts"],"names":[],"mappings":"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"}