@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.
- package/dist/capability-matrix.js +8 -6
- package/dist/capability-matrix.js.map +1 -1
- package/dist/closure-eligibility.d.ts +104 -0
- package/dist/closure-eligibility.js +443 -0
- package/dist/closure-eligibility.js.map +1 -0
- package/dist/closure-python-lowering.d.ts +26 -0
- package/dist/closure-python-lowering.js +132 -22
- package/dist/closure-python-lowering.js.map +1 -1
- package/dist/codegen/body-ts.js +13 -0
- package/dist/codegen/body-ts.js.map +1 -1
- package/dist/codegen/type-system.js +50 -3
- package/dist/codegen/type-system.js.map +1 -1
- package/dist/codegen-core.js +29 -0
- package/dist/codegen-core.js.map +1 -1
- package/dist/codegen-expression.js +7 -0
- package/dist/codegen-expression.js.map +1 -1
- package/dist/constructor-super.d.ts +34 -0
- package/dist/constructor-super.js +122 -0
- package/dist/constructor-super.js.map +1 -0
- package/dist/core-contracts/boolean.d.ts +147 -0
- package/dist/core-contracts/boolean.js +110 -0
- package/dist/core-contracts/boolean.js.map +1 -0
- package/dist/core-contracts/function.d.ts +6 -0
- package/dist/core-contracts/function.js +7 -0
- package/dist/core-contracts/function.js.map +1 -0
- package/dist/core-contracts/index.d.ts +1032 -0
- package/dist/core-contracts/index.js +30 -0
- package/dist/core-contracts/index.js.map +1 -0
- package/dist/core-contracts/list.d.ts +87 -0
- package/dist/core-contracts/list.js +54 -0
- package/dist/core-contracts/list.js.map +1 -0
- package/dist/core-contracts/nullish.d.ts +12 -0
- package/dist/core-contracts/nullish.js +13 -0
- package/dist/core-contracts/nullish.js.map +1 -0
- package/dist/core-contracts/number.d.ts +291 -0
- package/dist/core-contracts/number.js +214 -0
- package/dist/core-contracts/number.js.map +1 -0
- package/dist/core-contracts/record.d.ts +60 -0
- package/dist/core-contracts/record.js +32 -0
- package/dist/core-contracts/record.js.map +1 -0
- package/dist/core-contracts/schema.d.ts +71 -0
- package/dist/core-contracts/schema.js +98 -0
- package/dist/core-contracts/schema.js.map +1 -0
- package/dist/core-contracts/semantics.d.ts +7 -0
- package/dist/core-contracts/semantics.js +221 -0
- package/dist/core-contracts/semantics.js.map +1 -0
- package/dist/core-contracts/string.d.ts +414 -0
- package/dist/core-contracts/string.js +335 -0
- package/dist/core-contracts/string.js.map +1 -0
- package/dist/core-runtime/contract-adapter.d.ts +8 -0
- package/dist/core-runtime/contract-adapter.js +73 -0
- package/dist/core-runtime/contract-adapter.js.map +1 -0
- package/dist/core-runtime/index.d.ts +109 -0
- package/dist/core-runtime/index.js +1946 -0
- package/dist/core-runtime/index.js.map +1 -0
- package/dist/core-runtime/shape-validator.d.ts +61 -0
- package/dist/core-runtime/shape-validator.js +564 -0
- package/dist/core-runtime/shape-validator.js.map +1 -0
- package/dist/core-runtime/value-brand.d.ts +2 -0
- package/dist/core-runtime/value-brand.js +6 -0
- package/dist/core-runtime/value-brand.js.map +1 -0
- package/dist/decompiler.js +46 -0
- package/dist/decompiler.js.map +1 -1
- package/dist/eligibility-taxonomy.d.ts +58 -0
- package/dist/eligibility-taxonomy.generated.d.ts +472 -0
- package/dist/eligibility-taxonomy.generated.js +566 -0
- package/dist/eligibility-taxonomy.generated.js.map +1 -0
- package/dist/eligibility-taxonomy.js +55 -0
- package/dist/eligibility-taxonomy.js.map +1 -0
- package/dist/index.d.ts +19 -2
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/instanceof-rhs.d.ts +53 -0
- package/dist/instanceof-rhs.js +74 -0
- package/dist/instanceof-rhs.js.map +1 -0
- package/dist/ir/semantics/lambda.js +9 -1
- package/dist/ir/semantics/lambda.js.map +1 -1
- package/dist/native-eligibility-ast.d.ts +5 -0
- package/dist/native-eligibility-ast.js +242 -63
- package/dist/native-eligibility-ast.js.map +1 -1
- package/dist/parser-expression.d.ts +1 -1
- package/dist/parser-expression.js +90 -1
- package/dist/parser-expression.js.map +1 -1
- package/dist/rag-assertions.d.ts +3 -0
- package/dist/rag-assertions.js +15 -0
- package/dist/rag-assertions.js.map +1 -0
- package/dist/rag-runtime.d.ts +169 -0
- package/dist/rag-runtime.js +823 -0
- package/dist/rag-runtime.js.map +1 -0
- package/dist/schema.d.ts +1 -0
- package/dist/schema.js +197 -2
- package/dist/schema.js.map +1 -1
- package/dist/semantic-substrate.d.ts +108 -0
- package/dist/semantic-substrate.js +263 -0
- package/dist/semantic-substrate.js.map +1 -0
- package/dist/semantic-validator.d.ts +332 -0
- package/dist/semantic-validator.js +3387 -0
- package/dist/semantic-validator.js.map +1 -1
- package/dist/spec.d.ts +2 -2
- package/dist/spec.js +15 -1
- package/dist/spec.js.map +1 -1
- package/dist/value-ir.d.ts +11 -1
- package/dist/value-ir.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
export const NUMBER_CONTRACT = {
|
|
2
|
+
name: 'Number',
|
|
3
|
+
kind: 'primitive',
|
|
4
|
+
strict: true,
|
|
5
|
+
operations: [
|
|
6
|
+
{
|
|
7
|
+
id: 'Number.negate',
|
|
8
|
+
kind: 'method',
|
|
9
|
+
args: ['Number'],
|
|
10
|
+
returns: 'Number',
|
|
11
|
+
lowers: {
|
|
12
|
+
kern: 'Number.negate($0)',
|
|
13
|
+
ts: '__kernNumberNegate($0)',
|
|
14
|
+
python: '__kern_number_negate($0)',
|
|
15
|
+
},
|
|
16
|
+
fixtures: [
|
|
17
|
+
{ args: [3], returns: -3 },
|
|
18
|
+
{ args: [-3], returns: 3 },
|
|
19
|
+
{ args: ['3'], throws: { code: 'strict-type', message: 'Number.negate expects Number.' } },
|
|
20
|
+
],
|
|
21
|
+
review: {
|
|
22
|
+
summary: 'Strict numeric negation over finite KERN Numbers.',
|
|
23
|
+
graph: ['Number', 'strict', 'portable'],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'Number.add',
|
|
28
|
+
kind: 'method',
|
|
29
|
+
args: ['Number', 'Number'],
|
|
30
|
+
returns: 'Number',
|
|
31
|
+
lowers: {
|
|
32
|
+
kern: 'Number.add($0, $1)',
|
|
33
|
+
ts: '__kernNumberAdd($0, $1)',
|
|
34
|
+
python: '__kern_number_add($0, $1)',
|
|
35
|
+
},
|
|
36
|
+
fixtures: [
|
|
37
|
+
{ args: [2, 3], returns: 5 },
|
|
38
|
+
{ args: [-2, 3], returns: 1 },
|
|
39
|
+
{ args: [2, '3'], throws: { code: 'strict-type', message: 'Number.add expects Number, Number.' } },
|
|
40
|
+
],
|
|
41
|
+
review: {
|
|
42
|
+
summary: 'Strict numeric addition over finite KERN Numbers.',
|
|
43
|
+
graph: ['Number', 'strict', 'portable'],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'Number.subtract',
|
|
48
|
+
kind: 'method',
|
|
49
|
+
args: ['Number', 'Number'],
|
|
50
|
+
returns: 'Number',
|
|
51
|
+
lowers: {
|
|
52
|
+
kern: 'Number.subtract($0, $1)',
|
|
53
|
+
ts: '__kernNumberSubtract($0, $1)',
|
|
54
|
+
python: '__kern_number_subtract($0, $1)',
|
|
55
|
+
},
|
|
56
|
+
fixtures: [
|
|
57
|
+
{ args: [5, 3], returns: 2 },
|
|
58
|
+
{ args: [3, 5], returns: -2 },
|
|
59
|
+
{ args: [5, false], throws: { code: 'strict-type', message: 'Number.subtract expects Number, Number.' } },
|
|
60
|
+
],
|
|
61
|
+
review: {
|
|
62
|
+
summary: 'Strict numeric subtraction over finite KERN Numbers.',
|
|
63
|
+
graph: ['Number', 'strict', 'portable'],
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: 'Number.multiply',
|
|
68
|
+
kind: 'method',
|
|
69
|
+
args: ['Number', 'Number'],
|
|
70
|
+
returns: 'Number',
|
|
71
|
+
lowers: {
|
|
72
|
+
kern: 'Number.multiply($0, $1)',
|
|
73
|
+
ts: '__kernNumberMultiply($0, $1)',
|
|
74
|
+
python: '__kern_number_multiply($0, $1)',
|
|
75
|
+
},
|
|
76
|
+
fixtures: [
|
|
77
|
+
{ args: [3, 4], returns: 12 },
|
|
78
|
+
{ args: [-3, 4], returns: -12 },
|
|
79
|
+
{ args: [3, null], throws: { code: 'strict-type', message: 'Number.multiply expects Number, Number.' } },
|
|
80
|
+
],
|
|
81
|
+
review: {
|
|
82
|
+
summary: 'Strict numeric multiplication over finite KERN Numbers.',
|
|
83
|
+
graph: ['Number', 'strict', 'portable'],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 'Number.divide',
|
|
88
|
+
kind: 'method',
|
|
89
|
+
args: ['Number', 'Number'],
|
|
90
|
+
returns: 'Number',
|
|
91
|
+
lowers: {
|
|
92
|
+
kern: 'Number.divide($0, $1)',
|
|
93
|
+
ts: '__kernNumberDivide($0, $1)',
|
|
94
|
+
python: '__kern_number_divide($0, $1)',
|
|
95
|
+
},
|
|
96
|
+
fixtures: [
|
|
97
|
+
{ args: [6, 2], returns: 3 },
|
|
98
|
+
{ args: [5, 2], returns: 2.5 },
|
|
99
|
+
{ args: [1, 0], throws: { code: 'division-by-zero', message: 'Number.divide division by zero.' } },
|
|
100
|
+
{ args: [6, '2'], throws: { code: 'strict-type', message: 'Number.divide expects Number, Number.' } },
|
|
101
|
+
],
|
|
102
|
+
review: {
|
|
103
|
+
summary: 'Strict numeric division over finite KERN Numbers; zero divisor is a contract error.',
|
|
104
|
+
graph: ['Number', 'strict', 'portable'],
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 'Number.remainder',
|
|
109
|
+
kind: 'method',
|
|
110
|
+
args: ['Number', 'Number'],
|
|
111
|
+
returns: 'Number',
|
|
112
|
+
lowers: {
|
|
113
|
+
kern: 'Number.remainder($0, $1)',
|
|
114
|
+
ts: '__kernNumberRemainder($0, $1)',
|
|
115
|
+
python: '__kern_number_remainder($0, $1)',
|
|
116
|
+
},
|
|
117
|
+
fixtures: [
|
|
118
|
+
{ args: [5, 2], returns: 1 },
|
|
119
|
+
{ args: [-5, 2], returns: -1 },
|
|
120
|
+
{ args: [5, -2], returns: 1 },
|
|
121
|
+
{ args: [1, 0], throws: { code: 'division-by-zero', message: 'Number.remainder division by zero.' } },
|
|
122
|
+
{ args: [5, '2'], throws: { code: 'strict-type', message: 'Number.remainder expects Number, Number.' } },
|
|
123
|
+
],
|
|
124
|
+
review: {
|
|
125
|
+
summary: 'Strict numeric remainder using KERN dividend-sign semantics; zero divisor is a contract error.',
|
|
126
|
+
graph: ['Number', 'strict', 'portable'],
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: 'Number.lessThan',
|
|
131
|
+
kind: 'method',
|
|
132
|
+
args: ['Number', 'Number'],
|
|
133
|
+
returns: 'Boolean',
|
|
134
|
+
lowers: {
|
|
135
|
+
kern: 'Number.lessThan($0, $1)',
|
|
136
|
+
ts: '__kernNumberLessThan($0, $1)',
|
|
137
|
+
python: '__kern_number_less_than($0, $1)',
|
|
138
|
+
},
|
|
139
|
+
fixtures: [
|
|
140
|
+
{ args: [2, 3], returns: true },
|
|
141
|
+
{ args: [3, 2], returns: false },
|
|
142
|
+
{ args: [2, '3'], throws: { code: 'strict-type', message: 'Number.lessThan expects Number, Number.' } },
|
|
143
|
+
],
|
|
144
|
+
review: {
|
|
145
|
+
summary: 'Strict numeric less-than comparison.',
|
|
146
|
+
graph: ['Number', 'Boolean', 'strict', 'portable'],
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: 'Number.lessThanOrEqual',
|
|
151
|
+
kind: 'method',
|
|
152
|
+
args: ['Number', 'Number'],
|
|
153
|
+
returns: 'Boolean',
|
|
154
|
+
lowers: {
|
|
155
|
+
kern: 'Number.lessThanOrEqual($0, $1)',
|
|
156
|
+
ts: '__kernNumberLessThanOrEqual($0, $1)',
|
|
157
|
+
python: '__kern_number_less_than_or_equal($0, $1)',
|
|
158
|
+
},
|
|
159
|
+
fixtures: [
|
|
160
|
+
{ args: [2, 2], returns: true },
|
|
161
|
+
{ args: [3, 2], returns: false },
|
|
162
|
+
{ args: [2, null], throws: { code: 'strict-type', message: 'Number.lessThanOrEqual expects Number, Number.' } },
|
|
163
|
+
],
|
|
164
|
+
review: {
|
|
165
|
+
summary: 'Strict numeric less-than-or-equal comparison.',
|
|
166
|
+
graph: ['Number', 'Boolean', 'strict', 'portable'],
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
id: 'Number.greaterThan',
|
|
171
|
+
kind: 'method',
|
|
172
|
+
args: ['Number', 'Number'],
|
|
173
|
+
returns: 'Boolean',
|
|
174
|
+
lowers: {
|
|
175
|
+
kern: 'Number.greaterThan($0, $1)',
|
|
176
|
+
ts: '__kernNumberGreaterThan($0, $1)',
|
|
177
|
+
python: '__kern_number_greater_than($0, $1)',
|
|
178
|
+
},
|
|
179
|
+
fixtures: [
|
|
180
|
+
{ args: [3, 2], returns: true },
|
|
181
|
+
{ args: [2, 3], returns: false },
|
|
182
|
+
{ args: [3, true], throws: { code: 'strict-type', message: 'Number.greaterThan expects Number, Number.' } },
|
|
183
|
+
],
|
|
184
|
+
review: {
|
|
185
|
+
summary: 'Strict numeric greater-than comparison.',
|
|
186
|
+
graph: ['Number', 'Boolean', 'strict', 'portable'],
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
id: 'Number.greaterThanOrEqual',
|
|
191
|
+
kind: 'method',
|
|
192
|
+
args: ['Number', 'Number'],
|
|
193
|
+
returns: 'Boolean',
|
|
194
|
+
lowers: {
|
|
195
|
+
kern: 'Number.greaterThanOrEqual($0, $1)',
|
|
196
|
+
ts: '__kernNumberGreaterThanOrEqual($0, $1)',
|
|
197
|
+
python: '__kern_number_greater_than_or_equal($0, $1)',
|
|
198
|
+
},
|
|
199
|
+
fixtures: [
|
|
200
|
+
{ args: [3, 3], returns: true },
|
|
201
|
+
{ args: [2, 3], returns: false },
|
|
202
|
+
{
|
|
203
|
+
args: [3, '3'],
|
|
204
|
+
throws: { code: 'strict-type', message: 'Number.greaterThanOrEqual expects Number, Number.' },
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
review: {
|
|
208
|
+
summary: 'Strict numeric greater-than-or-equal comparison.',
|
|
209
|
+
graph: ['Number', 'Boolean', 'strict', 'portable'],
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/core-contracts/number.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const RECORD_CONTRACT: {
|
|
2
|
+
readonly name: "Record";
|
|
3
|
+
readonly kind: "record";
|
|
4
|
+
readonly strict: true;
|
|
5
|
+
readonly operations: readonly [{
|
|
6
|
+
readonly id: "Record.get";
|
|
7
|
+
readonly kind: "method";
|
|
8
|
+
readonly args: readonly ["Record", "String"];
|
|
9
|
+
readonly returns: readonly ["String", "Boolean", "Number", "List", "Record", "Function", "Null", "Undefined"];
|
|
10
|
+
readonly lowers: {
|
|
11
|
+
readonly kern: "Record.get($0, $1)";
|
|
12
|
+
readonly ts: "__kernRecordGet($0, $1)";
|
|
13
|
+
readonly python: "__kern_record_get($0, $1)";
|
|
14
|
+
};
|
|
15
|
+
readonly fixtures: readonly [{
|
|
16
|
+
readonly args: readonly [{
|
|
17
|
+
readonly x: 1;
|
|
18
|
+
}, "x"];
|
|
19
|
+
readonly returns: 1;
|
|
20
|
+
}, {
|
|
21
|
+
readonly args: readonly [{
|
|
22
|
+
readonly x: 1;
|
|
23
|
+
}, "y"];
|
|
24
|
+
readonly returns: {
|
|
25
|
+
readonly __kernFixture: "Undefined";
|
|
26
|
+
};
|
|
27
|
+
}, {
|
|
28
|
+
readonly args: readonly [{
|
|
29
|
+
readonly x: {
|
|
30
|
+
readonly __kernFixture: "Undefined";
|
|
31
|
+
};
|
|
32
|
+
}, "x"];
|
|
33
|
+
readonly returns: {
|
|
34
|
+
readonly __kernFixture: "Undefined";
|
|
35
|
+
};
|
|
36
|
+
}, {
|
|
37
|
+
readonly args: readonly [{}, "toString"];
|
|
38
|
+
readonly returns: {
|
|
39
|
+
readonly __kernFixture: "Undefined";
|
|
40
|
+
};
|
|
41
|
+
}, {
|
|
42
|
+
readonly args: readonly [{}, ""];
|
|
43
|
+
readonly returns: {
|
|
44
|
+
readonly __kernFixture: "Undefined";
|
|
45
|
+
};
|
|
46
|
+
}, {
|
|
47
|
+
readonly args: readonly [{
|
|
48
|
+
readonly x: 1;
|
|
49
|
+
}, 0];
|
|
50
|
+
readonly throws: {
|
|
51
|
+
readonly code: "strict-type";
|
|
52
|
+
readonly message: "Record.get expects Record, String.";
|
|
53
|
+
};
|
|
54
|
+
}];
|
|
55
|
+
readonly review: {
|
|
56
|
+
readonly summary: "Strict own-key record lookup; missing keys return Undefined.";
|
|
57
|
+
readonly graph: readonly ["Record", "String", "Undefined", "strict", "portable"];
|
|
58
|
+
};
|
|
59
|
+
}];
|
|
60
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CORE_FIXTURE_UNDEFINED } from './schema.js';
|
|
2
|
+
export const RECORD_CONTRACT = {
|
|
3
|
+
name: 'Record',
|
|
4
|
+
kind: 'record',
|
|
5
|
+
strict: true,
|
|
6
|
+
operations: [
|
|
7
|
+
{
|
|
8
|
+
id: 'Record.get',
|
|
9
|
+
kind: 'method',
|
|
10
|
+
args: ['Record', 'String'],
|
|
11
|
+
returns: ['String', 'Boolean', 'Number', 'List', 'Record', 'Function', 'Null', 'Undefined'],
|
|
12
|
+
lowers: {
|
|
13
|
+
kern: 'Record.get($0, $1)',
|
|
14
|
+
ts: '__kernRecordGet($0, $1)',
|
|
15
|
+
python: '__kern_record_get($0, $1)',
|
|
16
|
+
},
|
|
17
|
+
fixtures: [
|
|
18
|
+
{ args: [{ x: 1 }, 'x'], returns: 1 },
|
|
19
|
+
{ args: [{ x: 1 }, 'y'], returns: CORE_FIXTURE_UNDEFINED },
|
|
20
|
+
{ args: [{ x: CORE_FIXTURE_UNDEFINED }, 'x'], returns: CORE_FIXTURE_UNDEFINED },
|
|
21
|
+
{ args: [{}, 'toString'], returns: CORE_FIXTURE_UNDEFINED },
|
|
22
|
+
{ args: [{}, ''], returns: CORE_FIXTURE_UNDEFINED },
|
|
23
|
+
{ args: [{ x: 1 }, 0], throws: { code: 'strict-type', message: 'Record.get expects Record, String.' } },
|
|
24
|
+
],
|
|
25
|
+
review: {
|
|
26
|
+
summary: 'Strict own-key record lookup; missing keys return Undefined.',
|
|
27
|
+
graph: ['Record', 'String', 'Undefined', 'strict', 'portable'],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/core-contracts/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE;QACV;YACE,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC1B,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC;YAC3F,MAAM,EAAE;gBACN,IAAI,EAAE,oBAAoB;gBAC1B,EAAE,EAAE,yBAAyB;gBAC7B,MAAM,EAAE,2BAA2B;aACpC;YACD,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;gBACrC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBAC1D,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBAC/E,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBAC3D,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE;gBACnD,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,oCAAoC,EAAE,EAAE;aACxG;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,8DAA8D;gBACvE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;aAC/D;SACF;KACF;CACkC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export declare const CORE_TYPE_NAMES: readonly ["String", "Boolean", "Number", "List", "Record", "Function", "Null", "Undefined"];
|
|
2
|
+
export type CoreTypeName = (typeof CORE_TYPE_NAMES)[number];
|
|
3
|
+
export type CoreTypeKind = 'primitive' | 'collection' | 'callable' | 'record' | 'nullish';
|
|
4
|
+
export type CoreOperationKind = 'method' | 'property' | 'operator' | 'constructor' | 'coercion';
|
|
5
|
+
export type CoreLowerings = {
|
|
6
|
+
/**
|
|
7
|
+
* Target lowerings are semantic helper calls, not raw host snippets.
|
|
8
|
+
* Each helper must enforce the same strict argument and return contract as
|
|
9
|
+
* evaluateCoreContractOperation before using host operations internally.
|
|
10
|
+
*/
|
|
11
|
+
readonly kern?: string;
|
|
12
|
+
readonly ts?: string;
|
|
13
|
+
readonly python?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const CORE_FIXTURE_UNDEFINED: {
|
|
16
|
+
readonly __kernFixture: "Undefined";
|
|
17
|
+
};
|
|
18
|
+
export declare const CORE_FIXTURE_FUNCTION: {
|
|
19
|
+
readonly __kernFixture: "Function";
|
|
20
|
+
};
|
|
21
|
+
export declare function isCoreFixtureUndefined(value: unknown): value is typeof CORE_FIXTURE_UNDEFINED;
|
|
22
|
+
export declare function isCoreFixtureFunction(value: unknown): value is typeof CORE_FIXTURE_FUNCTION;
|
|
23
|
+
export type CoreFixtureValue = string | number | boolean | null | typeof CORE_FIXTURE_UNDEFINED | typeof CORE_FIXTURE_FUNCTION | readonly CoreFixtureValue[] | {
|
|
24
|
+
readonly [key: string]: CoreFixtureValue;
|
|
25
|
+
};
|
|
26
|
+
export type CoreFixtureError = {
|
|
27
|
+
readonly code: 'strict-type' | 'division-by-zero';
|
|
28
|
+
readonly message: string;
|
|
29
|
+
};
|
|
30
|
+
export type CoreFixture = {
|
|
31
|
+
readonly args: readonly CoreFixtureValue[];
|
|
32
|
+
readonly returns: CoreFixtureValue;
|
|
33
|
+
} | {
|
|
34
|
+
readonly args: readonly CoreFixtureValue[];
|
|
35
|
+
readonly throws: CoreFixtureError;
|
|
36
|
+
};
|
|
37
|
+
export type CoreOperationReturns = CoreTypeName | readonly CoreTypeName[];
|
|
38
|
+
export type CoreOperation = {
|
|
39
|
+
readonly id: string;
|
|
40
|
+
readonly kind: CoreOperationKind;
|
|
41
|
+
readonly args: readonly CoreTypeName[];
|
|
42
|
+
readonly returns: CoreOperationReturns;
|
|
43
|
+
readonly lowers?: CoreLowerings;
|
|
44
|
+
readonly fixtures: readonly CoreFixture[];
|
|
45
|
+
readonly review: {
|
|
46
|
+
readonly summary: string;
|
|
47
|
+
readonly graph: readonly string[];
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export type CoreTypeContract = {
|
|
51
|
+
readonly name: CoreTypeName;
|
|
52
|
+
readonly kind: CoreTypeKind;
|
|
53
|
+
readonly strict: true;
|
|
54
|
+
readonly operations: readonly CoreOperation[];
|
|
55
|
+
};
|
|
56
|
+
export type CoreTypeContractRegistry = {
|
|
57
|
+
readonly schemaVersion: 1;
|
|
58
|
+
readonly types: {
|
|
59
|
+
readonly [Name in CoreTypeName]: CoreTypeContract & {
|
|
60
|
+
readonly name: Name;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export type CoreGraphEdge = {
|
|
65
|
+
readonly from: string;
|
|
66
|
+
readonly relation: string;
|
|
67
|
+
readonly to: string;
|
|
68
|
+
readonly operation?: string;
|
|
69
|
+
readonly index?: number;
|
|
70
|
+
};
|
|
71
|
+
export declare function contractToGraphEdges(contract: CoreTypeContract): CoreGraphEdge[];
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export const CORE_TYPE_NAMES = [
|
|
2
|
+
'String',
|
|
3
|
+
'Boolean',
|
|
4
|
+
'Number',
|
|
5
|
+
'List',
|
|
6
|
+
'Record',
|
|
7
|
+
'Function',
|
|
8
|
+
'Null',
|
|
9
|
+
'Undefined',
|
|
10
|
+
];
|
|
11
|
+
// Fixture data reserves this exact record shape for Undefined so JSON fixtures
|
|
12
|
+
// can distinguish null from undefined without overloading result records.
|
|
13
|
+
export const CORE_FIXTURE_UNDEFINED = { __kernFixture: 'Undefined' };
|
|
14
|
+
export const CORE_FIXTURE_FUNCTION = { __kernFixture: 'Function' };
|
|
15
|
+
export function isCoreFixtureUndefined(value) {
|
|
16
|
+
return (typeof value === 'object' &&
|
|
17
|
+
value !== null &&
|
|
18
|
+
!Array.isArray(value) &&
|
|
19
|
+
Object.keys(value).length === 1 &&
|
|
20
|
+
value.__kernFixture === 'Undefined');
|
|
21
|
+
}
|
|
22
|
+
export function isCoreFixtureFunction(value) {
|
|
23
|
+
return (typeof value === 'object' &&
|
|
24
|
+
value !== null &&
|
|
25
|
+
!Array.isArray(value) &&
|
|
26
|
+
Object.keys(value).length === 1 &&
|
|
27
|
+
value.__kernFixture === 'Function');
|
|
28
|
+
}
|
|
29
|
+
export function contractToGraphEdges(contract) {
|
|
30
|
+
const edges = [];
|
|
31
|
+
for (const operation of contract.operations) {
|
|
32
|
+
if (!operation.id.startsWith(`${contract.name}.`)) {
|
|
33
|
+
throw new Error(`Core operation id ${operation.id} must be prefixed with ${contract.name}.`);
|
|
34
|
+
}
|
|
35
|
+
const methodName = operation.id.slice(contract.name.length + 1);
|
|
36
|
+
const explicitArgs = operation.args.slice(1).join(', ');
|
|
37
|
+
const operationRelation = `${methodName}(${explicitArgs})`;
|
|
38
|
+
edges.push({
|
|
39
|
+
from: contract.name,
|
|
40
|
+
relation: operationRelation,
|
|
41
|
+
to: formatReturnTypes(operation.returns),
|
|
42
|
+
operation: operation.id,
|
|
43
|
+
});
|
|
44
|
+
operation.args.forEach((arg, index) => {
|
|
45
|
+
edges.push({
|
|
46
|
+
from: operation.id,
|
|
47
|
+
relation: 'accepts',
|
|
48
|
+
to: arg,
|
|
49
|
+
operation: operation.id,
|
|
50
|
+
index,
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
for (const returnType of returnTypeNames(operation.returns)) {
|
|
54
|
+
edges.push({
|
|
55
|
+
from: operation.id,
|
|
56
|
+
relation: 'returns',
|
|
57
|
+
to: returnType,
|
|
58
|
+
operation: operation.id,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
for (const target of ['kern', 'ts', 'python']) {
|
|
62
|
+
const lowering = operation.lowers?.[target];
|
|
63
|
+
if (!lowering)
|
|
64
|
+
continue;
|
|
65
|
+
edges.push({
|
|
66
|
+
from: operation.id,
|
|
67
|
+
relation: `lowers.${target}`,
|
|
68
|
+
to: lowering,
|
|
69
|
+
operation: operation.id,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
operation.fixtures.forEach((_, index) => {
|
|
73
|
+
edges.push({
|
|
74
|
+
from: operation.id,
|
|
75
|
+
relation: 'fixture',
|
|
76
|
+
to: `${operation.id}.fixture.${index}`,
|
|
77
|
+
operation: operation.id,
|
|
78
|
+
index,
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
for (const tag of operation.review.graph) {
|
|
82
|
+
edges.push({
|
|
83
|
+
from: operation.id,
|
|
84
|
+
relation: 'tagged',
|
|
85
|
+
to: tag,
|
|
86
|
+
operation: operation.id,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return edges;
|
|
91
|
+
}
|
|
92
|
+
function returnTypeNames(returns) {
|
|
93
|
+
return typeof returns === 'string' ? [returns] : returns;
|
|
94
|
+
}
|
|
95
|
+
function formatReturnTypes(returns) {
|
|
96
|
+
return returnTypeNames(returns).join(' | ');
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core-contracts/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CoreFixtureValue, type CoreTypeName } from './schema.js';
|
|
2
|
+
export declare class CoreContractEvaluationError extends Error {
|
|
3
|
+
readonly code: 'strict-type' | 'division-by-zero' | 'unsupported-operation';
|
|
4
|
+
constructor(code: 'strict-type' | 'division-by-zero' | 'unsupported-operation', message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function coreFixtureValueType(value: CoreFixtureValue): CoreTypeName;
|
|
7
|
+
export declare function evaluateCoreContractOperation(operationId: string, args: readonly CoreFixtureValue[]): CoreFixtureValue;
|