@rcrsr/rill 0.15.0 → 0.16.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 (305) hide show
  1. package/dist/ast-nodes.d.ts +2 -13
  2. package/dist/ast-nodes.js +0 -1
  3. package/dist/ast-unions.d.ts +0 -1
  4. package/dist/ast-unions.js +0 -1
  5. package/dist/constants.d.ts +0 -1
  6. package/dist/constants.js +0 -1
  7. package/dist/error-classes.d.ts +0 -1
  8. package/dist/error-classes.js +0 -1
  9. package/dist/error-formatter.d.ts +0 -1
  10. package/dist/error-formatter.js +0 -1
  11. package/dist/error-registry.d.ts +0 -1
  12. package/dist/error-registry.js +32 -1
  13. package/dist/ext/crypto/index.d.ts +0 -1
  14. package/dist/ext/crypto/index.js +5 -6
  15. package/dist/ext/exec/index.d.ts +0 -1
  16. package/dist/ext/exec/index.js +3 -4
  17. package/dist/ext/exec/runner.d.ts +0 -1
  18. package/dist/ext/exec/runner.js +0 -1
  19. package/dist/ext/fetch/index.d.ts +0 -1
  20. package/dist/ext/fetch/index.js +8 -39
  21. package/dist/ext/fetch/request.d.ts +0 -1
  22. package/dist/ext/fetch/request.js +0 -1
  23. package/dist/ext/fs/index.d.ts +0 -1
  24. package/dist/ext/fs/index.js +26 -27
  25. package/dist/ext/fs/sandbox.d.ts +0 -1
  26. package/dist/ext/fs/sandbox.js +0 -1
  27. package/dist/ext/kv/index.d.ts +0 -1
  28. package/dist/ext/kv/index.js +19 -20
  29. package/dist/ext/kv/store.d.ts +0 -1
  30. package/dist/ext/kv/store.js +0 -1
  31. package/dist/generated/introspection-data.d.ts +0 -1
  32. package/dist/generated/introspection-data.js +0 -1
  33. package/dist/generated/version-data.d.ts +1 -2
  34. package/dist/generated/version-data.js +2 -3
  35. package/dist/highlight-map.d.ts +0 -1
  36. package/dist/highlight-map.js +0 -1
  37. package/dist/index.d.ts +1 -2
  38. package/dist/index.js +1 -2
  39. package/dist/lexer/errors.d.ts +0 -1
  40. package/dist/lexer/errors.js +0 -1
  41. package/dist/lexer/helpers.d.ts +0 -1
  42. package/dist/lexer/helpers.js +0 -1
  43. package/dist/lexer/index.d.ts +0 -1
  44. package/dist/lexer/index.js +0 -1
  45. package/dist/lexer/operators.d.ts +0 -1
  46. package/dist/lexer/operators.js +0 -1
  47. package/dist/lexer/readers.d.ts +0 -1
  48. package/dist/lexer/readers.js +0 -1
  49. package/dist/lexer/state.d.ts +0 -1
  50. package/dist/lexer/state.js +0 -1
  51. package/dist/lexer/tokenizer.d.ts +0 -1
  52. package/dist/lexer/tokenizer.js +0 -1
  53. package/dist/parser/helpers.d.ts +0 -1
  54. package/dist/parser/helpers.js +0 -1
  55. package/dist/parser/index.d.ts +0 -1
  56. package/dist/parser/index.js +0 -1
  57. package/dist/parser/parser-collect.d.ts +0 -1
  58. package/dist/parser/parser-collect.js +0 -1
  59. package/dist/parser/parser-control.d.ts +0 -1
  60. package/dist/parser/parser-control.js +0 -1
  61. package/dist/parser/parser-expr.d.ts +0 -1
  62. package/dist/parser/parser-expr.js +0 -1
  63. package/dist/parser/parser-extract.d.ts +0 -1
  64. package/dist/parser/parser-extract.js +0 -1
  65. package/dist/parser/parser-functions.d.ts +0 -1
  66. package/dist/parser/parser-functions.js +0 -1
  67. package/dist/parser/parser-literals.d.ts +0 -1
  68. package/dist/parser/parser-literals.js +4 -2
  69. package/dist/parser/parser-script.d.ts +0 -1
  70. package/dist/parser/parser-script.js +0 -1
  71. package/dist/parser/parser-shape.d.ts +2 -3
  72. package/dist/parser/parser-shape.js +8 -52
  73. package/dist/parser/parser-types.d.ts +28 -2
  74. package/dist/parser/parser-types.js +64 -13
  75. package/dist/parser/parser-use.d.ts +0 -1
  76. package/dist/parser/parser-use.js +0 -1
  77. package/dist/parser/parser-variables.d.ts +0 -1
  78. package/dist/parser/parser-variables.js +0 -1
  79. package/dist/parser/parser.d.ts +0 -1
  80. package/dist/parser/parser.js +0 -1
  81. package/dist/parser/state.d.ts +0 -1
  82. package/dist/parser/state.js +0 -1
  83. package/dist/runtime/core/callable.d.ts +40 -13
  84. package/dist/runtime/core/callable.js +137 -28
  85. package/dist/runtime/core/context.d.ts +0 -1
  86. package/dist/runtime/core/context.js +1 -2
  87. package/dist/runtime/core/equals.d.ts +0 -1
  88. package/dist/runtime/core/equals.js +35 -3
  89. package/dist/runtime/core/eval/base.d.ts +0 -1
  90. package/dist/runtime/core/eval/base.js +0 -1
  91. package/dist/runtime/core/eval/evaluator.d.ts +0 -1
  92. package/dist/runtime/core/eval/evaluator.js +0 -1
  93. package/dist/runtime/core/eval/index.d.ts +0 -1
  94. package/dist/runtime/core/eval/index.js +0 -1
  95. package/dist/runtime/core/eval/mixins/annotations.d.ts +0 -1
  96. package/dist/runtime/core/eval/mixins/annotations.js +0 -1
  97. package/dist/runtime/core/eval/mixins/closures.d.ts +0 -1
  98. package/dist/runtime/core/eval/mixins/closures.js +82 -60
  99. package/dist/runtime/core/eval/mixins/collections.d.ts +0 -1
  100. package/dist/runtime/core/eval/mixins/collections.js +9 -4
  101. package/dist/runtime/core/eval/mixins/control-flow.d.ts +0 -1
  102. package/dist/runtime/core/eval/mixins/control-flow.js +0 -1
  103. package/dist/runtime/core/eval/mixins/conversion.d.ts +0 -1
  104. package/dist/runtime/core/eval/mixins/conversion.js +153 -86
  105. package/dist/runtime/core/eval/mixins/core.d.ts +0 -1
  106. package/dist/runtime/core/eval/mixins/core.js +0 -1
  107. package/dist/runtime/core/eval/mixins/expressions.d.ts +0 -1
  108. package/dist/runtime/core/eval/mixins/expressions.js +0 -1
  109. package/dist/runtime/core/eval/mixins/extraction.d.ts +0 -1
  110. package/dist/runtime/core/eval/mixins/extraction.js +8 -9
  111. package/dist/runtime/core/eval/mixins/list-dispatch.d.ts +0 -1
  112. package/dist/runtime/core/eval/mixins/list-dispatch.js +0 -1
  113. package/dist/runtime/core/eval/mixins/literals.d.ts +0 -1
  114. package/dist/runtime/core/eval/mixins/literals.js +3 -7
  115. package/dist/runtime/core/eval/mixins/types.d.ts +2 -1
  116. package/dist/runtime/core/eval/mixins/types.js +222 -242
  117. package/dist/runtime/core/eval/mixins/use.d.ts +0 -1
  118. package/dist/runtime/core/eval/mixins/use.js +0 -1
  119. package/dist/runtime/core/eval/mixins/variables.d.ts +0 -1
  120. package/dist/runtime/core/eval/mixins/variables.js +6 -7
  121. package/dist/runtime/core/eval/types.d.ts +0 -1
  122. package/dist/runtime/core/eval/types.js +0 -1
  123. package/dist/runtime/core/execute.d.ts +0 -1
  124. package/dist/runtime/core/execute.js +0 -1
  125. package/dist/runtime/core/field-descriptor.d.ts +2 -3
  126. package/dist/runtime/core/field-descriptor.js +0 -1
  127. package/dist/runtime/core/introspection.d.ts +0 -1
  128. package/dist/runtime/core/introspection.js +0 -1
  129. package/dist/runtime/core/resolvers.d.ts +0 -1
  130. package/dist/runtime/core/resolvers.js +0 -1
  131. package/dist/runtime/core/signals.d.ts +0 -1
  132. package/dist/runtime/core/signals.js +0 -1
  133. package/dist/runtime/core/types.d.ts +0 -1
  134. package/dist/runtime/core/types.js +0 -1
  135. package/dist/runtime/core/values.d.ts +59 -26
  136. package/dist/runtime/core/values.js +289 -77
  137. package/dist/runtime/ext/builtins.d.ts +0 -1
  138. package/dist/runtime/ext/builtins.js +43 -17
  139. package/dist/runtime/ext/extensions.d.ts +0 -1
  140. package/dist/runtime/ext/extensions.js +0 -1
  141. package/dist/runtime/index.d.ts +2 -3
  142. package/dist/runtime/index.js +1 -2
  143. package/dist/signature-parser.d.ts +0 -1
  144. package/dist/signature-parser.js +8 -6
  145. package/dist/source-location.d.ts +0 -1
  146. package/dist/source-location.js +0 -1
  147. package/dist/token-types.d.ts +0 -1
  148. package/dist/token-types.js +0 -1
  149. package/dist/types.d.ts +0 -1
  150. package/dist/types.js +0 -1
  151. package/dist/value-types.d.ts +15 -12
  152. package/dist/value-types.js +0 -1
  153. package/package.json +2 -1
  154. package/dist/ast-nodes.d.ts.map +0 -1
  155. package/dist/ast-nodes.js.map +0 -1
  156. package/dist/ast-unions.d.ts.map +0 -1
  157. package/dist/ast-unions.js.map +0 -1
  158. package/dist/constants.d.ts.map +0 -1
  159. package/dist/constants.js.map +0 -1
  160. package/dist/error-classes.d.ts.map +0 -1
  161. package/dist/error-classes.js.map +0 -1
  162. package/dist/error-formatter.d.ts.map +0 -1
  163. package/dist/error-formatter.js.map +0 -1
  164. package/dist/error-registry.d.ts.map +0 -1
  165. package/dist/error-registry.js.map +0 -1
  166. package/dist/ext/crypto/index.d.ts.map +0 -1
  167. package/dist/ext/crypto/index.js.map +0 -1
  168. package/dist/ext/exec/index.d.ts.map +0 -1
  169. package/dist/ext/exec/index.js.map +0 -1
  170. package/dist/ext/exec/runner.d.ts.map +0 -1
  171. package/dist/ext/exec/runner.js.map +0 -1
  172. package/dist/ext/fetch/index.d.ts.map +0 -1
  173. package/dist/ext/fetch/index.js.map +0 -1
  174. package/dist/ext/fetch/request.d.ts.map +0 -1
  175. package/dist/ext/fetch/request.js.map +0 -1
  176. package/dist/ext/fs/index.d.ts.map +0 -1
  177. package/dist/ext/fs/index.js.map +0 -1
  178. package/dist/ext/fs/sandbox.d.ts.map +0 -1
  179. package/dist/ext/fs/sandbox.js.map +0 -1
  180. package/dist/ext/kv/index.d.ts.map +0 -1
  181. package/dist/ext/kv/index.js.map +0 -1
  182. package/dist/ext/kv/store.d.ts.map +0 -1
  183. package/dist/ext/kv/store.js.map +0 -1
  184. package/dist/generated/introspection-data.d.ts.map +0 -1
  185. package/dist/generated/introspection-data.js.map +0 -1
  186. package/dist/generated/version-data.d.ts.map +0 -1
  187. package/dist/generated/version-data.js.map +0 -1
  188. package/dist/highlight-map.d.ts.map +0 -1
  189. package/dist/highlight-map.js.map +0 -1
  190. package/dist/index.d.ts.map +0 -1
  191. package/dist/index.js.map +0 -1
  192. package/dist/lexer/errors.d.ts.map +0 -1
  193. package/dist/lexer/errors.js.map +0 -1
  194. package/dist/lexer/helpers.d.ts.map +0 -1
  195. package/dist/lexer/helpers.js.map +0 -1
  196. package/dist/lexer/index.d.ts.map +0 -1
  197. package/dist/lexer/index.js.map +0 -1
  198. package/dist/lexer/operators.d.ts.map +0 -1
  199. package/dist/lexer/operators.js.map +0 -1
  200. package/dist/lexer/readers.d.ts.map +0 -1
  201. package/dist/lexer/readers.js.map +0 -1
  202. package/dist/lexer/state.d.ts.map +0 -1
  203. package/dist/lexer/state.js.map +0 -1
  204. package/dist/lexer/tokenizer.d.ts.map +0 -1
  205. package/dist/lexer/tokenizer.js.map +0 -1
  206. package/dist/parser/helpers.d.ts.map +0 -1
  207. package/dist/parser/helpers.js.map +0 -1
  208. package/dist/parser/index.d.ts.map +0 -1
  209. package/dist/parser/index.js.map +0 -1
  210. package/dist/parser/parser-collect.d.ts.map +0 -1
  211. package/dist/parser/parser-collect.js.map +0 -1
  212. package/dist/parser/parser-control.d.ts.map +0 -1
  213. package/dist/parser/parser-control.js.map +0 -1
  214. package/dist/parser/parser-expr.d.ts.map +0 -1
  215. package/dist/parser/parser-expr.js.map +0 -1
  216. package/dist/parser/parser-extract.d.ts.map +0 -1
  217. package/dist/parser/parser-extract.js.map +0 -1
  218. package/dist/parser/parser-functions.d.ts.map +0 -1
  219. package/dist/parser/parser-functions.js.map +0 -1
  220. package/dist/parser/parser-literals.d.ts.map +0 -1
  221. package/dist/parser/parser-literals.js.map +0 -1
  222. package/dist/parser/parser-script.d.ts.map +0 -1
  223. package/dist/parser/parser-script.js.map +0 -1
  224. package/dist/parser/parser-shape.d.ts.map +0 -1
  225. package/dist/parser/parser-shape.js.map +0 -1
  226. package/dist/parser/parser-types.d.ts.map +0 -1
  227. package/dist/parser/parser-types.js.map +0 -1
  228. package/dist/parser/parser-use.d.ts.map +0 -1
  229. package/dist/parser/parser-use.js.map +0 -1
  230. package/dist/parser/parser-variables.d.ts.map +0 -1
  231. package/dist/parser/parser-variables.js.map +0 -1
  232. package/dist/parser/parser.d.ts.map +0 -1
  233. package/dist/parser/parser.js.map +0 -1
  234. package/dist/parser/state.d.ts.map +0 -1
  235. package/dist/parser/state.js.map +0 -1
  236. package/dist/runtime/core/callable.d.ts.map +0 -1
  237. package/dist/runtime/core/callable.js.map +0 -1
  238. package/dist/runtime/core/context.d.ts.map +0 -1
  239. package/dist/runtime/core/context.js.map +0 -1
  240. package/dist/runtime/core/equals.d.ts.map +0 -1
  241. package/dist/runtime/core/equals.js.map +0 -1
  242. package/dist/runtime/core/eval/base.d.ts.map +0 -1
  243. package/dist/runtime/core/eval/base.js.map +0 -1
  244. package/dist/runtime/core/eval/evaluator.d.ts.map +0 -1
  245. package/dist/runtime/core/eval/evaluator.js.map +0 -1
  246. package/dist/runtime/core/eval/index.d.ts.map +0 -1
  247. package/dist/runtime/core/eval/index.js.map +0 -1
  248. package/dist/runtime/core/eval/mixins/annotations.d.ts.map +0 -1
  249. package/dist/runtime/core/eval/mixins/annotations.js.map +0 -1
  250. package/dist/runtime/core/eval/mixins/closures.d.ts.map +0 -1
  251. package/dist/runtime/core/eval/mixins/closures.js.map +0 -1
  252. package/dist/runtime/core/eval/mixins/collections.d.ts.map +0 -1
  253. package/dist/runtime/core/eval/mixins/collections.js.map +0 -1
  254. package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +0 -1
  255. package/dist/runtime/core/eval/mixins/control-flow.js.map +0 -1
  256. package/dist/runtime/core/eval/mixins/conversion.d.ts.map +0 -1
  257. package/dist/runtime/core/eval/mixins/conversion.js.map +0 -1
  258. package/dist/runtime/core/eval/mixins/core.d.ts.map +0 -1
  259. package/dist/runtime/core/eval/mixins/core.js.map +0 -1
  260. package/dist/runtime/core/eval/mixins/expressions.d.ts.map +0 -1
  261. package/dist/runtime/core/eval/mixins/expressions.js.map +0 -1
  262. package/dist/runtime/core/eval/mixins/extraction.d.ts.map +0 -1
  263. package/dist/runtime/core/eval/mixins/extraction.js.map +0 -1
  264. package/dist/runtime/core/eval/mixins/list-dispatch.d.ts.map +0 -1
  265. package/dist/runtime/core/eval/mixins/list-dispatch.js.map +0 -1
  266. package/dist/runtime/core/eval/mixins/literals.d.ts.map +0 -1
  267. package/dist/runtime/core/eval/mixins/literals.js.map +0 -1
  268. package/dist/runtime/core/eval/mixins/types.d.ts.map +0 -1
  269. package/dist/runtime/core/eval/mixins/types.js.map +0 -1
  270. package/dist/runtime/core/eval/mixins/use.d.ts.map +0 -1
  271. package/dist/runtime/core/eval/mixins/use.js.map +0 -1
  272. package/dist/runtime/core/eval/mixins/variables.d.ts.map +0 -1
  273. package/dist/runtime/core/eval/mixins/variables.js.map +0 -1
  274. package/dist/runtime/core/eval/types.d.ts.map +0 -1
  275. package/dist/runtime/core/eval/types.js.map +0 -1
  276. package/dist/runtime/core/execute.d.ts.map +0 -1
  277. package/dist/runtime/core/execute.js.map +0 -1
  278. package/dist/runtime/core/field-descriptor.d.ts.map +0 -1
  279. package/dist/runtime/core/field-descriptor.js.map +0 -1
  280. package/dist/runtime/core/introspection.d.ts.map +0 -1
  281. package/dist/runtime/core/introspection.js.map +0 -1
  282. package/dist/runtime/core/resolvers.d.ts.map +0 -1
  283. package/dist/runtime/core/resolvers.js.map +0 -1
  284. package/dist/runtime/core/signals.d.ts.map +0 -1
  285. package/dist/runtime/core/signals.js.map +0 -1
  286. package/dist/runtime/core/types.d.ts.map +0 -1
  287. package/dist/runtime/core/types.js.map +0 -1
  288. package/dist/runtime/core/values.d.ts.map +0 -1
  289. package/dist/runtime/core/values.js.map +0 -1
  290. package/dist/runtime/ext/builtins.d.ts.map +0 -1
  291. package/dist/runtime/ext/builtins.js.map +0 -1
  292. package/dist/runtime/ext/extensions.d.ts.map +0 -1
  293. package/dist/runtime/ext/extensions.js.map +0 -1
  294. package/dist/runtime/index.d.ts.map +0 -1
  295. package/dist/runtime/index.js.map +0 -1
  296. package/dist/signature-parser.d.ts.map +0 -1
  297. package/dist/signature-parser.js.map +0 -1
  298. package/dist/source-location.d.ts.map +0 -1
  299. package/dist/source-location.js.map +0 -1
  300. package/dist/token-types.d.ts.map +0 -1
  301. package/dist/token-types.js.map +0 -1
  302. package/dist/types.d.ts.map +0 -1
  303. package/dist/types.js.map +0 -1
  304. package/dist/value-types.d.ts.map +0 -1
  305. package/dist/value-types.js.map +0 -1
@@ -317,11 +317,11 @@ function createVariablesMixin(Base) {
317
317
  const finalAccess = node.existenceCheck.finalAccess;
318
318
  const typeRef = node.existenceCheck.typeRef;
319
319
  // Helper: check type match using structural resolution (EC-4: mismatch returns false)
320
- const matchesType = (fieldValue) => {
320
+ const matchesType = async (fieldValue) => {
321
321
  if (typeRef === null)
322
322
  return true;
323
323
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
324
- const resolved = this.resolveTypeRef(typeRef, (name) => getVariable(this.ctx, name));
324
+ const resolved = await this.resolveTypeRef(typeRef, (name) => getVariable(this.ctx, name));
325
325
  return structuralTypeMatches(fieldValue, resolved.structure);
326
326
  };
327
327
  if (finalAccess.kind === 'literal') {
@@ -331,7 +331,7 @@ function createVariablesMixin(Base) {
331
331
  const exists = fieldValue !== undefined && fieldValue !== null;
332
332
  // If type-qualified check, verify type matches
333
333
  if (exists && typeRef !== null) {
334
- return matchesType(fieldValue);
334
+ return await matchesType(fieldValue);
335
335
  }
336
336
  return exists;
337
337
  }
@@ -361,7 +361,7 @@ function createVariablesMixin(Base) {
361
361
  const exists = fieldValue !== undefined && fieldValue !== null;
362
362
  // If type-qualified check, verify type matches
363
363
  if (exists && typeRef !== null) {
364
- return matchesType(fieldValue);
364
+ return await matchesType(fieldValue);
365
365
  }
366
366
  return exists;
367
367
  }
@@ -388,7 +388,7 @@ function createVariablesMixin(Base) {
388
388
  const exists = fieldValue !== undefined && fieldValue !== null;
389
389
  // If type-qualified check, verify type matches
390
390
  if (exists && typeRef !== null) {
391
- return matchesType(fieldValue);
391
+ return await matchesType(fieldValue);
392
392
  }
393
393
  return exists;
394
394
  }
@@ -552,7 +552,7 @@ function createVariablesMixin(Base) {
552
552
  if (node.typeRef !== null) {
553
553
  // Resolve TypeRef and validate against the declared type
554
554
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
555
- const resolved = this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
555
+ const resolved = await this.resolveTypeRef(node.typeRef, (name) => getVariable(this.ctx, name));
556
556
  this.setVariable(node.name, input, resolved.structure, node.span.start);
557
557
  }
558
558
  else {
@@ -578,4 +578,3 @@ function createVariablesMixin(Base) {
578
578
  // TypeScript can't generate declarations for functions returning classes with protected members
579
579
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
580
580
  export const VariablesMixin = createVariablesMixin;
581
- //# sourceMappingURL=variables.js.map
@@ -38,4 +38,3 @@ export type EvaluatorConstructor<TBase extends EvaluatorBase = EvaluatorBase> =
38
38
  * ```
39
39
  */
40
40
  export type Mixin<TBase extends EvaluatorBase = EvaluatorBase, TExtension extends TBase = TBase> = (Base: EvaluatorConstructor<TBase>) => EvaluatorConstructor<TExtension>;
41
- //# sourceMappingURL=types.d.ts.map
@@ -7,4 +7,3 @@
7
7
  * @internal
8
8
  */
9
9
  export {};
10
- //# sourceMappingURL=types.js.map
@@ -23,4 +23,3 @@ export declare function execute(script: ScriptNode, context: RuntimeContext): Pr
23
23
  * @returns A stepper for step-by-step execution
24
24
  */
25
25
  export declare function createStepper(script: ScriptNode, context: RuntimeContext): ExecutionStepper;
26
- //# sourceMappingURL=execute.d.ts.map
@@ -171,4 +171,3 @@ function isRecoveryErrorNode(stmt) {
171
171
  function getInnerStatement(stmt) {
172
172
  return stmt.type === 'AnnotatedStatement' ? stmt.statement : stmt;
173
173
  }
174
- //# sourceMappingURL=execute.js.map
@@ -8,7 +8,7 @@
8
8
  * @internal
9
9
  */
10
10
  import type { SourceLocation } from '../../types.js';
11
- import type { RillFieldType, RillType } from './values.js';
11
+ import type { RillFieldDef, RillType } from './values.js';
12
12
  /**
13
13
  * Field descriptor — carries field name and structural type when accessing a
14
14
  * dict-kind RillType field.
@@ -16,7 +16,7 @@ import type { RillFieldType, RillType } from './values.js';
16
16
  export interface RillFieldDescriptor {
17
17
  readonly __rill_field_descriptor: true;
18
18
  readonly fieldName: string;
19
- readonly fieldType: RillFieldType;
19
+ readonly fieldType: RillFieldDef;
20
20
  }
21
21
  /**
22
22
  * Build a frozen RillFieldDescriptor for the given field in a structural dict type.
@@ -26,4 +26,3 @@ export interface RillFieldDescriptor {
26
26
  export declare function buildFieldDescriptor(structuralType: RillType & {
27
27
  type: 'dict';
28
28
  }, fieldName: string, location: SourceLocation): RillFieldDescriptor;
29
- //# sourceMappingURL=field-descriptor.d.ts.map
@@ -24,4 +24,3 @@ export function buildFieldDescriptor(structuralType, fieldName, location) {
24
24
  fieldType,
25
25
  });
26
26
  }
27
- //# sourceMappingURL=field-descriptor.js.map
@@ -101,4 +101,3 @@ export declare function getDocumentationCoverage(ctx: RuntimeContext): Documenta
101
101
  * @returns Language reference text
102
102
  */
103
103
  export declare function getLanguageReference(): string;
104
- //# sourceMappingURL=introspection.d.ts.map
@@ -252,4 +252,3 @@ export function getDocumentationCoverage(ctx) {
252
252
  export function getLanguageReference() {
253
253
  return LANGUAGE_REFERENCE;
254
254
  }
255
- //# sourceMappingURL=introspection.js.map
@@ -51,4 +51,3 @@ export declare const moduleResolver: SchemeResolver;
51
51
  */
52
52
  export declare const contextResolver: SchemeResolver;
53
53
  export declare const extResolver: SchemeResolver;
54
- //# sourceMappingURL=resolvers.d.ts.map
@@ -119,4 +119,3 @@ export const extResolver = (resource, config) => {
119
119
  }
120
120
  return { kind: 'value', value };
121
121
  };
122
- //# sourceMappingURL=resolvers.js.map
@@ -16,4 +16,3 @@ export declare class ReturnSignal extends Error {
16
16
  readonly value: RillValue;
17
17
  constructor(value: RillValue);
18
18
  }
19
- //# sourceMappingURL=signals.d.ts.map
@@ -23,4 +23,3 @@ export class ReturnSignal extends Error {
23
23
  this.name = 'ReturnSignal';
24
24
  }
25
25
  }
26
- //# sourceMappingURL=signals.js.map
@@ -255,4 +255,3 @@ export interface ExecutionStepper {
255
255
  * This sets boundDict on each callable so they can access their container.
256
256
  */
257
257
  export declare function bindDictCallables(value: RillValue): RillValue;
258
- //# sourceMappingURL=types.d.ts.map
@@ -47,4 +47,3 @@ export function bindDictCallables(value) {
47
47
  }
48
48
  return result;
49
49
  }
50
- //# sourceMappingURL=types.js.map
@@ -26,10 +26,12 @@ export interface RillTuple {
26
26
  /**
27
27
  * Ordered type - represents named key-value pairs with preserved insertion order.
28
28
  * Created by the * (spread) operator from dicts.
29
+ * Entries may carry an optional third element (default value) when representing
30
+ * closure parameter reflection via `.^input`.
29
31
  */
30
32
  export interface RillOrdered {
31
33
  readonly __rill_ordered: true;
32
- readonly entries: [string, RillValue][];
34
+ readonly entries: [string, RillValue, RillValue?][];
33
35
  }
34
36
  /**
35
37
  * Vector type - represents dense numeric embeddings.
@@ -40,6 +42,16 @@ export interface RillVector {
40
42
  readonly data: Float32Array;
41
43
  readonly model: string;
42
44
  }
45
+ /**
46
+ * Field definition - describes a single field in a structural type.
47
+ * Used by dict, tuple, ordered, and closure type descriptors.
48
+ * Default detection: `field.defaultValue !== undefined`.
49
+ */
50
+ export interface RillFieldDef {
51
+ name?: string;
52
+ type: RillType;
53
+ defaultValue?: RillValue;
54
+ }
43
55
  /**
44
56
  * Structural type descriptor - describes the shape of a value in the type system.
45
57
  * Used by RillTypeValue to carry type structure information at runtime.
@@ -58,40 +70,27 @@ export type RillType = {
58
70
  type: 'any';
59
71
  } | {
60
72
  type: 'dict';
61
- fields?: Record<string, RillFieldType>;
73
+ fields?: Record<string, RillFieldDef>;
74
+ valueType?: RillType;
62
75
  } | {
63
76
  type: 'list';
64
77
  element?: RillType;
65
78
  } | {
66
79
  type: 'closure';
67
- params?: [string, RillType, RillValue?][];
80
+ params?: RillFieldDef[];
68
81
  ret?: RillType;
69
82
  } | {
70
83
  type: 'tuple';
71
- elements?: [RillType, RillValue?][];
84
+ elements?: RillFieldDef[];
85
+ valueType?: RillType;
72
86
  } | {
73
87
  type: 'ordered';
74
- fields?: [string, RillType, RillValue?][];
88
+ fields?: RillFieldDef[];
89
+ valueType?: RillType;
75
90
  } | {
76
91
  type: 'union';
77
92
  members: RillType[];
78
93
  };
79
- /**
80
- * Dict field type - either a plain RillType or a RillType paired with a default value.
81
- * Used in dict structural types to carry optional default values per field.
82
- */
83
- export type RillFieldType = RillType | {
84
- type: RillType;
85
- defaultValue: RillValue;
86
- };
87
- /**
88
- * Type guard to distinguish the `{ type, defaultValue }` form of RillFieldType
89
- * from a plain RillType.
90
- */
91
- export declare function isFieldTypeWithDefault(fieldType: RillFieldType): fieldType is {
92
- type: RillType;
93
- defaultValue: RillValue;
94
- };
95
94
  /**
96
95
  * @deprecated Use RillType instead. Will be removed in the next major version.
97
96
  */
@@ -117,8 +116,12 @@ export declare function isVector(value: RillValue): value is RillVector;
117
116
  export declare function isOrdered(value: RillValue): value is RillOrdered;
118
117
  /** Type guard for RillTypeValue */
119
118
  export declare function isTypeValue(value: RillValue): value is RillTypeValue;
120
- /** Create ordered from entries array (named, preserves insertion order) */
121
- export declare function createOrdered(entries: [string, RillValue][]): RillOrdered;
119
+ /**
120
+ * Create ordered from entries array (named, preserves insertion order).
121
+ * Entries may be 2-element [name, value] or 3-element [name, value, default]
122
+ * tuples; the third element carries a default value for `.^input` reflection.
123
+ */
124
+ export declare function createOrdered(entries: [string, RillValue, RillValue?][]): RillOrdered;
122
125
  /** Create tuple from entries array (positional, preserves order) */
123
126
  export declare function createTuple(entries: RillValue[]): RillTuple;
124
127
  /**
@@ -134,6 +137,19 @@ export declare function inferType(value: RillValue): RillTypeName;
134
137
  * Mixed types throw RILL-R002.
135
138
  */
136
139
  export declare function inferElementType(elements: RillValue[]): RillType;
140
+ /**
141
+ * Return the most specific shared type for two RillType values.
142
+ * Returns null when types are incompatible at the top level.
143
+ *
144
+ * Cascade priority:
145
+ * 1. Any-narrowing: if either side is `any`, return the other
146
+ * 2. Structural match: delegate to structuralTypeEquals; on true, return a
147
+ * 3. Recursive list: merge inner element types
148
+ * 3b. Uniform valueType: merge dict/tuple/ordered value types
149
+ * 4. Bare type fallback: same compound type but structural mismatch
150
+ * 5. Incompatible: different top-level types return null
151
+ */
152
+ export declare function commonType(a: RillType, b: RillType): RillType | null;
137
153
  /** Compare two structural types for equality. */
138
154
  export declare function structuralTypeEquals(a: RillType, b: RillType): boolean;
139
155
  /** Infer the structural type descriptor for any Rill value. */
@@ -143,8 +159,8 @@ export declare function inferStructuralType(value: RillValue): RillType;
143
159
  * Used for runtime type checking (`:?` operator).
144
160
  */
145
161
  export declare function structuralTypeMatches(value: RillValue, type: RillType): boolean;
146
- /** Build a closure param tuple, omitting the optional third element when no default. */
147
- export declare function paramToTypeTuple(name: string, type: RillType, defaultValue: RillValue | undefined): [string, RillType, RillValue?];
162
+ /** Build a closure param field definition from name, type, and optional default. */
163
+ export declare function paramToFieldDef(name: string, type: RillType, defaultValue: RillValue | undefined): RillFieldDef;
148
164
  /** Format a structural type descriptor as a human-readable string. */
149
165
  export declare function formatStructuralType(type: RillType): string;
150
166
  /**
@@ -209,6 +225,17 @@ export declare const anyTypeValue: RillTypeValue;
209
225
  * Falls back to 'any' for compound types that lack a direct RillTypeName mapping.
210
226
  */
211
227
  export declare function rillTypeToTypeValue(type: RillType): RillTypeValue;
228
+ /**
229
+ * Check if a type is a collection (dict, ordered, tuple) with defined
230
+ * fields or elements. Used to decide if an empty collection can be
231
+ * synthesized and hydrated.
232
+ */
233
+ export declare function hasCollectionFields(type: RillType): boolean;
234
+ /**
235
+ * Create an empty collection value matching the given RillType.
236
+ * Assumes the type is dict, ordered, or tuple.
237
+ */
238
+ export declare function emptyForType(type: RillType): RillValue;
212
239
  /** Check if a key name is reserved */
213
240
  export declare function isReservedMethod(name: string): boolean;
214
241
  /**
@@ -231,5 +258,11 @@ export interface RillIterator extends Record<string, RillValue> {
231
258
  * - value: any (only required when not done) - current element
232
259
  */
233
260
  export declare function isRillIterator(value: RillValue): value is RillIterator;
261
+ /**
262
+ * Deep copy a RillValue, producing a new independent value.
263
+ * Handles primitives, arrays, plain dicts, and null.
264
+ * Special markers (closures, tuples, ordered, vectors, type values) are returned
265
+ * as-is since they are immutable by contract.
266
+ */
267
+ export declare function deepCopyRillValue(value: RillValue): RillValue;
234
268
  export {};
235
- //# sourceMappingURL=values.d.ts.map