@astrale-os/kernel-dsl 0.2.0-beta.44 → 0.2.0-beta.46

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 (53) hide show
  1. package/dist/v1/addressing/class-key.js +5 -4
  2. package/dist/v1/addressing/method-key.js +3 -2
  3. package/dist/v1/builder/lowering/value/zod.js +11 -2
  4. package/dist/v1/builder/value/full-match.js +6 -3
  5. package/dist/v1/compiled/admission/accept.js +27 -6
  6. package/dist/v1/compiled/admission/semantics.js +41 -16
  7. package/dist/v1/compiled/loader/load.js +1 -0
  8. package/dist/v1/domain/model/input.d.ts +3 -0
  9. package/dist/v1/domain/projection/classes.js +1 -0
  10. package/dist/v1/domain/validation/create.d.ts +2 -0
  11. package/dist/v1/domain/validation/create.js +12 -0
  12. package/dist/v1/language/class/resolved.d.ts +3 -0
  13. package/dist/v1/language/index.d.ts +2 -0
  14. package/dist/v1/language/index.js +1 -0
  15. package/dist/v1/language/policy/normalization/normalize.d.ts +4 -0
  16. package/dist/v1/language/policy/normalization/normalize.js +51 -13
  17. package/dist/v1/language/value/inclusion/includes.d.ts +9 -0
  18. package/dist/v1/language/value/inclusion/includes.js +777 -0
  19. package/dist/v1/language/value/profile/rules.js +11 -32
  20. package/dist/v1/language/value/regexp/ast.js +3 -64
  21. package/dist/v1/language/value/regexp/compile.d.ts +25 -2
  22. package/dist/v1/language/value/regexp/compile.js +48 -12
  23. package/dist/v1/language/value/regexp/syntax.d.ts +11 -1
  24. package/dist/v1/language/value/regexp/syntax.js +14 -2
  25. package/dist/v1/language/value/regexp/unicode.d.ts +32 -0
  26. package/dist/v1/language/value/regexp/unicode.js +139 -0
  27. package/dist/v1/language/value/syntax/full-match.js +6 -3
  28. package/dist/v1/schema/compatibility/comparators/callables.d.ts +7 -0
  29. package/dist/v1/schema/compatibility/comparators/callables.js +13 -0
  30. package/dist/v1/schema/compatibility/comparators/classes.d.ts +18 -0
  31. package/dist/v1/schema/compatibility/comparators/classes.js +54 -0
  32. package/dist/v1/schema/compatibility/comparators/index.d.ts +1 -1
  33. package/dist/v1/schema/compatibility/comparators/index.js +14 -2
  34. package/dist/v1/schema/compatibility/evidence.d.ts +8 -1
  35. package/dist/v1/schema/compatibility/evidence.js +10 -1
  36. package/dist/v1/schema/compatibility/meaning/footprint.js +3 -1
  37. package/dist/v1/schema/compatibility/meaning/index.js +4 -2
  38. package/dist/v1/schema/compatibility/model.d.ts +11 -6
  39. package/dist/v1/schema/compatibility/references.d.ts +8 -1
  40. package/dist/v1/schema/compatibility/references.js +39 -6
  41. package/dist/v1/schema/compatibility/scope.d.ts +5 -0
  42. package/dist/v1/schema/compatibility/scope.js +5 -2
  43. package/dist/v1/schema/compatibility/structure/index.js +21 -2
  44. package/dist/v1/schema/compatibility/structure/requirements.js +26 -1
  45. package/dist/v1/schema/compatibility/subjects.js +20 -2
  46. package/dist/v1/schema/resolution/domain.js +1 -0
  47. package/dist/v1/schema/resolution/origins.d.ts +11 -4
  48. package/dist/v1/schema/resolution/origins.js +7 -8
  49. package/dist/v1/schema/validation/class.d.ts +10 -0
  50. package/dist/v1/schema/validation/class.js +4 -2
  51. package/dist/v1/schema/validation/policy/budgets.js +16 -3
  52. package/dist/v1/schema/validation/policy/typing.js +15 -0
  53. package/package.json +1 -1
@@ -5,6 +5,13 @@ import { escapePointer } from './context.js';
5
5
  import { referenceContracts } from './objects.js';
6
6
  export class PolicyTyping {
7
7
  context;
8
+ // Expanded branches of each named Policy, cached by node identity. A Policy's expansion is reused
9
+ // across every composition path that reaches it (and across every use site and object contract,
10
+ // none of which the expansion depends on), so a shared-child composition DAG is expanded in work
11
+ // linear in the number of Policies instead of enumerating every path. The expansion result is
12
+ // independent of the reaching path up to the opaque term-namespace labels, which only ever
13
+ // disambiguate variables within one branch and leave targetMode and branch typing unchanged.
14
+ #expansions = new Map();
8
15
  constructor(context) {
9
16
  this.context = context;
10
17
  }
@@ -59,6 +66,14 @@ export class PolicyTyping {
59
66
  #expandedBranches(name, visiting, namespace) {
60
67
  if (visiting.has(name))
61
68
  return undefined;
69
+ const cached = this.#expansions.get(name);
70
+ if (cached !== undefined || this.#expansions.has(name))
71
+ return cached;
72
+ const expanded = this.#expandDeclaration(name, visiting, namespace);
73
+ this.#expansions.set(name, expanded);
74
+ return expanded;
75
+ }
76
+ #expandDeclaration(name, visiting, namespace) {
62
77
  const declaration = this.context.normalized.get(name);
63
78
  if (declaration === undefined)
64
79
  return undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astrale-os/kernel-dsl",
3
- "version": "0.2.0-beta.44",
3
+ "version": "0.2.0-beta.46",
4
4
  "description": "Astrale Kernel DSL - Schema authoring, inference, and IR serialization",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {