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,604 @@
1
+ "use strict";
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RelVal = exports.RelFuncVal = exports.ReferVal = exports.ReferFuncVal = void 0;
5
+ exports.addressPath = addressPath;
6
+ exports.findAt = findAt;
7
+ const type_1 = require("../type");
8
+ const err_1 = require("../err");
9
+ const FuncBaseVal_1 = require("./FuncBaseVal");
10
+ const PathVal_1 = require("./PathVal");
11
+ const FeatureVal_1 = require("./FeatureVal");
12
+ const ConjunctVal_1 = require("./ConjunctVal");
13
+ const unify_1 = require("../unify");
14
+ const top_1 = require("./top");
15
+ const utility_1 = require("../utility");
16
+ // A RELATION PREDICATE is still a declared D-1 name
17
+ // (docs/design/RELATIONS.0.md §3.2). Entity names are gone with
18
+ // ADR-014; predicate names are not -- a relation is a vocabulary term,
19
+ // not an address.
20
+ const PREDICATE_NAME = /^[_a-zA-Z][-_a-zA-Z0-9]*$/;
21
+ // The tree path an address resolves to from `at` -- the position of
22
+ // the link itself -- or undefined when a relative address climbs off
23
+ // the top of the tree.
24
+ function addressPath(addr, at) {
25
+ if (addr.absolute) {
26
+ return addr.parts;
27
+ }
28
+ // The SIBLING scope: drop the link's own key, then take the parent
29
+ // steps. A link at `$.a.b.dep` spelling `.other` means `$.a.b.other`.
30
+ const cut = at.length - 1 - addr.up;
31
+ if (cut < 0) {
32
+ return undefined;
33
+ }
34
+ return at.slice(0, cut).map(String).concat(addr.parts);
35
+ }
36
+ // The node a tree path names, with the parent and key that hold it so
37
+ // a type flow can be written back. Pending is not failure: the target
38
+ // may be introduced by a later conjunct, include or spread, so `refer`
39
+ // residuates exactly as a forward reference does.
40
+ function findAt(root, path) {
41
+ if (null == root || 0 === path.length) {
42
+ return undefined;
43
+ }
44
+ let parent = undefined;
45
+ let key = undefined;
46
+ let val = root;
47
+ for (const seg of path) {
48
+ if (true !== val?.isMap && true !== val?.isList) {
49
+ return undefined;
50
+ }
51
+ const next = val.peg[seg];
52
+ if (null == next) {
53
+ return undefined;
54
+ }
55
+ parent = val;
56
+ key = seg;
57
+ val = next;
58
+ }
59
+ return { parent, key, val };
60
+ }
61
+ // concreteFlow is `t` as it enters the target: a copy with the
62
+ // type/hide marks cleared at every depth. The clone matters as much as
63
+ // the clearing — `t` is shared by every position that refers to the
64
+ // same thing, and clearing in place would unmark the schema itself.
65
+ function concreteFlow(ctx, t) {
66
+ let marked = false;
67
+ (0, utility_1.walk)(t, (_key, v) => {
68
+ marked = marked || v.mark.type || v.mark.hide;
69
+ return v;
70
+ });
71
+ // An unmarked flow type is passed THROUGH: cloning one anyway would
72
+ // move the site an error names, and a conflict has to point at what
73
+ // the author wrote.
74
+ if (!marked) {
75
+ return t;
76
+ }
77
+ const out = t.clone(ctx);
78
+ (0, utility_1.walk)(out, (_key, v) => {
79
+ v.mark.type = false;
80
+ v.mark.hide = false;
81
+ return v;
82
+ });
83
+ return out;
84
+ }
85
+ // ReferVal is what `refer(t)` RESOLVES to: the residual constraint,
86
+ // carrying the type to flow and — once it has met a string — the
87
+ // address to flow it into. A separate value from the function for the
88
+ // reason every residual is: the function is written once and the
89
+ // constraint is met many times, and only the constraint has state
90
+ // worth carrying.
91
+ class ReferVal extends FeatureVal_1.FeatureVal {
92
+ constructor(spec, ctx) {
93
+ super(spec, ctx);
94
+ this.isRefer = true;
95
+ this.isGenable = true;
96
+ // AFTER the plain values (base 99999), BEFORE the sizing atoms
97
+ // (LATE_CJO): sibling path values fold together first under the
98
+ // prefix rule, and the residual then meets ONE merged address --
99
+ // without this, `refer() & path($.a) & path($.a.b)` settled on the
100
+ // first path and the second met the finished link too late.
101
+ this.cjo = 120000;
102
+ // The codes this residual refuses with: refer() keeps its own,
103
+ // rel()-minted residuals carry rel_address/rel_unresolved.
104
+ this.addrcode = 'refer_address';
105
+ this.unresolvedcode = 'refer_unresolved';
106
+ this.tval = spec.tval ?? (0, top_1.top)();
107
+ this.addr = spec.addr;
108
+ this.addrsrc = spec.addrsrc;
109
+ this.held = spec.held;
110
+ this.dc = 0;
111
+ }
112
+ // The residual's own state — the type to flow, the address it has
113
+ // met, the constraints it holds — TRAVELS with the clone. A spread
114
+ // template holds the FUNCTION, so a template never needs this; a
115
+ // REFERENCE to a value that already contains a resolved link does
116
+ // (`z: {u: refer() & "$.a"}` then `s: $.z`). Without it the
117
+ // clone came back as a bare `refer()` — the address silently
118
+ // dropped, and the copied link resolving to nothing.
119
+ //
120
+ // No path-dependence hook, though: a residual is minted at its
121
+ // destination, so `key()` inside a template resolves there already.
122
+ clone(ctx, spec) {
123
+ const out = super.clone(ctx, spec);
124
+ out.tval = this.tval;
125
+ out.addr = this.addr;
126
+ out.addrsrc = this.addrsrc;
127
+ out.held = this.held;
128
+ out.relkey = this.relkey;
129
+ out.addrcode = this.addrcode;
130
+ out.unresolvedcode = this.unresolvedcode;
131
+ return out;
132
+ }
133
+ unify(peer, ctx) {
134
+ const p = peer;
135
+ // Another `refer` at the same position: one constraint, both
136
+ // types. `refer(A) & refer(B)` is a target that must be both.
137
+ if (true === p?.isRefer) {
138
+ return this.with(ctx, {
139
+ tval: (0, unify_1.unite)(ctx, this.tval, p.tval, 'refer-t'),
140
+ addr: this.addr ?? p.addr,
141
+ addrsrc: this.addrsrc ?? p.addrsrc,
142
+ held: null == this.held ? p.held
143
+ : null == p.held ? this.held
144
+ : (0, unify_1.unite)(ctx, this.held, p.held, 'refer-held'),
145
+ }, this);
146
+ }
147
+ if (null == peer || true === p.isTop) {
148
+ return this.settle(ctx, this);
149
+ }
150
+ if (true === p.isNil) {
151
+ return peer;
152
+ }
153
+ // A PATH VALUE is the ADDRESS, when there is not one yet. Only a
154
+ // path value can be one (PATHS.0.md, amended): a bare string is
155
+ // never a path -- `path("...")` is the one string conversion, and
156
+ // it happens at the call, not here. The peg is pre-validated by
157
+ // the capture, so no parse can fail.
158
+ if (undefined === this.addr && true === p.isPath) {
159
+ const addr = (0, PathVal_1.parseAddress)(p.peg);
160
+ return this.with(ctx, { addr, addrsrc: p.peg }, peer);
161
+ }
162
+ // A SECOND path peer refines the address by the prefix rule: the
163
+ // longer of the two when one opens the other, exactly as two path
164
+ // values meet on their own. Two incomparable addresses are the
165
+ // same conflict two unequal scalars are.
166
+ if (undefined !== this.addr && true === p.isPath) {
167
+ const merged = (0, PathVal_1.prefixMeet)(this.addrsrc, p.peg);
168
+ if (undefined === merged) {
169
+ return (0, err_1.makeNilErr)(ctx, 'scalar_value', this, peer);
170
+ }
171
+ return this.with(ctx, { addr: (0, PathVal_1.parseAddress)(merged), addrsrc: merged }, peer);
172
+ }
173
+ // A value that can never BE a path cannot be the address, and no
174
+ // later pass can repair it — so this arm refuses rather than
175
+ // defers. A bare STRING is in it now (PATHS.0.md, amended):
176
+ // `path("...")` is the one conversion, at the call. A KIND or a
177
+ // constraint is not in it: `string`, `re("^svc_")` and the like
178
+ // are perfectly good constraints on an address, and are held
179
+ // below until there is one to apply them to.
180
+ if ((true === p.isScalar && true !== p.isPath)
181
+ || true === p.isMap || true === p.isList) {
182
+ return (0, err_1.makeNilErr)(ctx, this.addrcode, this, peer, 'refer');
183
+ }
184
+ // HELD: everything else waits for the address. Carried on the
185
+ // residual rather than parked in a conjunct, because a conjunct
186
+ // rebuilt every pass grows a level every pass; the held constraint
187
+ // meets the link the moment the address resolves, so
188
+ // `refer() & re("a") & re("b") & path($.z)` still applies both and
189
+ // `refer() & string & path($.z)` still passes.
190
+ return this.with(ctx, {
191
+ held: null == this.held ? peer : (0, unify_1.unite)(ctx, this.held, peer, 'refer-held'),
192
+ }, this);
193
+ }
194
+ // with is the residual reshaped: every arm above answers a NEW
195
+ // ReferVal rather than mutating this one, because a spread template's
196
+ // residual is shared by every child it is applied to.
197
+ with(ctx, spec, site) {
198
+ const out = new ReferVal({}, ctx);
199
+ out.tval = spec.tval ?? this.tval;
200
+ out.addr = spec.addr ?? this.addr;
201
+ out.addrsrc = spec.addrsrc ?? this.addrsrc;
202
+ out.held = spec.held ?? this.held;
203
+ out.relkey = this.relkey;
204
+ out.addrcode = this.addrcode;
205
+ out.unresolvedcode = this.unresolvedcode;
206
+ (0, utility_1.propagateMarks)(this, out);
207
+ out.site = site.site;
208
+ out.path = this.path;
209
+ return out.settle(ctx, site);
210
+ }
211
+ // settle answers the address if the evaluation can, and stays
212
+ // pending if it cannot YET. `site` is the value whose position the
213
+ // resolved string should take.
214
+ settle(ctx, site) {
215
+ if (undefined === this.addr) {
216
+ // NOT DONE, unlike `string` or `min(1)`. A refer without an
217
+ // address has not done its work — it exists to check one — and
218
+ // the pass loop must keep offering it the chance. The cost is
219
+ // that a SCHEMA mentioning a link never resolves either, so
220
+ // `type({from: refer($.std.Port)})` is not expressible today;
221
+ // G4 phase 4 records why, and what it would take.
222
+ this.dc = 0;
223
+ return this;
224
+ }
225
+ // The address is a TREE PATH, resolved from the link's own
226
+ // position for a relative one. A climb off the top of the tree can
227
+ // never be repaired by a later pass, so it refuses at once.
228
+ const target = addressPath(this.addr, this.path);
229
+ if (undefined === target) {
230
+ return (0, err_1.makeNilErr)(ctx, this.unresolvedcode, this, undefined, 'refer', { addr: this.addrsrc });
231
+ }
232
+ const found = findAt(ctx?.root, target);
233
+ if (undefined === found) {
234
+ // PENDING, not failed — until the last pass. The target may be
235
+ // introduced by a later conjunct, include or spread, so `refer`
236
+ // residuates as a forward reference does; but within ONE
237
+ // evaluation the document-set is fixed, so existence IS
238
+ // decidable, and the final pass is where it is decided. A
239
+ // pending refer keeps the tree not-done, so the pass loop always
240
+ // reaches that pass when there is one to decide.
241
+ if (ctx.cc + 1 >= ctx.budget.passes) {
242
+ return (0, err_1.makeNilErr)(ctx, this.unresolvedcode, this, undefined, 'refer', { addr: this.addrsrc });
243
+ }
244
+ this.dc = 0;
245
+ return this;
246
+ }
247
+ // THE FLOW. `t` is unified into the target and written back at the
248
+ // target's own position — one position, because the tree is the
249
+ // namespace and a path names exactly one node.
250
+ //
251
+ // RE-ENTRANT ONLY ONCE PER TARGET (use-cases/BUGS.md §19). Uniting
252
+ // the target drives the target's OWN subtree, and if the target
253
+ // links back — `a` typed-refers `b`, `b` typed-refers `a`, the
254
+ // shape every inverse pair has — that drives this target again,
255
+ // and the two flow into each other until the depth budget or the
256
+ // host stack ends it. `unify_cycle` on a model whose meet plainly
257
+ // converges: `{k:1}` meeting `{k:1}` is a fixpoint, and the
258
+ // evaluator never got far enough to notice.
259
+ //
260
+ // The guard is the set of paths a flow is currently inside, on the
261
+ // context. A flow that would re-enter one has its MEET skipped:
262
+ // the outer flow it is nested in is already uniting that node, and
263
+ // re-entering is what runs the host stack out.
264
+ //
265
+ // ITS RECORD IS STILL WRITTEN. The skip used to take the record
266
+ // with it, on the reasoning that "the same information arrives by
267
+ // the same channel one frame up" -- true of the outer flow's TYPE,
268
+ // and false of a nested flow carrying a DIFFERENT one. The outer
269
+ // flow delivers only its own type, the residual is consumed into a
270
+ // settled link in the same breath, and nothing re-offers it: the
271
+ // nested type was lost for good, and which of two flows was the
272
+ // nested one depended on which link the evaluator happened to
273
+ // reach first. A layering rule declared on one field and reached
274
+ // through another module's mirror therefore held in one
275
+ // declaration order and not in the other (BUGS.md 69).
276
+ //
277
+ // Recording it DEFERS the meet to `applyFlows`, which runs at the
278
+ // top of the tree with no flow in flight and so cannot re-enter
279
+ // anything -- the channel this record already exists to be.
280
+ const guard = target.join('.');
281
+ // Seeded on the unify root (ts/src/unify.ts): a `??=` here would
282
+ // make a fresh set on whichever descended context asked first.
283
+ const flowing = ctx._referflow ?? new Set();
284
+ if (!this.tval.isTop) {
285
+ // The flowed type is CONCRETE at the target: a schema flowing
286
+ // into a value must not make the value a schema. Same reasoning
287
+ // as a reference's clone clearing marks — `refer($.std.Service)`
288
+ // says the target IS a Service, not that it is the definition
289
+ // of one — and without it the target silently stopped
290
+ // generating.
291
+ const flow = concreteFlow(ctx, this.tval);
292
+ // THE RECORD, keyed by the target's path, replayed onto every
293
+ // later pass by applyFlows in ts/src/unify.ts. A pass rebuilds
294
+ // subtrees, so the write below does not survive one when the
295
+ // link sits inside its own target or two nodes link at each
296
+ // other; the record is what makes the flow reach the result
297
+ // rather than the tree it was computed from.
298
+ const flows = ctx.referflows ??
299
+ new Map();
300
+ const key = target.join('\x00');
301
+ const prev = flows.get(key);
302
+ flows.set(key, null == prev ? flow : (0, unify_1.unite)(ctx, prev, flow, 'refer-flow-record'));
303
+ if (!flowing.has(guard)) {
304
+ flowing.add(guard);
305
+ try {
306
+ const merged = (0, unify_1.unite)(ctx, found.val, flow, 'refer-flow');
307
+ if (true === merged.isNil) {
308
+ return merged;
309
+ }
310
+ // The write into THIS pass's view, so the rest of the pass
311
+ // sees it. findAt refuses the empty path, so a resolved
312
+ // target always has a parent holding it.
313
+ //
314
+ // NOT FROM INSIDE A TRIAL. A disjunction member is a
315
+ // HYPOTHESIS, and writing its flow into the live tree
316
+ // asserts the member's type on another node before the
317
+ // member is known to survive. The `unite` above still runs:
318
+ // its nil is how a member legitimately fails. Only the
319
+ // COMMIT waits, and the surviving member's flow reaches the
320
+ // tree on the next pass, from the record DisjunctVal stages
321
+ // and merges for survivors alone.
322
+ if (true !== ctx._trialMode) {
323
+ found.parent.peg[found.key] = merged;
324
+ }
325
+ }
326
+ finally {
327
+ flowing.delete(guard);
328
+ }
329
+ }
330
+ }
331
+ // The value IS the address, as a PATH VALUE (ADR-016): a link,
332
+ // not an embedding -- and re-stating or refining the address
333
+ // still meets it, which a string link could not do under the
334
+ // strict rules.
335
+ const out = new PathVal_1.PathVal({ peg: this.addrsrc }, ctx);
336
+ out.dc = type_1.DONE;
337
+ // STAMPED as a link (G4 phase 3): the value is the address string,
338
+ // so without this nothing downstream could tell a checked link from
339
+ // a literal that happens to look like one. The edge set is exactly
340
+ // the set of these stamps. A rel()-minted link also carries its
341
+ // PREDICATE (the rel field's key), so the graph reports a declared
342
+ // relation rather than inferring one from the path.
343
+ //
344
+ // The stamp is the RESOLVED path, not the written one: a relative
345
+ // address means a different node from each position it is written
346
+ // at, and an edge set whose far ends were spellings rather than
347
+ // nodes could not be traversed. The VALUE stays what the author
348
+ // wrote --- the link is what it says, the edge is where it goes.
349
+ out.link = '$.' + target.join('.');
350
+ if (undefined !== this.relkey) {
351
+ out.relkey = this.relkey;
352
+ }
353
+ (0, utility_1.propagateMarks)(this, out);
354
+ out.site = site.site;
355
+ out.path = this.path;
356
+ return null == this.held ? out : (0, unify_1.unite)(ctx, out, this.held, 'refer-held');
357
+ }
358
+ get canon() {
359
+ const t = this.tval.isTop ? '' : this.tval.canon;
360
+ const call = 'refer(' + t + ')' +
361
+ (null == this.held ? '' : '&' + this.held.canon);
362
+ // The address renders as the path call: a bare string address no
363
+ // longer reparses (PATHS.0.md, amended), and canon must.
364
+ return undefined === this.addrsrc
365
+ ? call : call + '&path(' + this.addrsrc + ')';
366
+ }
367
+ }
368
+ exports.ReferVal = ReferVal;
369
+ // RelVal is what `rel(t?)` RESOLVES to (RELATIONS.0.md §3.2): the
370
+ // relation constraint, sited on the FIELD the way the sizing atoms sit
371
+ // on containers. Its value may be one address, a LIST of addresses, or
372
+ // a MAP whose string leaves are addresses -- the container shapes are
373
+ // rewritten leaf by leaf through the refer machinery, so pending
374
+ // resolution, type flow and link stamping are the one battle-tested
375
+ // path, and the data side stays plain strings. The PREDICATE of every
376
+ // edge produced is the key the rel() sits on -- declared once, in the
377
+ // schema, never inferred from the path.
378
+ class RelVal extends FeatureVal_1.FeatureVal {
379
+ constructor(spec, ctx) {
380
+ super(spec, ctx);
381
+ this.isRel = true;
382
+ this.isGenable = true;
383
+ this.cjo = 45000;
384
+ this.tval = spec.tval ?? (0, top_1.top)();
385
+ this.held = spec.held;
386
+ // DONE while unmet, deliberately -- the property refer() lacks and
387
+ // G4 phase 4 records the cost of: a type() body holding a rel()
388
+ // must SETTLE, or the schema idiom (`dependsOn?: rel($.T)` inside
389
+ // a vocabulary) leaves the type unresolved and every reference to
390
+ // it deferring forever. An unmet rel is its own settled residual,
391
+ // like `min(1)`; the meet re-activates it whenever a value
392
+ // arrives, because map merges build the conjunct regardless.
393
+ this.dc = type_1.DONE;
394
+ }
395
+ clone(ctx, spec) {
396
+ const out = super.clone(ctx, spec);
397
+ out.tval = this.tval;
398
+ out.held = this.held;
399
+ return out;
400
+ }
401
+ // The predicate: the last segment of the field path the constraint
402
+ // is being APPLIED at -- when that segment is a D-1 NAME. A relation
403
+ // predicate is a declared name (RELATIONS.0.md §3.2), so a list
404
+ // index or a key outside the name grammar produces unlabelled
405
+ // links, and the graph falls back to its old inference. The D-1
406
+ // test is also what keeps the two ports' edges identical: a list
407
+ // index is a number here and a string in Go.
408
+ //
409
+ // THE PATH COMES FROM THE CONTEXT, not from `this.path`. The val's
410
+ // own path records where this constraint was CLONED FROM, and the
411
+ // two part company the moment a second document merges into an
412
+ // entity: the field's constraint is then driven at the ENTITY, and
413
+ // `this.path` names the entity while the context names the field.
414
+ // The predicate became the entity's own key, every link under it
415
+ // minted an edge starting one level too high, and `inverse(n)`
416
+ // reported a mirror that was written as missing.
417
+ fieldkey(ctx) {
418
+ const path = ctx.path;
419
+ const seg = path[path.length - 1];
420
+ return 'string' === typeof seg && PREDICATE_NAME.test(seg) ? seg : undefined;
421
+ }
422
+ // One leaf's residual: the refer machinery carrying rel's codes,
423
+ // predicate and type. The predicate is passed IN, because the field
424
+ // it names is decided where the rewrite starts and must not be
425
+ // re-read on the way down (see `rewriteUnder`).
426
+ leafRefer(ctx, relkey) {
427
+ const rv = new ReferVal({ tval: this.tval }, ctx);
428
+ rv.addrcode = 'rel_address';
429
+ rv.unresolvedcode = 'rel_unresolved';
430
+ rv.relkey = relkey;
431
+ rv.site = this.site;
432
+ rv.path = this.path;
433
+ return rv;
434
+ }
435
+ // The container, every string leaf wrapped as a link. Nested
436
+ // containers descend; a leaf already STAMPED as a link is left
437
+ // alone, which is what makes a second application (a template
438
+ // re-applied, a later pass) a no-op.
439
+ rewrite(ctx, container) {
440
+ return this.rewriteUnder(ctx, container, this.fieldkey(ctx));
441
+ }
442
+ // The rewrite proper, carrying the predicate decided at the field.
443
+ // It is decided ONCE, at the top: a map-valued relation
444
+ // (`dependsOn: {primary: [...]}`) descends through the inner label
445
+ // and must still report `dependsOn`, which is the whole reason a
446
+ // link carries a declared predicate rather than letting the graph
447
+ // infer one from its position.
448
+ rewriteUnder(ctx, container, relkey) {
449
+ const out = container.clone(ctx);
450
+ const peg = out.peg;
451
+ const keys = Array.isArray(peg)
452
+ ? peg.map((_v, i) => i) : Object.keys(peg);
453
+ let pending = false;
454
+ let nested = false;
455
+ for (const k of keys) {
456
+ // Children here are always Vals: the parse builds Vals, elision
457
+ // builds a NilVal, and clone preserved whatever the container
458
+ // held.
459
+ const child = peg[k];
460
+ if (true === child.isMap || true === child.isList) {
461
+ nested = true;
462
+ const sub = this.rewriteUnder(ctx.descend('' + k), child, relkey);
463
+ peg[k] = sub;
464
+ pending = pending || true !== sub.done;
465
+ }
466
+ else if (undefined === child.link) {
467
+ let leaf = (0, unify_1.unite)(ctx.descend('' + k), this.leafRefer(ctx, relkey), child, 'rel-leaf');
468
+ // The held constraints apply PER LEAF: a re() on the relation
469
+ // constrains every address, never the container that holds
470
+ // them (found by the service catalog, whose re("^svc_") met
471
+ // the whole list and refused it).
472
+ if (null != this.held) {
473
+ leaf = (0, unify_1.unite)(ctx.descend('' + k), leaf, this.held, 'rel-held');
474
+ }
475
+ peg[k] = leaf;
476
+ pending = pending || true !== leaf.done;
477
+ }
478
+ }
479
+ // The rewrite holds its PENDING leaves open (an address whose
480
+ // entity a later statement declares), so the pass loop keeps
481
+ // driving the container until every link settles. A rewrite that
482
+ // minted NOTHING pending -- every leaf already linked or settled
483
+ // in place -- keeps the clone's doneness: re-applying a template
484
+ // over a settled value must converge in the same pass, or the
485
+ // enclosing bags reopen forever (the service catalog, where the
486
+ // entity merge drops the spread stamp each pass).
487
+ if (pending) {
488
+ out.dc = 0;
489
+ }
490
+ // Elements that arrive AFTER this rewrite -- another statement of
491
+ // the list, a patch position of the entity -- must convert too, so
492
+ // the rewrite installs its own leaf constraint as the container's
493
+ // ELEMENT SPREAD, exactly the machinery the old per-element
494
+ // `[&: refer()]` idiom used. Only on a FLAT address container (a
495
+ // labelled map's sub-containers get their own spread from the
496
+ // recursion above; a leaf template meeting a map child would
497
+ // refuse it), and only where no spread already stands: a schema's
498
+ // own template is not this rewrite's to clobber.
499
+ if (!nested && null == out.spread.cj) {
500
+ let tmpl = this.leafRefer(ctx, relkey);
501
+ if (null != this.held) {
502
+ tmpl = new ConjunctVal_1.ConjunctVal({ peg: [tmpl, this.held] }, ctx);
503
+ }
504
+ ;
505
+ out.spread.cj = tmpl;
506
+ }
507
+ return out;
508
+ }
509
+ unify(peer, ctx) {
510
+ const p = peer;
511
+ // Two rel() at one field: one relation, both types.
512
+ if (true === p?.isRel) {
513
+ const out = new RelVal({}, ctx);
514
+ out.tval = (0, unify_1.unite)(ctx, this.tval, p.tval, 'rel-t');
515
+ out.held = null == this.held ? p.held
516
+ : null == p.held ? this.held
517
+ : (0, unify_1.unite)(ctx, this.held, p.held, 'rel-held');
518
+ (0, utility_1.propagateMarks)(this, out);
519
+ out.site = this.site;
520
+ out.path = this.path;
521
+ return out;
522
+ }
523
+ // No null/top/nil arms: unite's dispatch ladder absorbs those
524
+ // peers before any Val's own unify is consulted (a null or top
525
+ // peer returns this side; a nil peer returns the nil), and unite
526
+ // is the only entrance -- the container hand-offs pass the
527
+ // container itself.
528
+ // ONE ADDRESS: the scalar-valued field, refer's own shape. A path
529
+ // value only -- a bare string is never an address (PATHS.0.md,
530
+ // amended); the scalar arm below refuses it.
531
+ if (true === p.isPath) {
532
+ const out = (0, unify_1.unite)(ctx, this.leafRefer(ctx, this.fieldkey(ctx)), peer, 'rel-scalar');
533
+ return null == this.held ? out
534
+ : (0, unify_1.unite)(ctx, out, this.held, 'rel-held');
535
+ }
536
+ // A SET OF LINKS: list or map, rewritten leaf by leaf; the held
537
+ // constraints ride into each leaf inside the rewrite.
538
+ if (true === p.isMap || true === p.isList) {
539
+ return this.rewrite(ctx, peer);
540
+ }
541
+ // A scalar that can never be an address.
542
+ if (true === p.isScalar) {
543
+ return (0, err_1.makeNilErr)(ctx, 'rel_address', this, peer, 'refer');
544
+ }
545
+ // Everything else -- a reference still resolving, a kind, a
546
+ // container constraint -- waits for the value, as refer's held
547
+ // does.
548
+ const out = new RelVal({}, ctx);
549
+ out.tval = this.tval;
550
+ out.held = null == this.held ? peer
551
+ : (0, unify_1.unite)(ctx, this.held, peer, 'rel-held');
552
+ (0, utility_1.propagateMarks)(this, out);
553
+ out.site = this.site;
554
+ out.path = this.path;
555
+ return out;
556
+ }
557
+ get canon() {
558
+ const t = this.tval.isTop ? '' : this.tval.canon;
559
+ return 'rel(' + t + ')' +
560
+ (null == this.held ? '' : '&' + this.held.canon);
561
+ }
562
+ }
563
+ exports.RelVal = RelVal;
564
+ class RelFuncVal extends FuncBaseVal_1.FuncBaseVal {
565
+ constructor(spec, ctx) {
566
+ super(spec, ctx);
567
+ this.isRelFunc = true;
568
+ }
569
+ make(_ctx, spec) {
570
+ return new RelFuncVal(spec);
571
+ }
572
+ funcname() {
573
+ return 'rel';
574
+ }
575
+ resolve(ctx, args) {
576
+ const out = new RelVal({}, ctx);
577
+ out.tval = 0 < args.length ? args[0] : (0, top_1.top)();
578
+ out.site = this.site;
579
+ out.path = this.path;
580
+ return out;
581
+ }
582
+ }
583
+ exports.RelFuncVal = RelFuncVal;
584
+ class ReferFuncVal extends FuncBaseVal_1.FuncBaseVal {
585
+ constructor(spec, ctx) {
586
+ super(spec, ctx);
587
+ this.isReferFunc = true;
588
+ }
589
+ make(_ctx, spec) {
590
+ return new ReferFuncVal(spec);
591
+ }
592
+ funcname() {
593
+ return 'refer';
594
+ }
595
+ resolve(ctx, args) {
596
+ const out = new ReferVal({}, ctx);
597
+ out.tval = 0 < args.length ? args[0] : (0, top_1.top)();
598
+ out.site = this.site;
599
+ out.path = this.path;
600
+ return out;
601
+ }
602
+ } /* node:coverage ignore next 10 */
603
+ exports.ReferFuncVal = ReferFuncVal;
604
+ //# sourceMappingURL=ReferFuncVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferFuncVal.js","sourceRoot":"","sources":["../../src/val/ReferFuncVal.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,11 @@ declare class BigDecimal {
11
11
  }
12
12
  declare class Null {
13
13
  }
14
+ declare class Path {
15
+ }
14
16
  declare function kindParent(kind: any): any;
15
- declare function kindFamily(kind: any): any;
16
17
  declare function kindSubsumes(sup: any, sub: any): boolean;
17
- type ScalarConstructor = StringConstructor | NumberConstructor | BooleanConstructor | (typeof Integer) | (typeof Float) | (typeof BigInteger) | (typeof BigDecimal) | (typeof Null) | (typeof Integer.constructor);
18
+ type ScalarConstructor = StringConstructor | NumberConstructor | BooleanConstructor | (typeof Integer) | (typeof Float) | (typeof BigInteger) | (typeof BigDecimal) | (typeof Null) | (typeof Path) | (typeof Integer.constructor);
18
19
  declare class ScalarKindVal extends FeatureVal {
19
20
  isScalarKind: boolean;
20
21
  constructor(spec: ValSpec, ctx?: AontuContext);
@@ -23,4 +24,4 @@ declare class ScalarKindVal extends FeatureVal {
23
24
  superior(): Val;
24
25
  same(peer: any): boolean;
25
26
  }
26
- export { BigDecimal, BigInteger, Float, Integer, Null, ScalarConstructor, ScalarKindVal, kindFamily, kindParent, kindSubsumes, };
27
+ export { BigDecimal, BigInteger, Float, Integer, Null, Path, ScalarConstructor, ScalarKindVal, kindParent, kindSubsumes, };