@telorun/analyzer 0.72.0 → 0.74.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 (208) hide show
  1. package/dist/analyzer.d.ts.map +1 -1
  2. package/dist/analyzer.js +76 -20
  3. package/dist/artifact-axes.d.ts +14 -0
  4. package/dist/artifact-axes.d.ts.map +1 -0
  5. package/dist/artifact-axes.js +12 -0
  6. package/dist/artifact-layer-index.d.ts +2 -2
  7. package/dist/artifact-layer-index.d.ts.map +1 -1
  8. package/dist/artifact-layer-index.js +9 -4
  9. package/dist/artifact-selector.d.ts +47 -21
  10. package/dist/artifact-selector.d.ts.map +1 -1
  11. package/dist/artifact-selector.js +85 -16
  12. package/dist/builtins.d.ts.map +1 -1
  13. package/dist/builtins.js +144 -113
  14. package/dist/call-graph.d.ts +12 -1
  15. package/dist/call-graph.d.ts.map +1 -1
  16. package/dist/call-graph.js +22 -0
  17. package/dist/catch-scope.js +1 -1
  18. package/dist/cel-scope-query.d.ts.map +1 -1
  19. package/dist/cel-scope-query.js +32 -11
  20. package/dist/cel-scope.d.ts.map +1 -1
  21. package/dist/cel-scope.js +1 -0
  22. package/dist/eval-paths.d.ts +36 -5
  23. package/dist/eval-paths.d.ts.map +1 -1
  24. package/dist/eval-paths.js +47 -6
  25. package/dist/extends-resolution.d.ts +12 -0
  26. package/dist/extends-resolution.d.ts.map +1 -1
  27. package/dist/extends-resolution.js +23 -0
  28. package/dist/forwarded-declaration.d.ts +26 -0
  29. package/dist/forwarded-declaration.d.ts.map +1 -0
  30. package/dist/forwarded-declaration.js +31 -0
  31. package/dist/index.d.ts +10 -4
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +5 -2
  34. package/dist/kernel-globals.d.ts.map +1 -1
  35. package/dist/kernel-globals.js +21 -5
  36. package/dist/module-alias-scope.d.ts +11 -0
  37. package/dist/module-alias-scope.d.ts.map +1 -1
  38. package/dist/module-alias-scope.js +10 -0
  39. package/dist/module-file-claims.d.ts +17 -1
  40. package/dist/module-file-claims.d.ts.map +1 -1
  41. package/dist/module-file-claims.js +38 -3
  42. package/dist/module-named-files.d.ts +72 -0
  43. package/dist/module-named-files.d.ts.map +1 -0
  44. package/dist/module-named-files.js +115 -0
  45. package/dist/native-entries.d.ts +83 -0
  46. package/dist/native-entries.d.ts.map +1 -0
  47. package/dist/native-entries.js +169 -0
  48. package/dist/nearest-name.d.ts +22 -0
  49. package/dist/nearest-name.d.ts.map +1 -0
  50. package/dist/nearest-name.js +43 -0
  51. package/dist/normalize-inline-resources.d.ts +41 -13
  52. package/dist/normalize-inline-resources.d.ts.map +1 -1
  53. package/dist/normalize-inline-resources.js +236 -54
  54. package/dist/reference-field-map.d.ts +59 -1
  55. package/dist/reference-field-map.d.ts.map +1 -1
  56. package/dist/reference-field-map.js +200 -34
  57. package/dist/release/destinations.d.ts +59 -0
  58. package/dist/release/destinations.d.ts.map +1 -0
  59. package/dist/release/destinations.js +75 -0
  60. package/dist/release/index.d.ts +6 -2
  61. package/dist/release/index.d.ts.map +1 -1
  62. package/dist/release/index.js +3 -1
  63. package/dist/release/ledger.d.ts +20 -11
  64. package/dist/release/ledger.d.ts.map +1 -1
  65. package/dist/release/ledger.js +43 -14
  66. package/dist/release/payload-digest.d.ts +2 -1
  67. package/dist/release/payload-digest.d.ts.map +1 -1
  68. package/dist/release/payload-digest.js +2 -1
  69. package/dist/release/release-plan.d.ts +3 -2
  70. package/dist/release/release-plan.d.ts.map +1 -1
  71. package/dist/release/release-plan.js +12 -19
  72. package/dist/release/workspace-config.d.ts +114 -34
  73. package/dist/release/workspace-config.d.ts.map +1 -1
  74. package/dist/release/workspace-config.js +322 -38
  75. package/dist/release/workspace-schema.d.ts +41 -0
  76. package/dist/release/workspace-schema.d.ts.map +1 -0
  77. package/dist/release/workspace-schema.js +77 -0
  78. package/dist/resolve-ref-sentinels.d.ts.map +1 -1
  79. package/dist/resolve-ref-sentinels.js +8 -5
  80. package/dist/resolve-throws-union.d.ts +25 -4
  81. package/dist/resolve-throws-union.d.ts.map +1 -1
  82. package/dist/resolve-throws-union.js +62 -32
  83. package/dist/resolve-zone-requirements.d.ts.map +1 -1
  84. package/dist/resolve-zone-requirements.js +2 -1
  85. package/dist/rewrite-synthetic-origins.d.ts +6 -1
  86. package/dist/rewrite-synthetic-origins.d.ts.map +1 -1
  87. package/dist/rewrite-synthetic-origins.js +107 -13
  88. package/dist/schema-compat.d.ts.map +1 -1
  89. package/dist/schema-compat.js +18 -5
  90. package/dist/schema-error-report.d.ts +7 -0
  91. package/dist/schema-error-report.d.ts.map +1 -1
  92. package/dist/schema-error-report.js +9 -4
  93. package/dist/schema-walk.d.ts +47 -13
  94. package/dist/schema-walk.d.ts.map +1 -1
  95. package/dist/schema-walk.js +150 -30
  96. package/dist/scope-declarations.d.ts +59 -0
  97. package/dist/scope-declarations.d.ts.map +1 -0
  98. package/dist/scope-declarations.js +45 -0
  99. package/dist/source-entries.d.ts +119 -0
  100. package/dist/source-entries.d.ts.map +1 -0
  101. package/dist/source-entries.js +349 -0
  102. package/dist/step-bodies.d.ts +24 -0
  103. package/dist/step-bodies.d.ts.map +1 -0
  104. package/dist/step-bodies.js +28 -0
  105. package/dist/telo-version.d.ts +1 -1
  106. package/dist/telo-version.js +1 -1
  107. package/dist/template-body.d.ts +10 -0
  108. package/dist/template-body.d.ts.map +1 -1
  109. package/dist/template-body.js +25 -0
  110. package/dist/validate-cel-context.d.ts +23 -8
  111. package/dist/validate-cel-context.d.ts.map +1 -1
  112. package/dist/validate-cel-context.js +51 -18
  113. package/dist/validate-exports.d.ts +28 -0
  114. package/dist/validate-exports.d.ts.map +1 -0
  115. package/dist/validate-exports.js +146 -0
  116. package/dist/validate-extends.d.ts.map +1 -1
  117. package/dist/validate-extends.js +37 -1
  118. package/dist/validate-module-artifact.d.ts +4 -2
  119. package/dist/validate-module-artifact.d.ts.map +1 -1
  120. package/dist/validate-module-artifact.js +43 -4
  121. package/dist/validate-native-entries.d.ts +15 -0
  122. package/dist/validate-native-entries.d.ts.map +1 -0
  123. package/dist/validate-native-entries.js +103 -0
  124. package/dist/validate-observed-state.d.ts +7 -1
  125. package/dist/validate-observed-state.d.ts.map +1 -1
  126. package/dist/validate-observed-state.js +24 -6
  127. package/dist/validate-provider-coherence.d.ts +4 -8
  128. package/dist/validate-provider-coherence.d.ts.map +1 -1
  129. package/dist/validate-provider-coherence.js +12 -123
  130. package/dist/validate-reference-forms.d.ts.map +1 -1
  131. package/dist/validate-reference-forms.js +2 -2
  132. package/dist/validate-references.d.ts.map +1 -1
  133. package/dist/validate-references.js +152 -65
  134. package/dist/validate-scope-reach.d.ts +31 -0
  135. package/dist/validate-scope-reach.d.ts.map +1 -0
  136. package/dist/validate-scope-reach.js +180 -0
  137. package/dist/validate-source-entries.d.ts +16 -0
  138. package/dist/validate-source-entries.d.ts.map +1 -0
  139. package/dist/validate-source-entries.js +90 -0
  140. package/dist/validate-template-body.d.ts +36 -0
  141. package/dist/validate-template-body.d.ts.map +1 -0
  142. package/dist/validate-template-body.js +246 -0
  143. package/dist/validate-throws-coverage.d.ts.map +1 -1
  144. package/dist/validate-throws-coverage.js +21 -39
  145. package/dist/value-type-keyword.d.ts +22 -5
  146. package/dist/value-type-keyword.d.ts.map +1 -1
  147. package/dist/value-type-keyword.js +16 -7
  148. package/package.json +4 -3
  149. package/src/analyzer.ts +97 -20
  150. package/src/artifact-axes.ts +24 -0
  151. package/src/artifact-layer-index.ts +9 -6
  152. package/src/artifact-selector.ts +110 -35
  153. package/src/builtins.ts +160 -113
  154. package/src/call-graph.ts +30 -0
  155. package/src/catch-scope.ts +1 -1
  156. package/src/cel-scope-query.ts +28 -9
  157. package/src/cel-scope.ts +1 -0
  158. package/src/eval-paths.ts +53 -6
  159. package/src/extends-resolution.ts +24 -0
  160. package/src/forwarded-declaration.ts +32 -0
  161. package/src/index.ts +37 -1
  162. package/src/kernel-globals.ts +28 -5
  163. package/src/migrations/CLAUDE.md +35 -0
  164. package/src/module-alias-scope.ts +17 -0
  165. package/src/module-file-claims.ts +63 -4
  166. package/src/module-named-files.ts +162 -0
  167. package/src/native-entries.ts +227 -0
  168. package/src/nearest-name.ts +47 -0
  169. package/src/normalize-inline-resources.ts +326 -70
  170. package/src/reference-field-map.ts +257 -52
  171. package/src/release/CLAUDE.md +32 -0
  172. package/src/release/destinations.ts +105 -0
  173. package/src/release/index.ts +33 -2
  174. package/src/release/ledger.ts +51 -21
  175. package/src/release/payload-digest.ts +2 -1
  176. package/src/release/release-plan.ts +16 -26
  177. package/src/release/workspace-config.ts +483 -47
  178. package/src/release/workspace-schema.ts +99 -0
  179. package/src/resolve-ref-sentinels.ts +7 -6
  180. package/src/resolve-throws-union.ts +87 -32
  181. package/src/resolve-zone-requirements.ts +2 -1
  182. package/src/rewrite-synthetic-origins.ts +107 -16
  183. package/src/schema-compat.ts +18 -4
  184. package/src/schema-error-report.ts +16 -4
  185. package/src/schema-walk.ts +162 -34
  186. package/src/scope-declarations.ts +98 -0
  187. package/src/source-entries.ts +502 -0
  188. package/src/step-bodies.ts +55 -0
  189. package/src/telo-version.ts +1 -1
  190. package/src/template-body.ts +25 -0
  191. package/src/validate-cel-context.ts +60 -18
  192. package/src/validate-exports.ts +185 -0
  193. package/src/validate-extends.ts +43 -0
  194. package/src/validate-module-artifact.ts +46 -3
  195. package/src/validate-native-entries.ts +147 -0
  196. package/src/validate-observed-state.ts +36 -7
  197. package/src/validate-provider-coherence.ts +17 -127
  198. package/src/validate-reference-forms.ts +2 -3
  199. package/src/validate-references.ts +151 -66
  200. package/src/validate-scope-reach.ts +213 -0
  201. package/src/validate-source-entries.ts +120 -0
  202. package/src/validate-template-body.ts +274 -0
  203. package/src/validate-throws-coverage.ts +24 -31
  204. package/src/value-type-keyword.ts +35 -9
  205. package/dist/validate-template-dispatch.d.ts +0 -27
  206. package/dist/validate-template-dispatch.d.ts.map +0 -1
  207. package/dist/validate-template-dispatch.js +0 -95
  208. package/src/validate-template-dispatch.ts +0 -99
package/dist/builtins.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { PLATFORM_AXES } from "./artifact-axes.js";
1
2
  import { manifestFragment, manifestFragmentRef, withSchemaFragments } from "./manifest-schemas.js";
2
3
  /** A slot holding author-written JSON Schema. Localized and hoisted by
3
4
  * {@link withSchemaFragments} on the enclosing schema, which is what makes the
@@ -20,6 +21,60 @@ const observedStateSlot = {
20
21
  description: "What a resource of this kind reports while running, published at `resources.<name>.status.<field>`.",
21
22
  $ref: manifestFragmentRef("JsonSchema7"),
22
23
  };
24
+ /** The `self`-only CEL scope a dispatch slot's name template is written in. */
25
+ const dispatchSelfContext = {
26
+ type: "object",
27
+ additionalProperties: false,
28
+ properties: { self: { "x-telo-context-from-root": "schema" } },
29
+ };
30
+ /**
31
+ * A `Telo.Definition` dispatch slot: which `resources:` entry receives the call.
32
+ *
33
+ * Three shapes, and the union is what keeps the slot CONSTRAINED for manifests
34
+ * no pass walks — `validate-template-body` resolves the target and its
35
+ * capability, but it is entry-scoped, so a dependency's definition would
36
+ * otherwise have nothing checking this slot at all. An array or a number fails
37
+ * every branch here, which is the floor AJV used to provide.
38
+ *
39
+ * `anyOf`, never `oneOf`: a `!ref` sentinel is an object, so it would match both
40
+ * the sentinel branch and any permissive object branch and then fail for
41
+ * matching twice. That is also how the sentinel used to pass — the legacy object
42
+ * branch required nothing, so it accepted one by accident; here it is a branch
43
+ * of its own that says so.
44
+ */
45
+ function dispatchSlot(title, description) {
46
+ return {
47
+ title,
48
+ description,
49
+ anyOf: [
50
+ // `!ref <entry>` — the spelling to write.
51
+ {
52
+ type: "object",
53
+ required: ["__tagged", "engine", "source"],
54
+ properties: {
55
+ __tagged: { const: true },
56
+ engine: { const: "ref" },
57
+ source: { type: "string", minLength: 1 },
58
+ },
59
+ additionalProperties: false,
60
+ },
61
+ // Legacy: a name template expanded against `self`. Read forever, because
62
+ // published artifacts carry it; `DEPRECATED_TEMPLATE_DISPATCH_FORM` is
63
+ // what moves an author off it.
64
+ { type: "string", "x-telo-context": dispatchSelfContext },
65
+ // Legacy: `{ kind?, name }`, where `name` is that same template.
66
+ {
67
+ type: "object",
68
+ required: ["name"],
69
+ properties: {
70
+ kind: { type: "string" },
71
+ name: { type: "string", "x-telo-context": dispatchSelfContext },
72
+ },
73
+ additionalProperties: true,
74
+ },
75
+ ],
76
+ };
77
+ }
23
78
  /** Descriptive provenance a module declares about itself, shared by
24
79
  * `Telo.Application` and `Telo.Library`.
25
80
  *
@@ -93,9 +148,68 @@ const LIBRARY_CANDIDATES_SCHEMA = {
93
148
  format: { type: "string" },
94
149
  path: { type: "string" },
95
150
  source: { type: "string" },
96
- os: { type: "string" },
97
- arch: { type: "string" },
98
- libc: { type: "string" },
151
+ ...Object.fromEntries(PLATFORM_AXES.map((axis) => [axis, { type: "string" }])),
152
+ },
153
+ additionalProperties: false,
154
+ },
155
+ };
156
+ /** `native:` — the module's platform-specific files, one entry per logical name
157
+ * per platform tuple. Closed, so a mistyped axis is a schema violation rather
158
+ * than a platform-neutral entry. Grammar and rules live in
159
+ * `analyzer/nodejs/src/native-entries.ts` and `validate-native-entries.ts`. */
160
+ const NATIVE_ENTRIES_SCHEMA = {
161
+ type: "array",
162
+ items: {
163
+ type: "object",
164
+ required: ["name", "format", "os", "arch", "path"],
165
+ properties: {
166
+ name: { type: "string" },
167
+ format: { type: "string" },
168
+ path: { type: "string" },
169
+ ...Object.fromEntries(PLATFORM_AXES.map((axis) => [axis, { type: "string" }])),
170
+ },
171
+ additionalProperties: false,
172
+ },
173
+ };
174
+ /** `sources:` — where every staged file comes from, keyed by source name, each
175
+ * entry keyed by the module-relative path it produces. Closed at every level.
176
+ * An entry is a file (`upstream` + `member`, pinned with `sha256` +
177
+ * `executable`) or a link (`target`); a mix of the two, and every other rule,
178
+ * is reported by `analyzer/nodejs/src/validate-source-entries.ts`. `archive`
179
+ * names the upstream's format. A source built in the repo names its build under
180
+ * `build`, keyed by build system (`cargo: <crate dir>`), with the digest of its
181
+ * build inputs (`inputs`). */
182
+ const SOURCES_SCHEMA = {
183
+ type: "object",
184
+ additionalProperties: {
185
+ type: "object",
186
+ required: ["version", "url", "archive", "notices", "entries"],
187
+ properties: {
188
+ version: { type: "string" },
189
+ url: { type: "string" },
190
+ archive: { enum: ["tar.gz"] },
191
+ notices: { type: "array", minItems: 1, items: { type: "string" } },
192
+ build: {
193
+ type: "object",
194
+ required: ["cargo"],
195
+ properties: { cargo: { type: "string" }, inputs: { type: "string" } },
196
+ additionalProperties: false,
197
+ },
198
+ entries: {
199
+ type: "object",
200
+ additionalProperties: {
201
+ type: "object",
202
+ anyOf: [{ required: ["upstream", "member"] }, { required: ["target"] }],
203
+ properties: {
204
+ upstream: { type: "string" },
205
+ member: { type: "string" },
206
+ sha256: { type: "string" },
207
+ executable: { type: "boolean" },
208
+ target: { type: "string" },
209
+ },
210
+ additionalProperties: false,
211
+ },
212
+ },
99
213
  },
100
214
  additionalProperties: false,
101
215
  },
@@ -104,25 +218,18 @@ const LIBRARY_CANDIDATES_SCHEMA = {
104
218
  * One entry per layer except the manifest layer, which cannot list its own hash
105
219
  * inside itself and is pinned by the importer's `#sha256-...` instead. Shape and
106
220
  * matching rules are normative in kernel/specs/module-artifact.md; the parser
107
- * that enforces them is `artifact-layer-index.ts`. */
221
+ * that enforces them is `artifact-layer-index.ts`. `role` stays open and
222
+ * `selector` unconstrained: an entry for a newer runtime is skipped, not
223
+ * rejected, and its selector is not examined (spec §3.1). A known role's
224
+ * selector is validated by the parser, which `telo check` runs. */
108
225
  const LAYER_INDEX_SCHEMA = {
109
226
  type: "array",
110
227
  items: {
111
228
  type: "object",
112
229
  required: ["role", "blob", "integrity"],
113
230
  properties: {
114
- role: { type: "string", enum: ["controller", "library", "assets", "common"] },
115
- selector: {
116
- type: "object",
117
- required: ["format"],
118
- properties: {
119
- format: { type: "string" },
120
- os: { type: "string" },
121
- arch: { type: "string" },
122
- libc: { type: "string" },
123
- },
124
- additionalProperties: false,
125
- },
231
+ role: { type: "string", minLength: 1 },
232
+ selector: {},
126
233
  blob: { type: "string", pattern: "^sha256:[0-9a-f]{64}$" },
127
234
  integrity: { type: "string", pattern: "^sha256-[A-Za-z0-9_-]{43}$" },
128
235
  },
@@ -459,99 +566,19 @@ export const KERNEL_BUILTINS = [
459
566
  },
460
567
  },
461
568
  },
462
- invoke: {
463
- oneOf: [
464
- {
465
- type: "string",
466
- "x-telo-context": {
467
- type: "object",
468
- additionalProperties: false,
469
- properties: {
470
- self: { "x-telo-context-from-root": "schema" },
471
- },
472
- },
473
- },
474
- {
475
- type: "object",
476
- additionalProperties: true,
477
- properties: {
478
- kind: { type: "string" },
479
- name: {
480
- type: "string",
481
- "x-telo-context": {
482
- type: "object",
483
- additionalProperties: false,
484
- properties: {
485
- self: { "x-telo-context-from-root": "schema" },
486
- },
487
- },
488
- },
489
- },
490
- },
491
- ],
492
- },
493
- provide: {
494
- type: "object",
495
- additionalProperties: true,
496
- properties: {
497
- kind: { type: "string" },
498
- name: {
499
- type: "string",
500
- "x-telo-context": {
501
- type: "object",
502
- additionalProperties: false,
503
- properties: {
504
- self: { "x-telo-context-from-root": "schema" },
505
- },
506
- },
507
- },
508
- },
509
- },
510
- run: {
511
- type: "string",
512
- "x-telo-context": {
513
- type: "object",
514
- additionalProperties: false,
515
- properties: {
516
- self: { "x-telo-context-from-root": "schema" },
517
- },
518
- },
519
- },
520
- // Mount dispatch: names the `resources:` entry (a Telo.Mount, e.g. an
521
- // Http.Api) whose `register()` this definition delegates to. Same
522
- // string / { kind, name } grammar as `invoke:`. The named child stays
523
- // persistent so the produced mount's routes can `!ref` its siblings.
524
- mount: {
525
- oneOf: [
526
- {
527
- type: "string",
528
- "x-telo-context": {
529
- type: "object",
530
- additionalProperties: false,
531
- properties: {
532
- self: { "x-telo-context-from-root": "schema" },
533
- },
534
- },
535
- },
536
- {
537
- type: "object",
538
- additionalProperties: true,
539
- properties: {
540
- kind: { type: "string" },
541
- name: {
542
- type: "string",
543
- "x-telo-context": {
544
- type: "object",
545
- additionalProperties: false,
546
- properties: {
547
- self: { "x-telo-context-from-root": "schema" },
548
- },
549
- },
550
- },
551
- },
552
- },
553
- ],
554
- },
569
+ // A dispatch slot names the `resources:` entry that receives the call,
570
+ // as `!ref <entry>` — the one spelling every reference in Telo has. The
571
+ // string and `{ kind, name }` forms it used to admit (a CEL name
572
+ // template matched against CEL-named entries) were the removed
573
+ // reference object surviving in the one place nothing resolved it;
574
+ // `validate-template-body` is what resolves this slot, so the schema
575
+ // stays open here rather than reporting the same defect twice.
576
+ invoke: dispatchSlot("Invoke target", "The `resources:` entry whose `invoke()` this kind dispatches to, as `!ref <entry>`."),
577
+ provide: dispatchSlot("Provide target", "The `resources:` entry whose `invoke()` produces this provider's value, as `!ref <entry>`."),
578
+ run: dispatchSlot("Run target", "The `resources:` entry whose `run()` this kind dispatches to, as `!ref <entry>`."),
579
+ // The named child stays persistent so the produced mount's routes can
580
+ // `!ref` its siblings.
581
+ mount: dispatchSlot("Mount target", "The `resources:` entry (a Telo.Mount, e.g. an Http.Api) whose `register()` this kind delegates to, as `!ref <entry>`."),
555
582
  inputs: {
556
583
  type: "object",
557
584
  additionalProperties: true,
@@ -572,11 +599,11 @@ export const KERNEL_BUILTINS = [
572
599
  additionalProperties: false,
573
600
  properties: {
574
601
  self: { "x-telo-context-from-root": "schema" },
602
+ // Typed from the dispatch target's declared output: the slot
603
+ // holds a `!ref` to a `resources:` entry, resolved to that
604
+ // entry's kind (or its own `outputType`, where it narrows one).
575
605
  result: {
576
- "x-telo-context-from-ref-kind": [
577
- "provide/kind#outputType",
578
- "invoke/kind#outputType",
579
- ],
606
+ "x-telo-context-from-ref-kind": ["provide#outputType", "invoke#outputType"],
580
607
  },
581
608
  },
582
609
  },
@@ -742,6 +769,8 @@ export const KERNEL_BUILTINS = [
742
769
  items: { type: "string" },
743
770
  },
744
771
  assets: ASSETS_FILES_SCHEMA,
772
+ native: NATIVE_ENTRIES_SCHEMA,
773
+ sources: SOURCES_SCHEMA,
745
774
  layers: LAYER_INDEX_SCHEMA,
746
775
  filesIntegrity: LEGACY_FILES_INTEGRITY_SCHEMA,
747
776
  // Inline imports — name-keyed map sugar for separate `Telo.Import`
@@ -915,6 +944,8 @@ export const KERNEL_BUILTINS = [
915
944
  items: { type: "string" },
916
945
  },
917
946
  assets: ASSETS_FILES_SCHEMA,
947
+ native: NATIVE_ENTRIES_SCHEMA,
948
+ sources: SOURCES_SCHEMA,
918
949
  layers: LAYER_INDEX_SCHEMA,
919
950
  filesIntegrity: LEGACY_FILES_INTEGRITY_SCHEMA,
920
951
  // Inline imports — same name-keyed map sugar as Telo.Application; the
@@ -41,7 +41,7 @@
41
41
  import type { ResourceManifest } from "@telorun/sdk";
42
42
  import type { AliasResolver } from "./alias-resolver.js";
43
43
  import type { DefinitionRegistry } from "./definition-registry.js";
44
- import { type RefUse, type RefUseCases } from "./ref-slot.js";
44
+ import { type RefSlot, type RefUse, type RefUseCases } from "./ref-slot.js";
45
45
  export interface ResourceGraphNode {
46
46
  type: "resource";
47
47
  id: string;
@@ -220,6 +220,17 @@ export declare function nodeIdFor(manifest: ResourceManifest): string;
220
220
  * other, which is exactly the collision it exists to prevent.
221
221
  */
222
222
  export declare function resolveScopedName<T>(candidates: readonly T[] | undefined, moduleOf: (item: T) => string | undefined, fromModule: string | undefined): T | undefined;
223
+ /**
224
+ * A slot's use at one concrete site of one resource, for a consumer that walks
225
+ * the kind's schema itself rather than reading the graph's edges.
226
+ *
227
+ * The same rule the graph applies to a resource-level edge — the same enclosing
228
+ * object, the same schema default — so a consumer and an edge cannot disagree
229
+ * about which case of a case map holds. `concretePath` is the site
230
+ * (`routes[0].handler`); `fieldPath` is the declaration it resolved from
231
+ * (`routes[].handler`), which is what the schema default is read against.
232
+ */
233
+ export declare function resolveSlotUseAt(slot: RefSlot, resource: unknown, rootSchema: Record<string, any> | undefined, concretePath: string, fieldPath: string): Pick<CallGraphEdge, "use" | "unresolved" | "unresolvedReason">;
223
234
  export interface BuildCallGraphOptions {
224
235
  aliases?: AliasResolver;
225
236
  aliasesByModule?: Map<string, AliasResolver>;
@@ -1 +1 @@
1
- {"version":3,"file":"call-graph.d.ts","sourceRoot":"","sources":["../src/call-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-graph.d.ts","sourceRoot":"","sources":["../src/call-graph.ts"],"names":[],"mappings":"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"}
@@ -178,6 +178,28 @@ function resolveUseAtSite(entry, root, concretePath, schemaDefault) {
178
178
  : "unmatched";
179
179
  return { use: possibleUses(slot), unresolved: entry.useCases, unresolvedReason };
180
180
  }
181
+ /**
182
+ * A slot's use at one concrete site of one resource, for a consumer that walks
183
+ * the kind's schema itself rather than reading the graph's edges.
184
+ *
185
+ * The same rule the graph applies to a resource-level edge — the same enclosing
186
+ * object, the same schema default — so a consumer and an edge cannot disagree
187
+ * about which case of a case map holds. `concretePath` is the site
188
+ * (`routes[0].handler`); `fieldPath` is the declaration it resolved from
189
+ * (`routes[].handler`), which is what the schema default is read against.
190
+ */
191
+ export function resolveSlotUseAt(slot, resource, rootSchema, concretePath, fieldPath) {
192
+ const entry = {
193
+ refs: slot.kinds,
194
+ uses: slot.uses,
195
+ isArray: false,
196
+ ...(slot.useCases ? { useCases: slot.useCases } : {}),
197
+ };
198
+ const schemaDefault = rootSchema
199
+ ? schemaDefaultOf(enclosingSchemaOf(rootSchema, fieldPath))
200
+ : NO_DEFAULT;
201
+ return resolveUseAtSite(entry, resource, concretePath, schemaDefault);
202
+ }
181
203
  /** A resolved plain reference value (`{kind, name}`, optionally `alias`) — the
182
204
  * shape `resolveRefSentinels` leaves at a ref site. NOT a step: a bare boot
183
205
  * target written `!ref X` must not mint a step node. */
@@ -31,7 +31,7 @@ export function buildEnclosers(manifests, definitionOf, moduleOf, ctx) {
31
31
  if (!definition?.schema)
32
32
  continue;
33
33
  forEachDrivenSlot(definition.schema, manifest, (driven) => {
34
- if (driven.kind !== "ref" || !driven.slot.throwsThrough)
34
+ if (driven.kind !== "ref" || !driven.slots.some(({ slot }) => slot.throwsThrough))
35
35
  return;
36
36
  const target = resolveRefManifest(driven.data, ctx, moduleOf(manifest));
37
37
  if (!target || target === manifest)
@@ -1 +1 @@
1
- {"version":3,"file":"cel-scope-query.d.ts","sourceRoot":"","sources":["../src/cel-scope-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAkB9D;;;sCAGsC;AACtC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;iEAI6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD;gEACgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IActB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAb5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C;;oDAEgD;IAChD,OAAO,CAAC,OAAO,CAA+B;IAC9C;;;;sEAIkE;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsD;gBAG9D,SAAS,EAAE,gBAAgB,EAAE,EAC9C,GAAG,EAAE,oBAAoB,EACzB,MAAM,CAAC,EAAE,WAAW;IAgCtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAE3C;+DAC2D;IAC3D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS;IAI7F;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAe3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,sBAAsB,CACpB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,sBAAsB,GAAG,SAAS;IA0CrC;oFACgF;IAChF,OAAO,CAAC,QAAQ;IAgFhB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAqBrF;;;;;;;sDAOkD;IAClD,OAAO,CAAC,aAAa;IAOrB;wEACoE;IACpE,OAAO,CAAC,YAAY;CAarB"}
1
+ {"version":3,"file":"cel-scope-query.d.ts","sourceRoot":"","sources":["../src/cel-scope-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAsB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAmB9D;;;sCAGsC;AACtC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;iEAI6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD;gEACgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IActB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAb5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C;;oDAEgD;IAChD,OAAO,CAAC,OAAO,CAA+B;IAC9C;;;;sEAIkE;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsD;gBAG9D,SAAS,EAAE,gBAAgB,EAAE,EAC9C,GAAG,EAAE,oBAAoB,EACzB,MAAM,CAAC,EAAE,WAAW;IAgCtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAE3C;+DAC2D;IAC3D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS;IAI7F;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAe3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,sBAAsB,CACpB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,sBAAsB,GAAG,SAAS;IA0CrC;oFACgF;IAChF,OAAO,CAAC,QAAQ;IAkGhB;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAqBrF;;;;;;;sDAOkD;IAClD,OAAO,CAAC,aAAa;IAOrB;wEACoE;IACpE,OAAO,CAAC,YAAY;CAarB"}
@@ -4,6 +4,7 @@ import { buildKernelGlobalsIndex } from "./kernel-globals.js";
4
4
  import { moduleAliasScope } from "./module-alias-scope.js";
5
5
  import { isModuleKind } from "./module-kinds.js";
6
6
  import { navigateConcretePath } from "./manifest-path.js";
7
+ import { kindAtPath } from "./validate-cel-context.js";
7
8
  import { findManifest } from "./find-manifest.js";
8
9
  import { resolveLocalRef, walkStepArray } from "./schema-walk.js";
9
10
  import { readStepSlot } from "./step-slot.js";
@@ -200,16 +201,30 @@ export class CelScopeQuery {
200
201
  return { manifest: target, path: refFrom.slice(slash + 1).split("/").join("."), propertyMap: false };
201
202
  }
202
203
  // A kind's own declaration: the target is the `Telo.Definition` document,
203
- // which is an ordinary manifest in the set.
204
+ // which is an ordinary manifest in the set. The slot holds a `!ref` to a
205
+ // `resources:` entry; the entry's own field wins where it narrows one, else
206
+ // the declaration is the entry's KIND. The first slot that resolves to an
207
+ // entry is the one the type resolver reads, so it is the one navigated.
204
208
  const fromRefKind = annotated["x-telo-context-from-ref-kind"];
205
- const first = Array.isArray(fromRefKind) ? fromRefKind[0] : fromRefKind;
206
- if (typeof first === "string") {
207
- const hash = first.indexOf("#");
209
+ const slots = Array.isArray(fromRefKind) ? fromRefKind : [fromRefKind];
210
+ for (const slotSpec of slots) {
211
+ if (typeof slotSpec !== "string")
212
+ continue;
213
+ const hash = slotSpec.indexOf("#");
214
+ // `continue`, never `return`: a malformed spec is one entry of a list the
215
+ // type resolver walks to the end, and aborting here made the two answer
216
+ // differently for the same annotation.
208
217
  if (hash <= 0)
209
- return undefined;
210
- const kindValue = navigateConcretePath(root, first.slice(0, hash).split("/").join("."));
211
- if (typeof kindValue !== "string")
212
- return undefined;
218
+ continue;
219
+ const field = slotSpec.slice(hash + 1);
220
+ const namedKind = kindAtPath(root, slotSpec.slice(0, hash));
221
+ if (!namedKind)
222
+ continue;
223
+ if (namedKind.entry?.[field] !== undefined) {
224
+ const index = root.resources.indexOf(namedKind.entry);
225
+ return { manifest: resource, path: `resources[${index}].${field}`, propertyMap: false };
226
+ }
227
+ const kindValue = namedKind.kind;
213
228
  // The kind was read off THIS resource, so it is spelled in the alias scope
214
229
  // of the module that declared it — not the entry's.
215
230
  const scope = moduleAliasScope(resource.metadata, this.ctx.aliases, this.ctx.aliasesByModule);
@@ -229,10 +244,16 @@ export class CelScopeQuery {
229
244
  const target = (owningModule
230
245
  ? named.find((m) => m.metadata?.module === owningModule)
231
246
  : undefined) ?? (owningModule && named.length > 1 ? undefined : named[0]);
232
- if (!target)
233
- return undefined;
234
- return { manifest: target, path: first.slice(hash + 1), propertyMap: false };
247
+ // Fall through to the next spec when this one names no kind, or names one
248
+ // that does not declare the field — the same order the TYPE resolver
249
+ // takes, so go-to-declaration lands where the type came from instead of on
250
+ // a field the target never had.
251
+ if (!target || target[field] === undefined)
252
+ continue;
253
+ return { manifest: target, path: field, propertyMap: false };
235
254
  }
255
+ if (slots.some((s) => typeof s === "string"))
256
+ return undefined;
236
257
  // `x-telo-context-element-from` / `-collection-from` type a binding from an
237
258
  // EXPRESSION, so there is no declaration to navigate to.
238
259
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"cel-scope.d.ts","sourceRoot":"","sources":["../src/cel-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cel-scope.d.ts","sourceRoot":"","sources":["../src/cel-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAO9D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAuE7B;;;;;;;;;;;oEAWoE;AACpE,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACtB,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EACnC,MAAM,EAAE,YAAY,GACnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQrB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EACnC,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,YAAY,GACnB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAqGjC;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GACzC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAmClC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACvC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAWjC;AAED;;;+DAG+D;AAC/D,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAcrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,wDAAwD;IACxD,GAAG,EAAE,WAAW,CAAC;IACjB;+EAC2E;IAC3E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAC3C;AAED;+CAC+C;AAC/C,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAE,kBAAkB,CAAC;IAClC,sEAAsE;IACtE,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,+EAA+E;IAC/E,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAClD;AAED;;;6BAG6B;AAC7B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAsBf,OAAO,CAAC,QAAQ,CAAC,MAAM;IArBnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4C;IAE/E,4DAA4D;IAC5D,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,WAAW,CAA+C;IAClE;;0EAEsE;IACtE,OAAO,CAAC,UAAU,CAMV;IACR;;8EAE0E;IAC1E,OAAO,CAAC,UAAU,CAAkC;gBAEvB,MAAM,EAAE,cAAc;IAEnD;;;uDAGmD;IACnD,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAEvD;IAED,sEAAsE;IACtE,IAAI,kBAAkB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAEjE;IAED;;;+CAG2C;IAC3C,IAAI,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAE7D;IAED,oDAAoD;IACpD,aAAa,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI;IA6CpF;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ;IAoCpC;;sEAEkE;IAClE,OAAO,CAAC,iBAAiB;CAiH1B"}
package/dist/cel-scope.js CHANGED
@@ -444,6 +444,7 @@ export class CelScopeResolver {
444
444
  manifestRoot: rootForResolver,
445
445
  defs,
446
446
  aliases,
447
+ aliasesByModule: scopes?.aliasesByModule,
447
448
  allManifests: allManifests,
448
449
  });
449
450
  return mergeKernelGlobalsIntoContext(withBindingNames(resolved, rootManifest),
@@ -73,6 +73,32 @@ export interface CelEvalSites {
73
73
  }
74
74
  export declare const NO_CEL_EVAL_SITES: CelEvalSites;
75
75
  export declare function celEvalSites(schema: Record<string, any> | undefined): CelEvalSites;
76
+ /**
77
+ * A BASE-FORM CHILD'S OWN FIELDS ARE COMPILE-EVAL WITHOUT ANNOTATION.
78
+ *
79
+ * A definition with `base:` has no controller of its own: the kernel evaluates
80
+ * the mapping once, at `create()`, against `self` — the instance's config — and
81
+ * hands the result to the inherited controller as the parent's config. The
82
+ * child's own schema fields never reach a controller; they exist to be read by
83
+ * `base:`, and the mapping expands whatever compiled value it reads. So every
84
+ * own field is evaluated exactly once at creation against the startup scope,
85
+ * which is what compile-eval IS. Declared here as the rule rather than left as a
86
+ * property of the mapping walk — the `Telo.Provider` posture, where a
87
+ * construction-time-only surface declares compile-eval once for all its fields
88
+ * rather than per field. Without it the rule was off for every inheritance kind
89
+ * (its capability is inherited, so the gate read `undefined`) and the
90
+ * expressions were never typed either: a `!cel "variables.whoo"` passed `telo
91
+ * check` and failed at boot.
92
+ *
93
+ * Read by the kernel's instance production and the analyzer's coverage decision,
94
+ * so the two cannot disagree about which fields a base child evaluates. An
95
+ * explicitly `runtime` own field still wins, through the same overlap rule a
96
+ * root `x-telo-eval: compile` follows.
97
+ */
98
+ export declare const IMPLICIT_COMPILE_SITES: CelEvalSites;
99
+ export declare function implicitEvalSites(definition: {
100
+ base?: unknown;
101
+ } | undefined): CelEvalSites;
76
102
  /** The union of several schemas' sites — a kind's own and its capability
77
103
  * abstract's, which is how a `Telo.Provider`'s implicit compile-eval reaches
78
104
  * fields the provider never annotated. */
@@ -81,11 +107,16 @@ export declare function mergeCelEvalSites(...sites: CelEvalSites[]): CelEvalSite
81
107
  * Whether the value at `path` is evaluated, and when — null for a field whose
82
108
  * value is read as a literal.
83
109
  *
84
- * `compile` wins over `runtime`, and both win over a region: a field's own
85
- * annotation is more specific than the region it sits in, which is the same
86
- * precedence a nested annotation has over an enclosing one. A region resolves to
87
- * `runtime` because that is what a region IS a per-invocation scope naming
88
- * what its expressions can read.
110
+ * An annotated field wins over the region it sits in a field's own annotation
111
+ * is more specific than an enclosing one, and a region resolves to `runtime`
112
+ * because that is what a region IS, a per-invocation scope naming what its
113
+ * expressions can read. Between the two annotations, `runtime` wins wherever
114
+ * they OVERLAP and `compile` answers everywhere else.
115
+ *
116
+ * That overlap rule is the kernel's, read back: its compile expansion skips any
117
+ * compile path a runtime path contains or is contained by, and under a root
118
+ * `**` it skips per top-level key — so a runtime-annotated field under an
119
+ * implicit compile root stays runtime, here as at dispatch.
89
120
  *
90
121
  * `path` is the `walkCelExpressions` spelling (`routes[0].returns[1].when`).
91
122
  */
@@ -1 +1 @@
1
- {"version":3,"file":"eval-paths.d.ts","sourceRoot":"","sources":["../src/eval-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKxE;AAED;+BAC+B;AAC/B,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAcA;AAiCD;;uEAEuE;AACvE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAI1D;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAM,GAAG,MAAM,EAAE,CAqBxF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAoBzE;AAED;yEACyE;AACzE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAwD,CAAC;AAEzF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,YAAY,CAIlF;AAED;;2CAE2C;AAC3C,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAMxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,GACX,SAAS,GAAG,SAAS,GAAG,IAAI,CAK9B"}
1
+ {"version":3,"file":"eval-paths.d.ts","sourceRoot":"","sources":["../src/eval-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAKxE;AAED;+BAC+B;AAC/B,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAcA;AAiCD;;uEAEuE;AACvE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAI1D;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAM,GAAG,MAAM,EAAE,CAqBxF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAoBzE;AAED;yEACyE;AACzE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAwD,CAAC;AAEzF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GAAG,YAAY,CAIlF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,sBAAsB,EAAE,YAA4D,CAAC;AAElG,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GACzC,YAAY,CAEd;AAED;;2CAE2C;AAC3C,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAMxE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,MAAM,GACX,SAAS,GAAG,SAAS,GAAG,IAAI,CAY9B"}