@rcrsr/rill 0.14.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 -11
  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 +50 -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 -40
  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 -31
  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 -69
  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 +263 -16
  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 -200
  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 -8
  136. package/dist/runtime/core/values.js +338 -36
  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 -4
  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
@@ -8,7 +8,7 @@
8
8
  * @internal
9
9
  */
10
10
  import type { SourceLocation } from '../../types.js';
11
- import type { 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 { RillType } from './values.js';
16
16
  export interface RillFieldDescriptor {
17
17
  readonly __rill_field_descriptor: true;
18
18
  readonly fieldName: string;
19
- readonly fieldType: RillType;
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,20 +70,23 @@ export type RillType = {
58
70
  type: 'any';
59
71
  } | {
60
72
  type: 'dict';
61
- fields?: Record<string, RillType>;
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][];
80
+ params?: RillFieldDef[];
68
81
  ret?: RillType;
69
82
  } | {
70
83
  type: 'tuple';
71
- elements?: RillType[];
84
+ elements?: RillFieldDef[];
85
+ valueType?: RillType;
72
86
  } | {
73
87
  type: 'ordered';
74
- fields?: [string, RillType][];
88
+ fields?: RillFieldDef[];
89
+ valueType?: RillType;
75
90
  } | {
76
91
  type: 'union';
77
92
  members: RillType[];
@@ -101,8 +116,12 @@ export declare function isVector(value: RillValue): value is RillVector;
101
116
  export declare function isOrdered(value: RillValue): value is RillOrdered;
102
117
  /** Type guard for RillTypeValue */
103
118
  export declare function isTypeValue(value: RillValue): value is RillTypeValue;
104
- /** Create ordered from entries array (named, preserves insertion order) */
105
- 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;
106
125
  /** Create tuple from entries array (positional, preserves order) */
107
126
  export declare function createTuple(entries: RillValue[]): RillTuple;
108
127
  /**
@@ -118,6 +137,19 @@ export declare function inferType(value: RillValue): RillTypeName;
118
137
  * Mixed types throw RILL-R002.
119
138
  */
120
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;
121
153
  /** Compare two structural types for equality. */
122
154
  export declare function structuralTypeEquals(a: RillType, b: RillType): boolean;
123
155
  /** Infer the structural type descriptor for any Rill value. */
@@ -127,6 +159,8 @@ export declare function inferStructuralType(value: RillValue): RillType;
127
159
  * Used for runtime type checking (`:?` operator).
128
160
  */
129
161
  export declare function structuralTypeMatches(value: RillValue, type: RillType): boolean;
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;
130
164
  /** Format a structural type descriptor as a human-readable string. */
131
165
  export declare function formatStructuralType(type: RillType): string;
132
166
  /**
@@ -191,6 +225,17 @@ export declare const anyTypeValue: RillTypeValue;
191
225
  * Falls back to 'any' for compound types that lack a direct RillTypeName mapping.
192
226
  */
193
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;
194
239
  /** Check if a key name is reserved */
195
240
  export declare function isReservedMethod(name: string): boolean;
196
241
  /**
@@ -213,5 +258,11 @@ export interface RillIterator extends Record<string, RillValue> {
213
258
  * - value: any (only required when not done) - current element
214
259
  */
215
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;
216
268
  export {};
217
- //# sourceMappingURL=values.d.ts.map