@astrale-os/kernel-dsl 1.0.0-beta.2 → 1.0.0-beta.20

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 (307) hide show
  1. package/dist/v1/addressing/class-key.js +3 -3
  2. package/dist/v1/addressing/definition-ref.js +21 -37
  3. package/dist/v1/addressing/domain-dependency.d.ts +0 -6
  4. package/dist/v1/addressing/domain-dependency.js +1 -6
  5. package/dist/v1/addressing/key.d.ts +4 -1
  6. package/dist/v1/addressing/key.js +23 -3
  7. package/dist/v1/addressing/ordering.d.ts +2 -0
  8. package/dist/v1/addressing/ordering.js +4 -0
  9. package/dist/v1/addressing/patterns.d.ts +1 -1
  10. package/dist/v1/addressing/patterns.js +2 -6
  11. package/dist/v1/builder/callable/authoring.d.ts +11 -5
  12. package/dist/v1/builder/callable/authoring.js +2 -0
  13. package/dist/v1/builder/class/authoring.d.ts +94 -224
  14. package/dist/v1/builder/class/authoring.js +31 -33
  15. package/dist/v1/builder/class/handle.d.ts +27 -0
  16. package/dist/v1/builder/class/handle.js +1 -0
  17. package/dist/v1/builder/class/input.d.ts +159 -0
  18. package/dist/v1/builder/class/projection.d.ts +129 -0
  19. package/dist/v1/builder/class/projection.js +1 -0
  20. package/dist/v1/builder/class/property.d.ts +3 -9
  21. package/dist/v1/builder/class/property.js +1 -0
  22. package/dist/v1/builder/core/authoring.d.ts +1 -1
  23. package/dist/v1/builder/index.d.ts +5 -2
  24. package/dist/v1/builder/lowering/callable.js +1 -0
  25. package/dist/v1/builder/lowering/class.d.ts +9 -1
  26. package/dist/v1/builder/lowering/class.js +62 -17
  27. package/dist/v1/builder/lowering/policy.js +2 -0
  28. package/dist/v1/builder/lowering/property-keys.d.ts +27 -0
  29. package/dist/v1/builder/lowering/property-keys.js +108 -0
  30. package/dist/v1/builder/lowering/schema/compile.js +11 -6
  31. package/dist/v1/builder/lowering/schema/context.d.ts +9 -1
  32. package/dist/v1/builder/lowering/schema/context.js +36 -4
  33. package/dist/v1/builder/lowering/schema/lifetime.d.ts +11 -0
  34. package/dist/v1/builder/lowering/schema/lifetime.js +55 -0
  35. package/dist/v1/builder/lowering/value/path.d.ts +1 -1
  36. package/dist/v1/builder/lowering/value/path.js +2 -4
  37. package/dist/v1/builder/lowering/value/zod.js +1 -3
  38. package/dist/v1/builder/policy/authoring.d.ts +85 -5
  39. package/dist/v1/builder/policy/authoring.js +107 -68
  40. package/dist/v1/builder/schema/define.d.ts +0 -1
  41. package/dist/v1/builder/schema/diagnostic.d.ts +3 -2
  42. package/dist/v1/builder/schema/diagnostic.js +5 -10
  43. package/dist/v1/builder/schema/input.d.ts +1 -1
  44. package/dist/v1/builder/schema/projection/callable.d.ts +7 -5
  45. package/dist/v1/builder/schema/projection/class.d.ts +118 -15
  46. package/dist/v1/builder/schema/projection/core-input.d.ts +2 -1
  47. package/dist/v1/builder/schema/projection/identity.d.ts +2 -1
  48. package/dist/v1/builder/schema/projection/model.d.ts +4 -2
  49. package/dist/v1/builder/schema/projection/property.d.ts +1 -1
  50. package/dist/v1/builder/schema/projection/resolved-class.d.ts +2 -1
  51. package/dist/v1/builder/schema/projection.d.ts +1 -1
  52. package/dist/v1/builder/value/full-match.d.ts +0 -1
  53. package/dist/v1/builder/value/full-match.js +0 -1
  54. package/dist/v1/builder/value/path-metadata.d.ts +1 -1
  55. package/dist/v1/builder/value/path.d.ts +1 -1
  56. package/dist/v1/bundle/codec.js +11 -13
  57. package/dist/v1/bundle/diagnostic.d.ts +2 -0
  58. package/dist/v1/bundle/diagnostic.js +9 -7
  59. package/dist/v1/bundle/model.js +1 -1
  60. package/dist/v1/bundle/structure.js +4 -6
  61. package/dist/v1/compiled/admission/accept.js +4 -10
  62. package/dist/v1/compiled/admission/closure.js +2 -2
  63. package/dist/v1/compiled/admission/diagnostic.d.ts +1 -1
  64. package/dist/v1/compiled/admission/diagnostic.js +1 -3
  65. package/dist/v1/compiled/admission/revision.d.ts +9 -1
  66. package/dist/v1/compiled/admission/revision.js +6 -3
  67. package/dist/v1/compiled/admission/semantics/class.d.ts +4 -1
  68. package/dist/v1/compiled/admission/semantics/class.js +37 -12
  69. package/dist/v1/compiled/admission/semantics/core.d.ts +1 -24
  70. package/dist/v1/compiled/admission/semantics/core.js +56 -24
  71. package/dist/v1/compiled/admission/semantics/edge.d.ts +2 -4
  72. package/dist/v1/compiled/admission/semantics/edge.js +6 -65
  73. package/dist/v1/compiled/admission/semantics/policy/callable.js +0 -2
  74. package/dist/v1/compiled/admission/semantics/policy/contracts.d.ts +5 -20
  75. package/dist/v1/compiled/admission/semantics/policy/contracts.js +8 -21
  76. package/dist/v1/compiled/admission/semantics/policy/parity.js +40 -43
  77. package/dist/v1/compiled/admission/semantics/policy/pattern.d.ts +4 -1
  78. package/dist/v1/compiled/admission/semantics/policy/pattern.js +4 -16
  79. package/dist/v1/compiled/admission/semantics/policy/typing.d.ts +2 -24
  80. package/dist/v1/compiled/admission/semantics/policy/typing.js +19 -201
  81. package/dist/v1/compiled/admission/wire/callable.js +11 -1
  82. package/dist/v1/compiled/admission/wire/class.js +73 -21
  83. package/dist/v1/compiled/admission/wire/policy.d.ts +4 -3
  84. package/dist/v1/compiled/admission/wire/policy.js +8 -7
  85. package/dist/v1/compiled/compiler/compile.js +8 -8
  86. package/dist/v1/compiled/diagnostic.js +2 -3
  87. package/dist/v1/compiled/loader/load.d.ts +3 -2
  88. package/dist/v1/compiled/loader/load.js +11 -45
  89. package/dist/v1/domain/create.js +5 -6
  90. package/dist/v1/domain/model/domain.d.ts +2 -7
  91. package/dist/v1/domain/model/input.d.ts +2 -1
  92. package/dist/v1/domain/namespace/member-collection.js +4 -6
  93. package/dist/v1/domain/projection/classes.js +4 -1
  94. package/dist/v1/domain/validation/create.d.ts +6 -3
  95. package/dist/v1/domain/validation/create.js +21 -69
  96. package/dist/v1/index.d.ts +2 -1
  97. package/dist/v1/language/.spec/schemas/draft-2020-12.schema.json +462 -0
  98. package/dist/v1/language/.spec/schemas/value-schema.schema.json +22 -0
  99. package/dist/v1/language/callable/admission.d.ts +15 -0
  100. package/dist/v1/language/callable/admission.js +43 -0
  101. package/dist/v1/language/callable/model/callable.d.ts +10 -0
  102. package/dist/v1/language/callable/resolved.d.ts +16 -3
  103. package/dist/v1/language/class/inheritance.d.ts +36 -5
  104. package/dist/v1/language/class/inheritance.js +87 -1
  105. package/dist/v1/language/class/lifetime.d.ts +50 -11
  106. package/dist/v1/language/class/lifetime.js +89 -20
  107. package/dist/v1/language/class/model/class.d.ts +45 -9
  108. package/dist/v1/language/class/model/edge.d.ts +31 -2
  109. package/dist/v1/language/class/model/property.d.ts +16 -7
  110. package/dist/v1/language/class/property-values.js +2 -4
  111. package/dist/v1/language/class/unique.d.ts +143 -0
  112. package/dist/v1/language/class/unique.js +264 -0
  113. package/dist/v1/language/core/facts.d.ts +85 -0
  114. package/dist/v1/language/core/facts.js +116 -0
  115. package/dist/v1/language/definition/metadata.d.ts +5 -0
  116. package/dist/v1/language/definition/metadata.js +7 -0
  117. package/dist/v1/language/freeze.d.ts +5 -0
  118. package/dist/v1/{schema/canonical → language}/freeze.js +4 -0
  119. package/dist/v1/language/index.d.ts +7 -2
  120. package/dist/v1/language/index.js +5 -1
  121. package/dist/v1/language/limits.d.ts +64 -0
  122. package/dist/v1/language/limits.js +60 -0
  123. package/dist/v1/language/policy/analysis/branches.d.ts +8 -0
  124. package/dist/v1/language/policy/analysis/branches.js +2 -1
  125. package/dist/v1/language/policy/analysis/budgets.d.ts +45 -12
  126. package/dist/v1/language/policy/analysis/budgets.js +133 -19
  127. package/dist/v1/language/policy/analysis/checks.js +3 -2
  128. package/dist/v1/language/policy/analysis/typing.d.ts +51 -0
  129. package/dist/v1/language/policy/analysis/typing.js +455 -0
  130. package/dist/v1/language/policy/model/policy.d.ts +49 -9
  131. package/dist/v1/language/policy/model/policy.js +14 -0
  132. package/dist/v1/language/policy/normalization/normalize.d.ts +6 -6
  133. package/dist/v1/language/policy/normalization/normalize.js +22 -21
  134. package/dist/v1/language/validation/diagnostic.d.ts +15 -1
  135. package/dist/v1/language/validation/diagnostic.js +21 -0
  136. package/dist/v1/language/validation/rule.d.ts +45 -0
  137. package/dist/v1/language/validation/rule.js +109 -0
  138. package/dist/v1/language/value/compile/fields.js +4 -8
  139. package/dist/v1/language/value/evaluate/program.d.ts +2 -1
  140. package/dist/v1/language/value/evaluate/program.js +2 -2
  141. package/dist/v1/language/value/evaluate/validate.d.ts +2 -2
  142. package/dist/v1/language/value/evaluate/validate.js +6 -2
  143. package/dist/v1/language/value/evaluate/validity.optimization.d.ts +14 -0
  144. package/dist/v1/language/value/evaluate/validity.optimization.js +342 -0
  145. package/dist/v1/language/value/inclusion/arrays.d.ts +3 -0
  146. package/dist/v1/language/value/inclusion/arrays.js +85 -0
  147. package/dist/v1/language/value/inclusion/assertions.d.ts +18 -0
  148. package/dist/v1/language/value/inclusion/assertions.js +29 -0
  149. package/dist/v1/language/value/inclusion/combinators.d.ts +3 -0
  150. package/dist/v1/language/value/inclusion/combinators.js +67 -0
  151. package/dist/v1/language/value/inclusion/equivalence.d.ts +4 -0
  152. package/dist/v1/language/value/inclusion/equivalence.js +74 -0
  153. package/dist/v1/language/value/inclusion/evidence.d.ts +34 -0
  154. package/dist/v1/language/value/inclusion/evidence.js +138 -0
  155. package/dist/v1/language/value/inclusion/includes.d.ts +17 -0
  156. package/dist/v1/language/value/inclusion/includes.js +25 -719
  157. package/dist/v1/language/value/inclusion/keywords.d.ts +5 -0
  158. package/dist/v1/language/value/inclusion/keywords.js +31 -0
  159. package/dist/v1/language/value/inclusion/kinds.d.ts +17 -0
  160. package/dist/v1/language/value/inclusion/kinds.js +57 -0
  161. package/dist/v1/language/value/inclusion/location.d.ts +24 -0
  162. package/dist/v1/language/value/inclusion/location.js +63 -0
  163. package/dist/v1/language/value/inclusion/numbers.d.ts +3 -0
  164. package/dist/v1/language/value/inclusion/numbers.js +41 -0
  165. package/dist/v1/language/value/inclusion/objects.d.ts +3 -0
  166. package/dist/v1/language/value/inclusion/objects.js +190 -0
  167. package/dist/v1/language/value/inclusion/strings.d.ts +3 -0
  168. package/dist/v1/language/value/inclusion/strings.js +29 -0
  169. package/dist/v1/language/value/inclusion/types.d.ts +3 -0
  170. package/dist/v1/language/value/inclusion/types.js +11 -0
  171. package/dist/v1/language/value/ordering.d.ts +14 -0
  172. package/dist/v1/language/value/ordering.js +86 -9
  173. package/dist/v1/language/value/profile/canonicalize.js +6 -5
  174. package/dist/v1/language/value/profile/json.validate.d.ts +3 -1
  175. package/dist/v1/language/value/profile/json.validate.js +3 -2
  176. package/dist/v1/language/value/profile/meta-schema.compiled.js +4 -1
  177. package/dist/v1/language/value/profile/rules.js +17 -43
  178. package/dist/v1/language/value/profile/validate.js +1 -10
  179. package/dist/v1/language/value/profile/vocabulary.d.ts +35 -2
  180. package/dist/v1/language/value/profile/vocabulary.js +52 -5
  181. package/dist/v1/language/value/reference/closure.js +3 -4
  182. package/dist/v1/language/value/reference/recursion.js +2 -22
  183. package/dist/v1/language/value/reference/registry.index.d.ts +2 -0
  184. package/dist/v1/language/value/reference/registry.index.js +33 -16
  185. package/dist/v1/language/value/regexp/ast.js +6 -7
  186. package/dist/v1/language/value/regexp/compile.d.ts +5 -11
  187. package/dist/v1/language/value/regexp/compile.js +14 -12
  188. package/dist/v1/language/value/regexp/syntax.js +3 -2
  189. package/dist/v1/language/value/syntax/keywords.d.ts +3 -3
  190. package/dist/v1/language/value/syntax/keywords.js +4 -20
  191. package/dist/v1/language/value/syntax/node-path/validate.js +2 -3
  192. package/dist/v1/language/value/syntax/pointer.d.ts +2 -0
  193. package/dist/v1/language/value/syntax/pointer.js +5 -2
  194. package/dist/v1/language/value/syntax/walk.d.ts +2 -0
  195. package/dist/v1/language/value/syntax/walk.js +19 -20
  196. package/dist/v1/schema/.spec/schemas/domain-schema.schema.json +2519 -0
  197. package/dist/v1/schema/admission/accept.js +3 -14
  198. package/dist/v1/schema/admission/callable.d.ts +21 -0
  199. package/dist/v1/schema/admission/callable.js +96 -0
  200. package/dist/v1/schema/analysis/class.js +33 -15
  201. package/dist/v1/schema/canonical/revision.js +4 -4
  202. package/dist/v1/schema/compatibility/api.d.ts +2 -1
  203. package/dist/v1/schema/compatibility/api.js +1 -0
  204. package/dist/v1/schema/compatibility/comparators/callables.js +1 -1
  205. package/dist/v1/schema/compatibility/comparators/classes.d.ts +9 -4
  206. package/dist/v1/schema/compatibility/comparators/classes.js +29 -8
  207. package/dist/v1/schema/compatibility/comparators/index.d.ts +1 -1
  208. package/dist/v1/schema/compatibility/comparators/members.js +1 -1
  209. package/dist/v1/schema/compatibility/comparators/values.js +2 -2
  210. package/dist/v1/schema/compatibility/coordinate.js +3 -3
  211. package/dist/v1/schema/compatibility/diff.js +2 -4
  212. package/dist/v1/schema/compatibility/extension.d.ts +11 -0
  213. package/dist/v1/schema/compatibility/extension.js +22 -0
  214. package/dist/v1/schema/compatibility/fields.d.ts +20 -4
  215. package/dist/v1/schema/compatibility/fields.js +13 -3
  216. package/dist/v1/schema/compatibility/meaning/footprint.js +16 -50
  217. package/dist/v1/schema/compatibility/model.d.ts +17 -5
  218. package/dist/v1/schema/compatibility/report.js +1 -1
  219. package/dist/v1/schema/compatibility/scope.d.ts +2 -0
  220. package/dist/v1/schema/compatibility/scope.js +4 -1
  221. package/dist/v1/schema/compatibility/structure/index.js +6 -4
  222. package/dist/v1/schema/compatibility/structure/requirements.js +57 -58
  223. package/dist/v1/schema/compatibility/versioning/index.js +1 -1
  224. package/dist/v1/schema/compatibility/versioning/surface.d.ts +1 -1
  225. package/dist/v1/schema/compatibility/versioning/surface.js +30 -2
  226. package/dist/v1/schema/compatibility/walk.d.ts +17 -0
  227. package/dist/v1/schema/compatibility/walk.js +41 -0
  228. package/dist/v1/schema/diagnostic.d.ts +17 -3
  229. package/dist/v1/schema/diagnostic.js +14 -11
  230. package/dist/v1/schema/index.d.ts +10 -1
  231. package/dist/v1/schema/index.js +4 -0
  232. package/dist/v1/schema/model/schema.d.ts +20 -1
  233. package/dist/v1/schema/model/schema.js +1 -1
  234. package/dist/v1/schema/normalization/domain.d.ts +2 -0
  235. package/dist/v1/schema/normalization/domain.js +29 -9
  236. package/dist/v1/schema/resolution/closure.js +2 -1
  237. package/dist/v1/schema/resolution/context.js +13 -13
  238. package/dist/v1/schema/resolution/domain.d.ts +5 -0
  239. package/dist/v1/schema/resolution/domain.js +2 -2
  240. package/dist/v1/schema/resolution/origins.js +3 -2
  241. package/dist/v1/schema/rule.d.ts +26 -0
  242. package/dist/v1/schema/rule.js +440 -0
  243. package/dist/v1/schema/validation/callable.d.ts +35 -2
  244. package/dist/v1/schema/validation/callable.js +65 -9
  245. package/dist/v1/schema/validation/class.d.ts +6 -2
  246. package/dist/v1/schema/validation/class.js +127 -104
  247. package/dist/v1/schema/validation/core.js +90 -168
  248. package/dist/v1/schema/validation/domain.js +4 -13
  249. package/dist/v1/schema/validation/domain.json-schema.d.ts +15 -0
  250. package/dist/v1/schema/validation/domain.json-schema.js +197 -0
  251. package/dist/v1/schema/validation/domain.route.d.ts +6 -1
  252. package/dist/v1/schema/validation/domain.route.js +18 -0
  253. package/dist/v1/schema/validation/domain.structure.d.ts +7780 -0
  254. package/dist/v1/schema/validation/domain.structure.js +398 -147
  255. package/dist/v1/schema/validation/json.json-schema.d.ts +40 -0
  256. package/dist/v1/schema/validation/json.json-schema.js +46 -0
  257. package/dist/v1/schema/validation/policy/budgets.d.ts +33 -2
  258. package/dist/v1/schema/validation/policy/budgets.js +87 -121
  259. package/dist/v1/schema/validation/policy/context.d.ts +6 -5
  260. package/dist/v1/schema/validation/policy/context.js +7 -10
  261. package/dist/v1/schema/validation/policy/objects.d.ts +1 -1
  262. package/dist/v1/schema/validation/policy/objects.js +6 -14
  263. package/dist/v1/schema/validation/policy/references.js +11 -27
  264. package/dist/v1/schema/validation/policy/typing.d.ts +3 -18
  265. package/dist/v1/schema/validation/policy/typing.js +22 -356
  266. package/dist/v1/schema/validation/policy/uses.d.ts +40 -3
  267. package/dist/v1/schema/validation/policy/uses.js +66 -89
  268. package/dist/v1/schema/validation/policy/validate.js +5 -5
  269. package/dist/v1/schema/validation/value-api.d.ts +22 -0
  270. package/dist/v1/schema/validation/value-api.js +34 -1
  271. package/dist/v1/schema/validation/value.d.ts +3 -0
  272. package/dist/v1/schema/validation/value.js +9 -17
  273. package/dist/v1/schema/validation/value.json-schema.d.ts +49 -0
  274. package/dist/v1/schema/validation/value.json-schema.js +137 -0
  275. package/dist/v1/schema/validation/view.js +4 -8
  276. package/dist/value/canonical.d.ts +6 -0
  277. package/dist/value/canonical.js +36 -0
  278. package/dist/value/decode.d.ts +7 -0
  279. package/dist/value/decode.js +159 -9
  280. package/dist/value/index.d.ts +1 -1
  281. package/dist/value/json.d.ts +2 -2
  282. package/dist/value/json.js +2 -2
  283. package/dist/value/types.d.ts +6 -0
  284. package/dist/value/unicode.d.ts +2 -1
  285. package/dist/value/unicode.js +2 -0
  286. package/package.json +8 -1
  287. package/dist/v1/builder/lowering/core-properties.d.ts +0 -10
  288. package/dist/v1/builder/lowering/core-properties.js +0 -76
  289. package/dist/v1/compiled/admission/semantics/cardinality.d.ts +0 -5
  290. package/dist/v1/compiled/admission/semantics/cardinality.js +0 -113
  291. package/dist/v1/compiled/admission/semantics/policy/equality.d.ts +0 -8
  292. package/dist/v1/compiled/admission/semantics/policy/equality.js +0 -27
  293. package/dist/v1/compiled/admission/semantics/policy/measure.d.ts +0 -9
  294. package/dist/v1/compiled/admission/semantics/policy/measure.js +0 -81
  295. package/dist/v1/compiled/admission/semantics/policy/variants.d.ts +0 -10
  296. package/dist/v1/compiled/admission/semantics/policy/variants.js +0 -65
  297. package/dist/v1/language/class/index.d.ts +0 -8
  298. package/dist/v1/language/class/index.js +0 -1
  299. package/dist/v1/language/core/index.d.ts +0 -2
  300. package/dist/v1/language/value/index.d.ts +0 -11
  301. package/dist/v1/language/value/index.js +0 -8
  302. package/dist/v1/schema/canonical/domain.d.ts +0 -3
  303. package/dist/v1/schema/canonical/domain.digest.d.ts +0 -3
  304. package/dist/v1/schema/canonical/domain.digest.js +0 -5
  305. package/dist/v1/schema/canonical/domain.js +0 -5
  306. package/dist/v1/schema/canonical/freeze.d.ts +0 -1
  307. /package/dist/v1/{language/core/index.js → builder/class/input.js} +0 -0
@@ -0,0 +1,462 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.astrale.ai/dsl/v1/draft-2020-12",
4
+ "title": "JSON Schema Draft 2020-12",
5
+ "$comment": "The Draft 2020-12 meta-schemas the V1 value-schema dialect composes, each under its own $id, exactly as the validator of the dialect embeds them. With value-schema.schema.json, they resolve the dialect without a network fetch.",
6
+ "$defs": {
7
+ "schema": {
8
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
9
+ "$id": "https://json-schema.org/draft/2020-12/schema",
10
+ "$vocabulary": {
11
+ "https://json-schema.org/draft/2020-12/vocab/core": true,
12
+ "https://json-schema.org/draft/2020-12/vocab/applicator": true,
13
+ "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
14
+ "https://json-schema.org/draft/2020-12/vocab/validation": true,
15
+ "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
16
+ "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
17
+ "https://json-schema.org/draft/2020-12/vocab/content": true
18
+ },
19
+ "$dynamicAnchor": "meta",
20
+ "title": "Core and Validation specifications meta-schema",
21
+ "allOf": [
22
+ {
23
+ "$ref": "meta/core"
24
+ },
25
+ {
26
+ "$ref": "meta/applicator"
27
+ },
28
+ {
29
+ "$ref": "meta/unevaluated"
30
+ },
31
+ {
32
+ "$ref": "meta/validation"
33
+ },
34
+ {
35
+ "$ref": "meta/meta-data"
36
+ },
37
+ {
38
+ "$ref": "meta/format-annotation"
39
+ },
40
+ {
41
+ "$ref": "meta/content"
42
+ }
43
+ ],
44
+ "type": [
45
+ "object",
46
+ "boolean"
47
+ ],
48
+ "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
49
+ "properties": {
50
+ "definitions": {
51
+ "$comment": "\"definitions\" has been replaced by \"$defs\".",
52
+ "type": "object",
53
+ "additionalProperties": {
54
+ "$dynamicRef": "#meta"
55
+ },
56
+ "deprecated": true,
57
+ "default": {}
58
+ },
59
+ "dependencies": {
60
+ "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
61
+ "type": "object",
62
+ "additionalProperties": {
63
+ "anyOf": [
64
+ {
65
+ "$dynamicRef": "#meta"
66
+ },
67
+ {
68
+ "$ref": "meta/validation#/$defs/stringArray"
69
+ }
70
+ ]
71
+ },
72
+ "deprecated": true,
73
+ "default": {}
74
+ },
75
+ "$recursiveAnchor": {
76
+ "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
77
+ "$ref": "meta/core#/$defs/anchorString",
78
+ "deprecated": true
79
+ },
80
+ "$recursiveRef": {
81
+ "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
82
+ "$ref": "meta/core#/$defs/uriReferenceString",
83
+ "deprecated": true
84
+ }
85
+ }
86
+ },
87
+ "core": {
88
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
89
+ "$id": "https://json-schema.org/draft/2020-12/meta/core",
90
+ "$vocabulary": {
91
+ "https://json-schema.org/draft/2020-12/vocab/core": true
92
+ },
93
+ "$dynamicAnchor": "meta",
94
+ "title": "Core vocabulary meta-schema",
95
+ "type": [
96
+ "object",
97
+ "boolean"
98
+ ],
99
+ "properties": {
100
+ "$id": {
101
+ "$ref": "#/$defs/uriReferenceString",
102
+ "$comment": "Non-empty fragments not allowed.",
103
+ "pattern": "^[^#]*#?$"
104
+ },
105
+ "$schema": {
106
+ "$ref": "#/$defs/uriString"
107
+ },
108
+ "$ref": {
109
+ "$ref": "#/$defs/uriReferenceString"
110
+ },
111
+ "$anchor": {
112
+ "$ref": "#/$defs/anchorString"
113
+ },
114
+ "$dynamicRef": {
115
+ "$ref": "#/$defs/uriReferenceString"
116
+ },
117
+ "$dynamicAnchor": {
118
+ "$ref": "#/$defs/anchorString"
119
+ },
120
+ "$vocabulary": {
121
+ "type": "object",
122
+ "propertyNames": {
123
+ "$ref": "#/$defs/uriString"
124
+ },
125
+ "additionalProperties": {
126
+ "type": "boolean"
127
+ }
128
+ },
129
+ "$comment": {
130
+ "type": "string"
131
+ },
132
+ "$defs": {
133
+ "type": "object",
134
+ "additionalProperties": {
135
+ "$dynamicRef": "#meta"
136
+ }
137
+ }
138
+ },
139
+ "$defs": {
140
+ "anchorString": {
141
+ "type": "string",
142
+ "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
143
+ },
144
+ "uriString": {
145
+ "type": "string",
146
+ "format": "uri"
147
+ },
148
+ "uriReferenceString": {
149
+ "type": "string",
150
+ "format": "uri-reference"
151
+ }
152
+ }
153
+ },
154
+ "applicator": {
155
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
156
+ "$id": "https://json-schema.org/draft/2020-12/meta/applicator",
157
+ "$vocabulary": {
158
+ "https://json-schema.org/draft/2020-12/vocab/applicator": true
159
+ },
160
+ "$dynamicAnchor": "meta",
161
+ "title": "Applicator vocabulary meta-schema",
162
+ "type": [
163
+ "object",
164
+ "boolean"
165
+ ],
166
+ "properties": {
167
+ "prefixItems": {
168
+ "$ref": "#/$defs/schemaArray"
169
+ },
170
+ "items": {
171
+ "$dynamicRef": "#meta"
172
+ },
173
+ "contains": {
174
+ "$dynamicRef": "#meta"
175
+ },
176
+ "additionalProperties": {
177
+ "$dynamicRef": "#meta"
178
+ },
179
+ "properties": {
180
+ "type": "object",
181
+ "additionalProperties": {
182
+ "$dynamicRef": "#meta"
183
+ },
184
+ "default": {}
185
+ },
186
+ "patternProperties": {
187
+ "type": "object",
188
+ "additionalProperties": {
189
+ "$dynamicRef": "#meta"
190
+ },
191
+ "propertyNames": {
192
+ "format": "regex"
193
+ },
194
+ "default": {}
195
+ },
196
+ "dependentSchemas": {
197
+ "type": "object",
198
+ "additionalProperties": {
199
+ "$dynamicRef": "#meta"
200
+ },
201
+ "default": {}
202
+ },
203
+ "propertyNames": {
204
+ "$dynamicRef": "#meta"
205
+ },
206
+ "if": {
207
+ "$dynamicRef": "#meta"
208
+ },
209
+ "then": {
210
+ "$dynamicRef": "#meta"
211
+ },
212
+ "else": {
213
+ "$dynamicRef": "#meta"
214
+ },
215
+ "allOf": {
216
+ "$ref": "#/$defs/schemaArray"
217
+ },
218
+ "anyOf": {
219
+ "$ref": "#/$defs/schemaArray"
220
+ },
221
+ "oneOf": {
222
+ "$ref": "#/$defs/schemaArray"
223
+ },
224
+ "not": {
225
+ "$dynamicRef": "#meta"
226
+ }
227
+ },
228
+ "$defs": {
229
+ "schemaArray": {
230
+ "type": "array",
231
+ "minItems": 1,
232
+ "items": {
233
+ "$dynamicRef": "#meta"
234
+ }
235
+ }
236
+ }
237
+ },
238
+ "unevaluated": {
239
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
240
+ "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
241
+ "$vocabulary": {
242
+ "https://json-schema.org/draft/2020-12/vocab/unevaluated": true
243
+ },
244
+ "$dynamicAnchor": "meta",
245
+ "title": "Unevaluated applicator vocabulary meta-schema",
246
+ "type": [
247
+ "object",
248
+ "boolean"
249
+ ],
250
+ "properties": {
251
+ "unevaluatedItems": {
252
+ "$dynamicRef": "#meta"
253
+ },
254
+ "unevaluatedProperties": {
255
+ "$dynamicRef": "#meta"
256
+ }
257
+ }
258
+ },
259
+ "validation": {
260
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
261
+ "$id": "https://json-schema.org/draft/2020-12/meta/validation",
262
+ "$vocabulary": {
263
+ "https://json-schema.org/draft/2020-12/vocab/validation": true
264
+ },
265
+ "$dynamicAnchor": "meta",
266
+ "title": "Validation vocabulary meta-schema",
267
+ "type": [
268
+ "object",
269
+ "boolean"
270
+ ],
271
+ "properties": {
272
+ "type": {
273
+ "anyOf": [
274
+ {
275
+ "$ref": "#/$defs/simpleTypes"
276
+ },
277
+ {
278
+ "type": "array",
279
+ "items": {
280
+ "$ref": "#/$defs/simpleTypes"
281
+ },
282
+ "minItems": 1,
283
+ "uniqueItems": true
284
+ }
285
+ ]
286
+ },
287
+ "const": true,
288
+ "enum": {
289
+ "type": "array",
290
+ "items": true
291
+ },
292
+ "multipleOf": {
293
+ "type": "number",
294
+ "exclusiveMinimum": 0
295
+ },
296
+ "maximum": {
297
+ "type": "number"
298
+ },
299
+ "exclusiveMaximum": {
300
+ "type": "number"
301
+ },
302
+ "minimum": {
303
+ "type": "number"
304
+ },
305
+ "exclusiveMinimum": {
306
+ "type": "number"
307
+ },
308
+ "maxLength": {
309
+ "$ref": "#/$defs/nonNegativeInteger"
310
+ },
311
+ "minLength": {
312
+ "$ref": "#/$defs/nonNegativeIntegerDefault0"
313
+ },
314
+ "pattern": {
315
+ "type": "string",
316
+ "format": "regex"
317
+ },
318
+ "maxItems": {
319
+ "$ref": "#/$defs/nonNegativeInteger"
320
+ },
321
+ "minItems": {
322
+ "$ref": "#/$defs/nonNegativeIntegerDefault0"
323
+ },
324
+ "uniqueItems": {
325
+ "type": "boolean",
326
+ "default": false
327
+ },
328
+ "maxContains": {
329
+ "$ref": "#/$defs/nonNegativeInteger"
330
+ },
331
+ "minContains": {
332
+ "$ref": "#/$defs/nonNegativeInteger",
333
+ "default": 1
334
+ },
335
+ "maxProperties": {
336
+ "$ref": "#/$defs/nonNegativeInteger"
337
+ },
338
+ "minProperties": {
339
+ "$ref": "#/$defs/nonNegativeIntegerDefault0"
340
+ },
341
+ "required": {
342
+ "$ref": "#/$defs/stringArray"
343
+ },
344
+ "dependentRequired": {
345
+ "type": "object",
346
+ "additionalProperties": {
347
+ "$ref": "#/$defs/stringArray"
348
+ }
349
+ }
350
+ },
351
+ "$defs": {
352
+ "nonNegativeInteger": {
353
+ "type": "integer",
354
+ "minimum": 0
355
+ },
356
+ "nonNegativeIntegerDefault0": {
357
+ "$ref": "#/$defs/nonNegativeInteger",
358
+ "default": 0
359
+ },
360
+ "simpleTypes": {
361
+ "enum": [
362
+ "array",
363
+ "boolean",
364
+ "integer",
365
+ "null",
366
+ "number",
367
+ "object",
368
+ "string"
369
+ ]
370
+ },
371
+ "stringArray": {
372
+ "type": "array",
373
+ "items": {
374
+ "type": "string"
375
+ },
376
+ "uniqueItems": true,
377
+ "default": []
378
+ }
379
+ }
380
+ },
381
+ "meta-data": {
382
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
383
+ "$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
384
+ "$vocabulary": {
385
+ "https://json-schema.org/draft/2020-12/vocab/meta-data": true
386
+ },
387
+ "$dynamicAnchor": "meta",
388
+ "title": "Meta-data vocabulary meta-schema",
389
+ "type": [
390
+ "object",
391
+ "boolean"
392
+ ],
393
+ "properties": {
394
+ "title": {
395
+ "type": "string"
396
+ },
397
+ "description": {
398
+ "type": "string"
399
+ },
400
+ "default": true,
401
+ "deprecated": {
402
+ "type": "boolean",
403
+ "default": false
404
+ },
405
+ "readOnly": {
406
+ "type": "boolean",
407
+ "default": false
408
+ },
409
+ "writeOnly": {
410
+ "type": "boolean",
411
+ "default": false
412
+ },
413
+ "examples": {
414
+ "type": "array",
415
+ "items": true
416
+ }
417
+ }
418
+ },
419
+ "format-annotation": {
420
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
421
+ "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
422
+ "$vocabulary": {
423
+ "https://json-schema.org/draft/2020-12/vocab/format-annotation": true
424
+ },
425
+ "$dynamicAnchor": "meta",
426
+ "title": "Format vocabulary meta-schema for annotation results",
427
+ "type": [
428
+ "object",
429
+ "boolean"
430
+ ],
431
+ "properties": {
432
+ "format": {
433
+ "type": "string"
434
+ }
435
+ }
436
+ },
437
+ "content": {
438
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
439
+ "$id": "https://json-schema.org/draft/2020-12/meta/content",
440
+ "$vocabulary": {
441
+ "https://json-schema.org/draft/2020-12/vocab/content": true
442
+ },
443
+ "$dynamicAnchor": "meta",
444
+ "title": "Content vocabulary meta-schema",
445
+ "type": [
446
+ "object",
447
+ "boolean"
448
+ ],
449
+ "properties": {
450
+ "contentEncoding": {
451
+ "type": "string"
452
+ },
453
+ "contentMediaType": {
454
+ "type": "string"
455
+ },
456
+ "contentSchema": {
457
+ "$dynamicRef": "#meta"
458
+ }
459
+ }
460
+ }
461
+ }
462
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.astrale.ai/dsl/v1/value-schema",
4
+ "$dynamicAnchor": "meta",
5
+ "$vocabulary": {
6
+ "https://json-schema.org/draft/2020-12/vocab/core": true,
7
+ "https://json-schema.org/draft/2020-12/vocab/applicator": true,
8
+ "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
9
+ "https://json-schema.org/draft/2020-12/vocab/validation": true,
10
+ "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
11
+ "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
12
+ "https://json-schema.org/draft/2020-12/vocab/content": true,
13
+ "https://schemas.astrale.ai/dsl/v1/value-schema/vocabulary": true
14
+ },
15
+ "title": "Astrale V1 value schema",
16
+ "$comment": "The meta-schema of the V1 value-schema dialect: Draft 2020-12 and the required Astrale vocabulary (fullMatch, x-astrale-path, x-astrale-value-kind). Its $dynamicAnchor extends Draft 2020-12 at every subschema, not only the root. The rules of the profile beyond it are published as schema.values.RULES.",
17
+ "allOf": [{ "$ref": "https://json-schema.org/draft/2020-12/schema" }],
18
+ "properties": {
19
+ "fullMatch": { "type": "string" },
20
+ "x-astrale-path": { "type": "object" }
21
+ }
22
+ }
@@ -0,0 +1,15 @@
1
+ import type { CallablePolicy } from '../policy/model/policy.js';
2
+ /**
3
+ * The language ceiling of a declared admission age, in seconds. Raising it later widens the
4
+ * language; lowering it would refuse accepted Schemas.
5
+ */
6
+ export declare const MAXIMUM_ADMISSION_AGE_SECONDS = 300;
7
+ /** Whether `value` is a declarable admission age: an integer from 1 to the language ceiling. */
8
+ export declare function isAdmissionMaxAge(value: unknown): value is number;
9
+ /**
10
+ * The input fields an admission of this callable reads: the `field` of every `input` check object
11
+ * of its Policy, unique and in Unicode code-point order. A callable without Policy checks reads no
12
+ * input field. Two calls that agree on these fields, and on everything else the admission reads,
13
+ * receive the same admission.
14
+ */
15
+ export declare function admissionInputFields(policy: CallablePolicy | undefined): readonly string[];
@@ -0,0 +1,43 @@
1
+ import { compareUnicode } from '../../addressing/ordering.js';
2
+ /**
3
+ * The language ceiling of a declared admission age, in seconds. Raising it later widens the
4
+ * language; lowering it would refuse accepted Schemas.
5
+ */
6
+ export const MAXIMUM_ADMISSION_AGE_SECONDS = 300;
7
+ /** Whether `value` is a declarable admission age: an integer from 1 to the language ceiling. */
8
+ export function isAdmissionMaxAge(value) {
9
+ return (typeof value === 'number' &&
10
+ Number.isInteger(value) &&
11
+ value >= 1 &&
12
+ value <= MAXIMUM_ADMISSION_AGE_SECONDS);
13
+ }
14
+ /**
15
+ * The input fields an admission of this callable reads: the `field` of every `input` check object
16
+ * of its Policy, unique and in Unicode code-point order. A callable without Policy checks reads no
17
+ * input field. Two calls that agree on these fields, and on everything else the admission reads,
18
+ * receive the same admission.
19
+ */
20
+ export function admissionInputFields(policy) {
21
+ if (policy === undefined || policy === true)
22
+ return Object.freeze([]);
23
+ const fields = new Set();
24
+ collectInputFields(policy, fields);
25
+ return Object.freeze([...fields].sort(compareUnicode));
26
+ }
27
+ function collectInputFields(expression, fields) {
28
+ if ('check' in expression) {
29
+ if (expression.object.kind === 'input')
30
+ fields.add(expression.object.field);
31
+ return;
32
+ }
33
+ if ('sameNode' in expression) {
34
+ for (const object of [expression.sameNode.left, expression.sameNode.right]) {
35
+ if (object.kind === 'input')
36
+ fields.add(object.field);
37
+ }
38
+ return;
39
+ }
40
+ for (const child of 'allOf' in expression ? expression.allOf : expression.anyOf) {
41
+ collectInputFields(child, fields);
42
+ }
43
+ }
@@ -21,6 +21,15 @@ export type OutputMode = CallableOutput['mode'];
21
21
  export interface CallableExecution {
22
22
  readonly durable: boolean;
23
23
  }
24
+ /**
25
+ * Admission age of a callable: how old, in whole seconds, the admission decision used for one of its
26
+ * calls may be. A destination may reuse an admission it received within that age; a Runtime that
27
+ * never reuses one conforms. Absent means every call is admitted afresh, and `maxAge` is an integer
28
+ * from 1 to `MAXIMUM_ADMISSION_AGE_SECONDS`.
29
+ */
30
+ export interface CallableAdmission {
31
+ readonly maxAge: number;
32
+ }
24
33
  /** A binary Function receives portable metadata and one required byte stream. */
25
34
  export interface BinaryInput {
26
35
  readonly mode: 'binary';
@@ -39,6 +48,7 @@ export interface CallableDefinitionBase<Input extends CallableInputContract = Ca
39
48
  readonly input: Input;
40
49
  readonly output: CallableOutput;
41
50
  readonly execution?: CallableExecution;
51
+ readonly admission?: CallableAdmission;
42
52
  }
43
53
  export type CallableDefinition<Input extends CallableInputContract = CallableInputContract> = CallableDefinitionBase<Input> & ({
44
54
  readonly auth: 'anonymous' | 'authenticated';
@@ -1,8 +1,9 @@
1
+ import type { Options } from '@astrale-os/kernel-dsl/value';
1
2
  import type { DefinitionKey, FunctionRef, Key, MethodKey } from '../../addressing/index.js';
2
3
  import type { ResolvedClass } from '../class/resolved.js';
3
4
  import type { CallablePolicy } from '../policy/model/policy.js';
4
5
  import type { Diagnostic } from '../validation/diagnostic.js';
5
- import type { BinaryInputProjection, CallableExecution, FunctionDefinition, MethodDefinition } from './model/callable.js';
6
+ import type { BinaryInputProjection, CallableAdmission, CallableExecution, FunctionDefinition, MethodDefinition } from './model/callable.js';
6
7
  import type { FunctionAuth } from './model/callable.js';
7
8
  type CallableDefinitionOf<Definition extends FunctionDefinition | MethodDefinition, Auth extends FunctionAuth, Policy extends CallablePolicy> = Omit<Definition, 'auth' | 'policy'> & (Auth extends FunctionAuth ? {
8
9
  readonly auth: Auth;
@@ -22,6 +23,8 @@ export interface ResolvedMethod<out Input = unknown, out Output = unknown, out S
22
23
  readonly output: MethodDefinition['output'];
23
24
  /** Present only for a durable Method. */
24
25
  readonly execution?: CallableExecution;
26
+ /** Present only when the Method declares an admission age. */
27
+ readonly admission?: CallableAdmission;
25
28
  readonly auth: Auth;
26
29
  readonly policy?: Auth extends 'authorized' ? Policy : never;
27
30
  readonly static: Static;
@@ -34,7 +37,11 @@ export interface ResolvedMethod<out Input = unknown, out Output = unknown, out S
34
37
  readonly static: Static;
35
38
  readonly abstract: Abstract;
36
39
  };
37
- validateInput(input: unknown): readonly Diagnostic[];
40
+ /**
41
+ * The issues of `input` against the callable's input schema, `options` overriding the portable
42
+ * limits it is admitted under: those it crossed the wire under, for a call's input.
43
+ */
44
+ validateInput(input: unknown, options?: Options): readonly Diagnostic[];
38
45
  validateInputField(field: string, input: unknown): readonly Diagnostic[];
39
46
  validateOutput(output: unknown): readonly Diagnostic[];
40
47
  readonly __input?: Input;
@@ -53,12 +60,18 @@ export interface ResolvedFunction<out Input = unknown, out Output = unknown, out
53
60
  readonly output: FunctionDefinition['output'];
54
61
  /** Present only for a durable Function. */
55
62
  readonly execution?: CallableExecution;
63
+ /** Present only when the Function declares an admission age. */
64
+ readonly admission?: CallableAdmission;
56
65
  readonly auth: Auth;
57
66
  readonly policy?: Auth extends 'authorized' ? Policy : never;
58
67
  /** Present only when the callable input is a safely enumerable closed object. */
59
68
  readonly inputFields?: readonly string[];
60
69
  readonly definition: CallableDefinitionOf<FunctionDefinition, Auth, Policy>;
61
- validateInput(input: unknown): readonly Diagnostic[];
70
+ /**
71
+ * The issues of `input` against the callable's input schema, `options` overriding the portable
72
+ * limits it is admitted under: those it crossed the wire under, for a call's input.
73
+ */
74
+ validateInput(input: unknown, options?: Options): readonly Diagnostic[];
62
75
  validateInputField(field: string, input: unknown): readonly Diagnostic[];
63
76
  validateOutput(output: unknown): readonly Diagnostic[];
64
77
  readonly __input?: Input;
@@ -1,12 +1,43 @@
1
1
  import type { ClassRef } from '../../addressing/index.js';
2
- import type { ClassKind } from './model/class.js';
3
- /** The representation shared by source, compiled and resolved Class admission. */
4
- export interface ClassInheritance {
2
+ import type { ClassKind, Inheritance } from './model/class.js';
3
+ import type { EdgeContract, EdgeCount } from './model/edge.js';
4
+ /** A Class as satisfaction reads it, shared by source, compiled and resolved Class admission. */
5
+ export interface ClassAncestry {
5
6
  readonly ref: ClassRef;
6
7
  readonly kind: ClassKind;
7
8
  readonly extends: readonly ClassRef[];
8
9
  }
10
+ /** The origin of the Kernel, whose Schema every Domain depends on. */
11
+ export declare const KERNEL_ORIGIN = "kernel.astrale.ai";
9
12
  /** Kernel graph roots are intrinsic supertypes, not authored structural Edge contracts. */
10
- export declare function isGraphRoot(value: Pick<ClassInheritance, 'ref' | 'kind'>): boolean;
13
+ export declare function isGraphRoot(value: Pick<ClassAncestry, 'ref' | 'kind'>): boolean;
11
14
  /** Same-kind satisfaction includes the intrinsic root and the declared parent closure. */
12
- export declare function classSatisfies(candidate: ClassInheritance, required: ClassInheritance, resolve: (ref: ClassRef) => ClassInheritance | undefined): boolean;
15
+ export declare function classSatisfies(candidate: ClassAncestry, required: ClassAncestry, resolve: (ref: ClassRef) => ClassAncestry | undefined): boolean;
16
+ /** The inheritance a Class declares, `'internal'` when it declares none. */
17
+ export declare function inheritanceOf(declaration: {
18
+ readonly inheritance?: Inheritance;
19
+ }): Inheritance;
20
+ /**
21
+ * Whether a Class of another Domain may extend this Class: only an `'open'` one admits it. Its own
22
+ * Domain may extend any Class that is not `'final'`.
23
+ */
24
+ export declare function admitsForeignSubclass(declaration: {
25
+ readonly inheritance?: Inheritance;
26
+ }): boolean;
27
+ /**
28
+ * Whether `child` safely refines its parent Edge contract `parent`: same orientation, at least the
29
+ * parent's constraints, and endpoints whose accepted Classes `satisfies` one the paired parent
30
+ * endpoint accepts, within its count. Undirected endpoints may pair in either order.
31
+ */
32
+ export declare function edgeContractRefines(child: EdgeContract, parent: EdgeContract & Pick<ClassAncestry, 'ref' | 'kind'>, satisfies: (candidate: ClassRef, accepts: readonly ClassRef[]) => boolean): boolean;
33
+ /** Interpret an Edge count as inclusive degree bounds. */
34
+ export declare function countBounds(value: EdgeCount): readonly [number, number];
35
+ /** Whether Edges of one Class, read from source to target, close a cycle (`acyclic` forbids it). */
36
+ export declare function hasDirectedCycle(edges: readonly {
37
+ readonly source: {
38
+ readonly key: string;
39
+ };
40
+ readonly target: {
41
+ readonly key: string;
42
+ };
43
+ }[]): boolean;