@kernlang/core 3.5.9-canary.220.1.c398cd95 → 4.0.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 (104) hide show
  1. package/dist/capability-matrix.js +8 -6
  2. package/dist/capability-matrix.js.map +1 -1
  3. package/dist/closure-eligibility.d.ts +104 -0
  4. package/dist/closure-eligibility.js +443 -0
  5. package/dist/closure-eligibility.js.map +1 -0
  6. package/dist/closure-python-lowering.d.ts +26 -0
  7. package/dist/closure-python-lowering.js +132 -22
  8. package/dist/closure-python-lowering.js.map +1 -1
  9. package/dist/codegen/body-ts.js +13 -0
  10. package/dist/codegen/body-ts.js.map +1 -1
  11. package/dist/codegen/type-system.js +50 -3
  12. package/dist/codegen/type-system.js.map +1 -1
  13. package/dist/codegen-core.js +29 -0
  14. package/dist/codegen-core.js.map +1 -1
  15. package/dist/codegen-expression.js +7 -0
  16. package/dist/codegen-expression.js.map +1 -1
  17. package/dist/constructor-super.d.ts +34 -0
  18. package/dist/constructor-super.js +122 -0
  19. package/dist/constructor-super.js.map +1 -0
  20. package/dist/core-contracts/boolean.d.ts +147 -0
  21. package/dist/core-contracts/boolean.js +110 -0
  22. package/dist/core-contracts/boolean.js.map +1 -0
  23. package/dist/core-contracts/function.d.ts +6 -0
  24. package/dist/core-contracts/function.js +7 -0
  25. package/dist/core-contracts/function.js.map +1 -0
  26. package/dist/core-contracts/index.d.ts +1032 -0
  27. package/dist/core-contracts/index.js +30 -0
  28. package/dist/core-contracts/index.js.map +1 -0
  29. package/dist/core-contracts/list.d.ts +87 -0
  30. package/dist/core-contracts/list.js +54 -0
  31. package/dist/core-contracts/list.js.map +1 -0
  32. package/dist/core-contracts/nullish.d.ts +12 -0
  33. package/dist/core-contracts/nullish.js +13 -0
  34. package/dist/core-contracts/nullish.js.map +1 -0
  35. package/dist/core-contracts/number.d.ts +291 -0
  36. package/dist/core-contracts/number.js +214 -0
  37. package/dist/core-contracts/number.js.map +1 -0
  38. package/dist/core-contracts/record.d.ts +60 -0
  39. package/dist/core-contracts/record.js +32 -0
  40. package/dist/core-contracts/record.js.map +1 -0
  41. package/dist/core-contracts/schema.d.ts +71 -0
  42. package/dist/core-contracts/schema.js +98 -0
  43. package/dist/core-contracts/schema.js.map +1 -0
  44. package/dist/core-contracts/semantics.d.ts +7 -0
  45. package/dist/core-contracts/semantics.js +221 -0
  46. package/dist/core-contracts/semantics.js.map +1 -0
  47. package/dist/core-contracts/string.d.ts +414 -0
  48. package/dist/core-contracts/string.js +335 -0
  49. package/dist/core-contracts/string.js.map +1 -0
  50. package/dist/core-runtime/contract-adapter.d.ts +8 -0
  51. package/dist/core-runtime/contract-adapter.js +73 -0
  52. package/dist/core-runtime/contract-adapter.js.map +1 -0
  53. package/dist/core-runtime/index.d.ts +109 -0
  54. package/dist/core-runtime/index.js +1946 -0
  55. package/dist/core-runtime/index.js.map +1 -0
  56. package/dist/core-runtime/shape-validator.d.ts +61 -0
  57. package/dist/core-runtime/shape-validator.js +564 -0
  58. package/dist/core-runtime/shape-validator.js.map +1 -0
  59. package/dist/core-runtime/value-brand.d.ts +2 -0
  60. package/dist/core-runtime/value-brand.js +6 -0
  61. package/dist/core-runtime/value-brand.js.map +1 -0
  62. package/dist/decompiler.js +46 -0
  63. package/dist/decompiler.js.map +1 -1
  64. package/dist/eligibility-taxonomy.d.ts +58 -0
  65. package/dist/eligibility-taxonomy.generated.d.ts +472 -0
  66. package/dist/eligibility-taxonomy.generated.js +566 -0
  67. package/dist/eligibility-taxonomy.generated.js.map +1 -0
  68. package/dist/eligibility-taxonomy.js +55 -0
  69. package/dist/eligibility-taxonomy.js.map +1 -0
  70. package/dist/index.d.ts +19 -2
  71. package/dist/index.js +17 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/instanceof-rhs.d.ts +53 -0
  74. package/dist/instanceof-rhs.js +74 -0
  75. package/dist/instanceof-rhs.js.map +1 -0
  76. package/dist/ir/semantics/lambda.js +9 -1
  77. package/dist/ir/semantics/lambda.js.map +1 -1
  78. package/dist/native-eligibility-ast.d.ts +5 -0
  79. package/dist/native-eligibility-ast.js +242 -63
  80. package/dist/native-eligibility-ast.js.map +1 -1
  81. package/dist/parser-expression.d.ts +1 -1
  82. package/dist/parser-expression.js +90 -1
  83. package/dist/parser-expression.js.map +1 -1
  84. package/dist/rag-assertions.d.ts +3 -0
  85. package/dist/rag-assertions.js +15 -0
  86. package/dist/rag-assertions.js.map +1 -0
  87. package/dist/rag-runtime.d.ts +169 -0
  88. package/dist/rag-runtime.js +823 -0
  89. package/dist/rag-runtime.js.map +1 -0
  90. package/dist/schema.d.ts +1 -0
  91. package/dist/schema.js +197 -2
  92. package/dist/schema.js.map +1 -1
  93. package/dist/semantic-substrate.d.ts +108 -0
  94. package/dist/semantic-substrate.js +263 -0
  95. package/dist/semantic-substrate.js.map +1 -0
  96. package/dist/semantic-validator.d.ts +332 -0
  97. package/dist/semantic-validator.js +3387 -0
  98. package/dist/semantic-validator.js.map +1 -1
  99. package/dist/spec.d.ts +2 -2
  100. package/dist/spec.js +15 -1
  101. package/dist/spec.js.map +1 -1
  102. package/dist/value-ir.d.ts +11 -1
  103. package/dist/value-ir.js.map +1 -1
  104. package/package.json +5 -1
@@ -0,0 +1,335 @@
1
+ import { CORE_FIXTURE_UNDEFINED } from './schema.js';
2
+ export const STRING_CONTRACT = {
3
+ name: 'String',
4
+ kind: 'primitive',
5
+ strict: true,
6
+ operations: [
7
+ {
8
+ id: 'String.length',
9
+ kind: 'property',
10
+ args: ['String'],
11
+ returns: 'Number',
12
+ lowers: {
13
+ kern: 'String.length($0)',
14
+ ts: '__kernStringLength($0)',
15
+ python: '__kern_string_length($0)',
16
+ },
17
+ fixtures: [
18
+ { args: [''], returns: 0 },
19
+ { args: ['kern'], returns: 4 },
20
+ { args: ['𐐷'], returns: 1 },
21
+ { args: ['e\u0301'], returns: 2 },
22
+ ],
23
+ review: {
24
+ summary: 'KERN string length counts Unicode code points with no normalization.',
25
+ graph: ['String', 'Number', 'portable', 'unicode-code-point'],
26
+ },
27
+ },
28
+ {
29
+ id: 'String.index',
30
+ kind: 'method',
31
+ args: ['String', 'Number'],
32
+ returns: ['String', 'Undefined'],
33
+ lowers: {
34
+ kern: 'String.index($0, $1)',
35
+ ts: '__kernStringIndex($0, $1)',
36
+ python: '__kern_string_index($0, $1)',
37
+ },
38
+ fixtures: [
39
+ { args: ['abc', 1], returns: 'b' },
40
+ { args: ['a𐐷b', 1], returns: '𐐷' },
41
+ { args: ['abc', 4], returns: CORE_FIXTURE_UNDEFINED },
42
+ { args: ['abc', -1], returns: CORE_FIXTURE_UNDEFINED },
43
+ { args: ['abc', 1.2], returns: CORE_FIXTURE_UNDEFINED },
44
+ { args: ['abc', '1'], throws: { code: 'strict-type', message: 'String.index expects String, Number.' } },
45
+ ],
46
+ review: {
47
+ summary: 'Strict string indexing over Unicode code-point offsets; negative, fractional, and out-of-range misses return Undefined.',
48
+ graph: ['String', 'Undefined', 'strict', 'portable', 'unicode-code-point'],
49
+ },
50
+ },
51
+ {
52
+ id: 'String.includes',
53
+ kind: 'method',
54
+ args: ['String', 'String'],
55
+ returns: 'Boolean',
56
+ lowers: {
57
+ kern: 'String.includes($0, $1)',
58
+ ts: '__kernStringIncludes($0, $1)',
59
+ python: '__kern_string_includes($0, $1)',
60
+ },
61
+ fixtures: [
62
+ { args: ['abc', 'b'], returns: true },
63
+ { args: ['abc', 'x'], returns: false },
64
+ ],
65
+ review: {
66
+ summary: 'Strict string containment.',
67
+ graph: ['String', 'Boolean', 'portable'],
68
+ },
69
+ },
70
+ {
71
+ id: 'String.startsWith',
72
+ kind: 'method',
73
+ args: ['String', 'String'],
74
+ returns: 'Boolean',
75
+ lowers: {
76
+ kern: 'String.startsWith($0, $1)',
77
+ ts: '__kernStringStartsWith($0, $1)',
78
+ python: '__kern_string_starts_with($0, $1)',
79
+ },
80
+ fixtures: [
81
+ { args: ['kern', 'ke'], returns: true },
82
+ { args: ['kern', 'rn'], returns: false },
83
+ ],
84
+ review: {
85
+ summary: 'Strict string prefix test.',
86
+ graph: ['String', 'Boolean', 'portable'],
87
+ },
88
+ },
89
+ {
90
+ id: 'String.endsWith',
91
+ kind: 'method',
92
+ args: ['String', 'String'],
93
+ returns: 'Boolean',
94
+ lowers: {
95
+ kern: 'String.endsWith($0, $1)',
96
+ ts: '__kernStringEndsWith($0, $1)',
97
+ python: '__kern_string_ends_with($0, $1)',
98
+ },
99
+ fixtures: [
100
+ { args: ['kern', 'rn'], returns: true },
101
+ { args: ['kern', 'ke'], returns: false },
102
+ ],
103
+ review: {
104
+ summary: 'Strict string suffix test.',
105
+ graph: ['String', 'Boolean', 'portable'],
106
+ },
107
+ },
108
+ {
109
+ id: 'String.slice',
110
+ kind: 'method',
111
+ args: ['String', 'Number', 'Number'],
112
+ returns: 'String',
113
+ lowers: {
114
+ kern: 'String.slice($0, $1, $2)',
115
+ ts: '__kernStringSlice($0, $1, $2)',
116
+ python: '__kern_string_slice($0, $1, $2)',
117
+ },
118
+ fixtures: [
119
+ { args: ['abcdef', 1, 4], returns: 'bcd' },
120
+ { args: ['abcdef', 1.9, 4.2], returns: 'bcd' },
121
+ { args: ['abc', 0, 2], returns: 'ab' },
122
+ { args: ['abcdef', -3, -1], returns: 'de' },
123
+ { args: ['abcdef', -20, 2], returns: 'ab' },
124
+ { args: ['abcdef', 4, 2], returns: '' },
125
+ { args: ['a𐐷b', 1, 2], returns: '𐐷' },
126
+ { args: ['e\u0301x', 0, 2], returns: 'e\u0301' },
127
+ {
128
+ args: ['abc', '0', 2],
129
+ throws: { code: 'strict-type', message: 'String.slice expects String, Number, Number.' },
130
+ },
131
+ {
132
+ args: ['abc', 1],
133
+ throws: { code: 'strict-type', message: 'String.slice expects String, Number, Number.' },
134
+ },
135
+ ],
136
+ review: {
137
+ summary: 'Strict string slice over Unicode code-point offsets with explicit start and end offsets; negative offsets count from the end.',
138
+ graph: ['String', 'Number', 'strict', 'portable', 'unicode-code-point'],
139
+ },
140
+ },
141
+ {
142
+ id: 'String.trim',
143
+ kind: 'method',
144
+ args: ['String'],
145
+ returns: 'String',
146
+ lowers: {
147
+ kern: 'String.trim($0)',
148
+ ts: '__kernStringTrim($0)',
149
+ python: '__kern_string_trim($0)',
150
+ },
151
+ fixtures: [
152
+ { args: [' kern '], returns: 'kern' },
153
+ { args: ['\ncore\t'], returns: 'core' },
154
+ ],
155
+ review: {
156
+ summary: 'Portable surrounding whitespace trim.',
157
+ graph: ['String', 'portable'],
158
+ },
159
+ },
160
+ {
161
+ id: 'String.lower',
162
+ kind: 'method',
163
+ args: ['String'],
164
+ returns: 'String',
165
+ lowers: {
166
+ kern: 'String.lower($0)',
167
+ ts: '__kernStringLower($0)',
168
+ python: '__kern_string_lower($0)',
169
+ },
170
+ fixtures: [
171
+ { args: ['KERN'], returns: 'kern' },
172
+ { args: ['Core'], returns: 'core' },
173
+ ],
174
+ review: {
175
+ summary: 'Portable lowercase conversion.',
176
+ graph: ['String', 'portable'],
177
+ },
178
+ },
179
+ {
180
+ id: 'String.upper',
181
+ kind: 'method',
182
+ args: ['String'],
183
+ returns: 'String',
184
+ lowers: {
185
+ kern: 'String.upper($0)',
186
+ ts: '__kernStringUpper($0)',
187
+ python: '__kern_string_upper($0)',
188
+ },
189
+ fixtures: [
190
+ { args: ['kern'], returns: 'KERN' },
191
+ { args: ['Core'], returns: 'CORE' },
192
+ ],
193
+ review: {
194
+ summary: 'Portable uppercase conversion.',
195
+ graph: ['String', 'portable'],
196
+ },
197
+ },
198
+ {
199
+ id: 'String.concat',
200
+ kind: 'method',
201
+ args: ['String', 'String'],
202
+ returns: 'String',
203
+ lowers: {
204
+ kern: 'String.concat($0, $1)',
205
+ ts: '__kernStringConcat($0, $1)',
206
+ python: '__kern_string_concat($0, $1)',
207
+ },
208
+ fixtures: [
209
+ { args: ['kern', 'lang'], returns: 'kernlang' },
210
+ { args: ['count:', 2], throws: { code: 'strict-type', message: 'String.concat expects String, String.' } },
211
+ ],
212
+ review: {
213
+ summary: 'Strict string concatenation; both operands must be String.',
214
+ graph: ['String', 'strict', 'portable'],
215
+ },
216
+ },
217
+ {
218
+ id: 'String.equals',
219
+ kind: 'method',
220
+ args: ['String', 'String'],
221
+ returns: 'Boolean',
222
+ lowers: {
223
+ kern: 'String.equals($0, $1)',
224
+ ts: '__kernStringEquals($0, $1)',
225
+ python: '__kern_string_equals($0, $1)',
226
+ },
227
+ fixtures: [
228
+ { args: ['kern', 'kern'], returns: true },
229
+ { args: ['kern', 'core'], returns: false },
230
+ { args: ['kern', true], throws: { code: 'strict-type', message: 'String.equals expects String, String.' } },
231
+ ],
232
+ review: {
233
+ summary: 'Strict string equality; cross-type equality is a type error in schema v1.',
234
+ graph: ['String', 'Boolean', 'strict', 'portable'],
235
+ },
236
+ },
237
+ {
238
+ id: 'String.lessThan',
239
+ kind: 'operator',
240
+ args: ['String', 'String'],
241
+ returns: 'Boolean',
242
+ lowers: {
243
+ kern: 'String.lessThan($0, $1)',
244
+ ts: '__kernStringLessThan($0, $1)',
245
+ python: '__kern_string_less_than($0, $1)',
246
+ },
247
+ fixtures: [
248
+ { args: ['abc', 'abd'], returns: true },
249
+ { args: ['abc', 'abc'], returns: false },
250
+ { args: ['abc', true], throws: { code: 'strict-type', message: 'String.lessThan expects String, String.' } },
251
+ ],
252
+ review: {
253
+ summary: 'Strict string less-than comparison using KERN portable code-point ordering.',
254
+ graph: ['String', 'Boolean', 'strict', 'portable', 'unicode-code-point-order'],
255
+ },
256
+ },
257
+ {
258
+ id: 'String.lessThanOrEqual',
259
+ kind: 'operator',
260
+ args: ['String', 'String'],
261
+ returns: 'Boolean',
262
+ lowers: {
263
+ kern: 'String.lessThanOrEqual($0, $1)',
264
+ ts: '__kernStringLessThanOrEqual($0, $1)',
265
+ python: '__kern_string_less_than_or_equal($0, $1)',
266
+ },
267
+ fixtures: [
268
+ { args: ['abc', 'abc'], returns: true },
269
+ { args: ['abd', 'abc'], returns: false },
270
+ ],
271
+ review: {
272
+ summary: 'Strict string less-than-or-equal comparison using KERN portable code-point ordering.',
273
+ graph: ['String', 'Boolean', 'strict', 'portable', 'unicode-code-point-order'],
274
+ },
275
+ },
276
+ {
277
+ id: 'String.greaterThan',
278
+ kind: 'operator',
279
+ args: ['String', 'String'],
280
+ returns: 'Boolean',
281
+ lowers: {
282
+ kern: 'String.greaterThan($0, $1)',
283
+ ts: '__kernStringGreaterThan($0, $1)',
284
+ python: '__kern_string_greater_than($0, $1)',
285
+ },
286
+ fixtures: [
287
+ { args: ['abd', 'abc'], returns: true },
288
+ { args: ['abc', 'abc'], returns: false },
289
+ ],
290
+ review: {
291
+ summary: 'Strict string greater-than comparison using KERN portable code-point ordering.',
292
+ graph: ['String', 'Boolean', 'strict', 'portable', 'unicode-code-point-order'],
293
+ },
294
+ },
295
+ {
296
+ id: 'String.greaterThanOrEqual',
297
+ kind: 'operator',
298
+ args: ['String', 'String'],
299
+ returns: 'Boolean',
300
+ lowers: {
301
+ kern: 'String.greaterThanOrEqual($0, $1)',
302
+ ts: '__kernStringGreaterThanOrEqual($0, $1)',
303
+ python: '__kern_string_greater_than_or_equal($0, $1)',
304
+ },
305
+ fixtures: [
306
+ { args: ['abc', 'abc'], returns: true },
307
+ { args: ['abc', 'abd'], returns: false },
308
+ ],
309
+ review: {
310
+ summary: 'Strict string greater-than-or-equal comparison using KERN portable code-point ordering.',
311
+ graph: ['String', 'Boolean', 'strict', 'portable', 'unicode-code-point-order'],
312
+ },
313
+ },
314
+ {
315
+ id: 'String.toString',
316
+ kind: 'coercion',
317
+ args: ['String'],
318
+ returns: 'String',
319
+ lowers: {
320
+ kern: 'String.toString($0)',
321
+ ts: '__kernStringToString($0)',
322
+ python: '__kern_string_to_string($0)',
323
+ },
324
+ fixtures: [
325
+ { args: ['kern'], returns: 'kern' },
326
+ { args: [''], returns: '' },
327
+ ],
328
+ review: {
329
+ summary: 'String identity coercion.',
330
+ graph: ['String', 'portable'],
331
+ },
332
+ },
333
+ ],
334
+ };
335
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/core-contracts/string.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type CoreFixtureValue } from '../core-contracts/index.js';
2
+ import type { KernValue } from './index.js';
3
+ export declare class CoreRuntimeContractAdapterError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export declare function kernValueToCoreFixtureValue(value: KernValue): CoreFixtureValue;
7
+ export declare function coreFixtureValueToKernValue(value: CoreFixtureValue): KernValue;
8
+ export declare function roundTripKernContractDataValue(value: KernValue): KernValue;
@@ -0,0 +1,73 @@
1
+ import { CORE_FIXTURE_FUNCTION, CORE_FIXTURE_UNDEFINED, isCoreFixtureFunction, isCoreFixtureUndefined, } from '../core-contracts/index.js';
2
+ import { brandValue } from './value-brand.js';
3
+ export class CoreRuntimeContractAdapterError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = 'CoreRuntimeContractAdapterError';
7
+ }
8
+ }
9
+ export function kernValueToCoreFixtureValue(value) {
10
+ switch (value.kind) {
11
+ case 'null':
12
+ return null;
13
+ case 'undefined':
14
+ return CORE_FIXTURE_UNDEFINED;
15
+ case 'boolean':
16
+ case 'number':
17
+ case 'string':
18
+ return value.value;
19
+ case 'array':
20
+ return value.items.map(kernValueToCoreFixtureValue);
21
+ case 'record':
22
+ if (isReservedFixtureSentinelRecord(value.entries)) {
23
+ throw new CoreRuntimeContractAdapterError('KERN record value uses reserved core fixture sentinel shape: __kernFixture.');
24
+ }
25
+ return Object.fromEntries(Object.entries(value.entries).map(([key, entry]) => [key, kernValueToCoreFixtureValue(entry)]));
26
+ case 'function':
27
+ case 'builtin':
28
+ case 'class':
29
+ case 'bound-method':
30
+ case 'super':
31
+ return CORE_FIXTURE_FUNCTION;
32
+ case 'instance':
33
+ if (isReservedFixtureSentinelRecord(value.fields)) {
34
+ throw new CoreRuntimeContractAdapterError('KERN instance value uses reserved core fixture sentinel shape: __kernFixture.');
35
+ }
36
+ return Object.fromEntries(Object.entries(value.fields).map(([key, entry]) => [key, kernValueToCoreFixtureValue(entry)]));
37
+ }
38
+ }
39
+ export function coreFixtureValueToKernValue(value) {
40
+ if (value === null)
41
+ return brandValue({ kind: 'null' });
42
+ if (isCoreFixtureUndefined(value))
43
+ return brandValue({ kind: 'undefined' });
44
+ if (isCoreFixtureFunction(value)) {
45
+ throw new CoreRuntimeContractAdapterError('Core Function fixture references cannot be materialized as runtime code.');
46
+ }
47
+ switch (typeof value) {
48
+ case 'boolean':
49
+ return brandValue({ kind: 'boolean', value });
50
+ case 'number':
51
+ return brandValue({ kind: 'number', value });
52
+ case 'string':
53
+ return brandValue({ kind: 'string', value });
54
+ case 'object': {
55
+ if (Array.isArray(value)) {
56
+ return brandValue({ kind: 'array', items: value.map(coreFixtureValueToKernValue) });
57
+ }
58
+ const entries = Object.create(null);
59
+ for (const [key, entry] of Object.entries(value))
60
+ entries[key] = coreFixtureValueToKernValue(entry);
61
+ return brandValue({ kind: 'record', entries });
62
+ }
63
+ }
64
+ }
65
+ export function roundTripKernContractDataValue(value) {
66
+ return coreFixtureValueToKernValue(kernValueToCoreFixtureValue(value));
67
+ }
68
+ function isReservedFixtureSentinelRecord(entries) {
69
+ return (Object.keys(entries).length === 1 &&
70
+ entries.__kernFixture?.kind === 'string' &&
71
+ (entries.__kernFixture.value === 'Undefined' || entries.__kernFixture.value === 'Function'));
72
+ }
73
+ //# sourceMappingURL=contract-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-adapter.js","sourceRoot":"","sources":["../../src/core-runtime/contract-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ import type { IRNode } from '../types.js';
2
+ import type { ValueIR } from '../value-ir.js';
3
+ export type KernValue = {
4
+ kind: 'null';
5
+ } | {
6
+ kind: 'undefined';
7
+ } | {
8
+ kind: 'boolean';
9
+ value: boolean;
10
+ } | {
11
+ kind: 'number';
12
+ value: number;
13
+ } | {
14
+ kind: 'string';
15
+ value: string;
16
+ } | {
17
+ kind: 'array';
18
+ items: KernValue[];
19
+ } | {
20
+ kind: 'record';
21
+ entries: Record<string, KernValue>;
22
+ } | KernFunctionValue | KernBuiltinValue | KernClassValue | KernInstanceValue | KernBoundMethodValue | KernSuperValue;
23
+ export interface KernFunctionValue {
24
+ kind: 'function';
25
+ name?: string;
26
+ params: RuntimeParam[];
27
+ body: IRNode[];
28
+ env: CoreRuntimeEnv;
29
+ }
30
+ export interface KernBuiltinValue {
31
+ kind: 'builtin';
32
+ name: string;
33
+ call: (args: KernValue[]) => KernValue;
34
+ }
35
+ export interface KernClassValue {
36
+ kind: 'class';
37
+ name: string;
38
+ node: IRNode;
39
+ env: CoreRuntimeEnv;
40
+ staticFields: Record<string, KernValue>;
41
+ runtimeRootContext?: IRNode | readonly IRNode[];
42
+ }
43
+ export interface KernInstanceValue {
44
+ kind: 'instance';
45
+ classValue: KernClassValue;
46
+ fields: Record<string, KernValue>;
47
+ initializedClasses: Set<string>;
48
+ }
49
+ export interface KernBoundMethodValue {
50
+ kind: 'bound-method';
51
+ name: string;
52
+ receiver: KernInstanceValue;
53
+ methodNode: IRNode;
54
+ ownerClass: KernClassValue;
55
+ }
56
+ export interface KernSuperValue {
57
+ kind: 'super';
58
+ receiver: KernInstanceValue | KernClassValue;
59
+ ownerClass: KernClassValue;
60
+ mode: 'constructor' | 'method' | 'static';
61
+ }
62
+ export interface RuntimeParam {
63
+ name: string;
64
+ type?: string;
65
+ defaultExpr?: string;
66
+ }
67
+ export type CoreCompletion = {
68
+ kind: 'normal';
69
+ value: KernValue;
70
+ } | {
71
+ kind: 'return';
72
+ value: KernValue;
73
+ };
74
+ export interface CoreRuntimeResult {
75
+ completion: CoreCompletion;
76
+ env: CoreRuntimeEnv;
77
+ }
78
+ export interface CreateCoreRuntimeEnvOptions {
79
+ globals?: Record<string, unknown>;
80
+ parent?: CoreRuntimeEnv;
81
+ }
82
+ export declare class CoreRuntimeEnv {
83
+ readonly parent?: CoreRuntimeEnv | undefined;
84
+ private readonly bindings;
85
+ private runtimeRootContext?;
86
+ constructor(parent?: CoreRuntimeEnv | undefined);
87
+ define(name: string, value: KernValue): KernValue;
88
+ assign(name: string, value: KernValue): KernValue;
89
+ lookup(name: string): KernValue;
90
+ has(name: string): boolean;
91
+ child(): CoreRuntimeEnv;
92
+ setRuntimeRootContext(root: IRNode | readonly IRNode[]): void;
93
+ getRuntimeRootContext(): IRNode | readonly IRNode[] | undefined;
94
+ }
95
+ export declare const kNull: () => KernValue;
96
+ export declare const kUndefined: () => KernValue;
97
+ export declare const kBoolean: (value: boolean) => KernValue;
98
+ export declare const kNumber: (value: number) => KernValue;
99
+ export declare const kString: (value: string) => KernValue;
100
+ export declare function createCoreRuntimeEnv(options?: CreateCoreRuntimeEnvOptions): CoreRuntimeEnv;
101
+ export declare function fromHostValue(value: unknown): KernValue;
102
+ export declare function toHostValue(value: KernValue | undefined): unknown;
103
+ export declare function kernTruthy(value: KernValue): boolean;
104
+ export declare function evalCoreExpression(expr: string | ValueIR, env?: CoreRuntimeEnv): KernValue;
105
+ export declare function runCoreRuntime(nodeOrNodes: IRNode | readonly IRNode[], env?: CoreRuntimeEnv): CoreRuntimeResult;
106
+ export declare function callCoreFunction(fnNode: IRNode, args: KernValue[], env?: CoreRuntimeEnv): {
107
+ value: KernValue;
108
+ env: CoreRuntimeEnv;
109
+ };