@kernlang/core 3.1.5 → 3.1.7

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 (112) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +5 -2
  3. package/dist/codegen/data-layer.d.ts +12 -0
  4. package/dist/codegen/data-layer.js +291 -0
  5. package/dist/codegen/data-layer.js.map +1 -0
  6. package/dist/codegen/emitters.js +1 -4
  7. package/dist/codegen/emitters.js.map +1 -1
  8. package/dist/codegen/events.d.ts +9 -0
  9. package/dist/codegen/events.js +169 -0
  10. package/dist/codegen/events.js.map +1 -0
  11. package/dist/codegen/functions.d.ts +8 -0
  12. package/dist/codegen/functions.js +149 -0
  13. package/dist/codegen/functions.js.map +1 -0
  14. package/dist/codegen/ground-layer.d.ts +22 -0
  15. package/dist/codegen/ground-layer.js +321 -0
  16. package/dist/codegen/ground-layer.js.map +1 -0
  17. package/dist/codegen/helpers.d.ts +2 -0
  18. package/dist/codegen/helpers.js +19 -7
  19. package/dist/codegen/helpers.js.map +1 -1
  20. package/dist/codegen/machines.d.ts +9 -0
  21. package/dist/codegen/machines.js +129 -0
  22. package/dist/codegen/machines.js.map +1 -0
  23. package/dist/codegen/modules.d.ts +10 -0
  24. package/dist/codegen/modules.js +43 -0
  25. package/dist/codegen/modules.js.map +1 -0
  26. package/dist/codegen/screens.d.ts +29 -0
  27. package/dist/codegen/screens.js +202 -0
  28. package/dist/codegen/screens.js.map +1 -0
  29. package/dist/codegen/semantic-types.d.ts +14 -0
  30. package/dist/codegen/semantic-types.js +31 -0
  31. package/dist/codegen/semantic-types.js.map +1 -0
  32. package/dist/codegen/test-gen.d.ts +7 -0
  33. package/dist/codegen/test-gen.js +56 -0
  34. package/dist/codegen/test-gen.js.map +1 -0
  35. package/dist/codegen/type-system.d.ts +11 -0
  36. package/dist/codegen/type-system.js +171 -0
  37. package/dist/codegen/type-system.js.map +1 -0
  38. package/dist/codegen-core.d.ts +30 -36
  39. package/dist/codegen-core.js +258 -1459
  40. package/dist/codegen-core.js.map +1 -1
  41. package/dist/concepts.js.map +1 -1
  42. package/dist/config.d.ts +20 -1
  43. package/dist/config.js +36 -3
  44. package/dist/config.js.map +1 -1
  45. package/dist/coverage-gap.js +9 -5
  46. package/dist/coverage-gap.js.map +1 -1
  47. package/dist/decompiler.d.ts +10 -1
  48. package/dist/decompiler.js +21 -4
  49. package/dist/decompiler.js.map +1 -1
  50. package/dist/errors.d.ts +5 -0
  51. package/dist/errors.js +11 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/index.d.ts +33 -28
  54. package/dist/index.js +40 -35
  55. package/dist/index.js.map +1 -1
  56. package/dist/node-props.d.ts +255 -0
  57. package/dist/node-props.js +35 -0
  58. package/dist/node-props.js.map +1 -0
  59. package/dist/parser-core.d.ts +5 -0
  60. package/dist/parser-core.js +364 -0
  61. package/dist/parser-core.js.map +1 -0
  62. package/dist/parser-diagnostics.d.ts +14 -0
  63. package/dist/parser-diagnostics.js +32 -0
  64. package/dist/parser-diagnostics.js.map +1 -0
  65. package/dist/parser-keywords.d.ts +5 -0
  66. package/dist/parser-keywords.js +203 -0
  67. package/dist/parser-keywords.js.map +1 -0
  68. package/dist/parser-style.d.ts +3 -0
  69. package/dist/parser-style.js +73 -0
  70. package/dist/parser-style.js.map +1 -0
  71. package/dist/parser-token-stream.d.ts +27 -0
  72. package/dist/parser-token-stream.js +81 -0
  73. package/dist/parser-token-stream.js.map +1 -0
  74. package/dist/parser-tokenizer.d.ts +11 -0
  75. package/dist/parser-tokenizer.js +188 -0
  76. package/dist/parser-tokenizer.js.map +1 -0
  77. package/dist/parser.d.ts +61 -14
  78. package/dist/parser.js +65 -865
  79. package/dist/parser.js.map +1 -1
  80. package/dist/scanner.js +85 -25
  81. package/dist/scanner.js.map +1 -1
  82. package/dist/schema.d.ts +7 -2
  83. package/dist/schema.js +7 -2
  84. package/dist/schema.js.map +1 -1
  85. package/dist/source-map.d.ts +27 -0
  86. package/dist/source-map.js +82 -0
  87. package/dist/source-map.js.map +1 -0
  88. package/dist/spec.d.ts +1 -1
  89. package/dist/spec.js +197 -55
  90. package/dist/spec.js.map +1 -1
  91. package/dist/styles-react.js +1 -1
  92. package/dist/styles-react.js.map +1 -1
  93. package/dist/styles-tailwind.d.ts +10 -0
  94. package/dist/styles-tailwind.js +62 -15
  95. package/dist/styles-tailwind.js.map +1 -1
  96. package/dist/template-catalog.js +1 -1
  97. package/dist/template-catalog.js.map +1 -1
  98. package/dist/template-engine.d.ts +11 -6
  99. package/dist/template-engine.js +20 -12
  100. package/dist/template-engine.js.map +1 -1
  101. package/dist/types.d.ts +8 -3
  102. package/dist/utils.d.ts +21 -1
  103. package/dist/utils.js +29 -5
  104. package/dist/utils.js.map +1 -1
  105. package/dist/version-adapters.js +1 -2
  106. package/dist/version-adapters.js.map +1 -1
  107. package/dist/version-detect.js +3 -3
  108. package/dist/version-detect.js.map +1 -1
  109. package/dist/walk.d.ts +40 -0
  110. package/dist/walk.js +111 -0
  111. package/dist/walk.js.map +1 -0
  112. package/package.json +2 -2
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Function & Error Generators — fn, error.
3
+ *
4
+ * Extracted from codegen-core.ts for modular codegen architecture.
5
+ */
6
+ import { propsOf } from '../node-props.js';
7
+ import { emitIdentifier, emitTypeAnnotation } from './emitters.js';
8
+ import { dedent, exportPrefix, getChildren, getFirstChild, getProps, handlerCode, parseParamList } from './helpers.js';
9
+ const p = getProps;
10
+ const kids = getChildren;
11
+ const firstChild = getFirstChild;
12
+ // ── Function ─────────────────────────────────────────────────────────────
13
+ export function generateFunction(node) {
14
+ const props = propsOf(node);
15
+ const name = emitIdentifier(props.name, 'unknownFn', node);
16
+ const params = props.params || '';
17
+ const returns = props.returns;
18
+ const isAsync = props.async === 'true' || props.async === true;
19
+ const isStream = props.stream === 'true' || props.stream === true;
20
+ const isGenerator = props.generator === 'true' || props.generator === true;
21
+ const exp = exportPrefix(node);
22
+ const lines = [];
23
+ // Parse params: "action:PlanAction,ws:WorkspaceSnapshot,spread:number=8"
24
+ // → "action: PlanAction, ws: WorkspaceSnapshot, spread: number = 8"
25
+ const paramList = params ? parseParamList(params) : '';
26
+ // stream=true → async generator function
27
+ if (isStream) {
28
+ const yieldType = emitTypeAnnotation(returns, 'unknown', node);
29
+ const retClause = `: AsyncGenerator<${yieldType}>`;
30
+ const code = handlerCode(node);
31
+ lines.push(`${exp}async function* ${name}(${paramList})${retClause} {`);
32
+ if (code) {
33
+ for (const line of code.split('\n')) {
34
+ lines.push(` ${line}`);
35
+ }
36
+ }
37
+ lines.push('}');
38
+ return lines;
39
+ }
40
+ const retClause = returns ? `: ${emitTypeAnnotation(returns, 'unknown', node)}` : '';
41
+ const asyncKw = isAsync ? 'async ' : '';
42
+ const code = handlerCode(node);
43
+ // Gap 3: signal + cleanup support for async functions
44
+ const signalNode = firstChild(node, 'signal');
45
+ const cleanupNode = firstChild(node, 'cleanup');
46
+ const hasSignal = !!signalNode;
47
+ const hasCleanup = !!cleanupNode;
48
+ const genStar = isGenerator ? '* ' : '';
49
+ lines.push(`${exp}${asyncKw}function${genStar ? '* ' : ' '}${name}(${paramList})${retClause} {`);
50
+ // Signal → AbortController setup
51
+ if (hasSignal) {
52
+ const signalName = emitIdentifier(p(signalNode).name, 'abort', signalNode);
53
+ lines.push(` const ${signalName} = new AbortController();`);
54
+ }
55
+ // Wrap body in try/finally if cleanup exists
56
+ if (hasCleanup) {
57
+ lines.push(' try {');
58
+ if (code) {
59
+ for (const line of code.split('\n')) {
60
+ lines.push(` ${line}`);
61
+ }
62
+ }
63
+ lines.push(' } finally {');
64
+ const cleanupCode = p(cleanupNode).code || '';
65
+ if (cleanupCode) {
66
+ const dedented = dedent(cleanupCode);
67
+ for (const line of dedented.split('\n')) {
68
+ lines.push(` ${line}`);
69
+ }
70
+ }
71
+ lines.push(' }');
72
+ }
73
+ else if (code) {
74
+ for (const line of code.split('\n')) {
75
+ lines.push(` ${line}`);
76
+ }
77
+ }
78
+ lines.push('}');
79
+ return lines;
80
+ }
81
+ // ── Error Class ──────────────────────────────────────────────────────────
82
+ export function generateError(node) {
83
+ const props = propsOf(node);
84
+ const name = emitIdentifier(props.name, 'UnknownError', node);
85
+ const ext = emitIdentifier(props.extends, 'Error', node);
86
+ const message = props.message;
87
+ const exp = exportPrefix(node);
88
+ const fields = kids(node, 'field');
89
+ const lines = [];
90
+ lines.push(`${exp}class ${name} extends ${ext} {`);
91
+ const code = handlerCode(node);
92
+ if (fields.length > 0) {
93
+ lines.push(` constructor(`);
94
+ // Check if first field is 'message' — special case: pass to super
95
+ const hasMessageParam = propsOf(fields[0]).name === 'message';
96
+ for (const field of fields) {
97
+ const fp = propsOf(field);
98
+ const opt = fp.optional === 'true' || fp.optional === true ? '?' : '';
99
+ const isMessage = fp.name === 'message';
100
+ // 'message' param is not readonly — it's passed to super
101
+ const fName = emitIdentifier(fp.name, 'field', field);
102
+ const fType = emitTypeAnnotation(fp.type, 'unknown', field);
103
+ if (isMessage) {
104
+ lines.push(` ${fName}${opt}: ${fType},`);
105
+ }
106
+ else {
107
+ lines.push(` public readonly ${fName}${opt}: ${fType},`);
108
+ }
109
+ }
110
+ lines.push(` ) {`);
111
+ if (code) {
112
+ // Custom handler body — replaces auto-generated constructor logic
113
+ for (const line of code.split('\n')) {
114
+ lines.push(` ${line}`);
115
+ }
116
+ }
117
+ else if (message) {
118
+ // Check if message references array fields that need formatting
119
+ const arrayFields = fields.filter((f) => {
120
+ const ft = propsOf(f).type || '';
121
+ return ft.includes('[]') || ft.includes('string |') || ft.includes('| string');
122
+ });
123
+ for (const f of arrayFields) {
124
+ const fn = propsOf(f).name || 'field';
125
+ lines.push(` const ${fn}Str = Array.isArray(${fn}) ? ${fn}.join(' | ') : ${fn};`);
126
+ }
127
+ lines.push(` super(\`${message}\`);`);
128
+ lines.push(` this.name = '${name}';`);
129
+ }
130
+ else if (hasMessageParam) {
131
+ lines.push(` super(message);`);
132
+ lines.push(` this.name = '${name}';`);
133
+ }
134
+ else {
135
+ lines.push(` super();`);
136
+ lines.push(` this.name = '${name}';`);
137
+ }
138
+ lines.push(` }`);
139
+ }
140
+ else {
141
+ lines.push(` constructor(message: string) {`);
142
+ lines.push(` super(message);`);
143
+ lines.push(` this.name = '${name}';`);
144
+ lines.push(` }`);
145
+ }
146
+ lines.push('}');
147
+ return lines;
148
+ }
149
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/codegen/functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Ground Layer Generators — derive, transform, action, guard, assume, invariant,
3
+ * collect, resolve, expect, recover, pattern, apply.
4
+ *
5
+ * NOTE: generateEach and generateBranch remain in codegen-core.ts because they
6
+ * call generateCoreNode recursively (avoiding circular imports).
7
+ *
8
+ * Extracted from codegen-core.ts for modular codegen architecture.
9
+ */
10
+ import type { IRNode } from '../types.js';
11
+ export declare function generateDerive(node: IRNode): string[];
12
+ export declare function generateTransform(node: IRNode): string[];
13
+ export declare function generateAction(node: IRNode): string[];
14
+ export declare function generateGuard(node: IRNode): string[];
15
+ export declare function generateAssume(node: IRNode): string[];
16
+ export declare function generateInvariant(node: IRNode): string[];
17
+ export declare function generateCollect(node: IRNode): string[];
18
+ export declare function generateResolve(node: IRNode): string[];
19
+ export declare function generateExpect(node: IRNode): string[];
20
+ export declare function generateRecover(node: IRNode): string[];
21
+ export declare function generatePattern(_node: IRNode): string[];
22
+ export declare function generateApply(node: IRNode, _depth?: number): string[];
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Ground Layer Generators — derive, transform, action, guard, assume, invariant,
3
+ * collect, resolve, expect, recover, pattern, apply.
4
+ *
5
+ * NOTE: generateEach and generateBranch remain in codegen-core.ts because they
6
+ * call generateCoreNode recursively (avoiding circular imports).
7
+ *
8
+ * Extracted from codegen-core.ts for modular codegen architecture.
9
+ */
10
+ import { KernCodegenError } from '../errors.js';
11
+ import { propsOf } from '../node-props.js';
12
+ import { expandTemplateNode, isTemplateNode } from '../template-engine.js';
13
+ import { emitIdentifier, emitTypeAnnotation } from './emitters.js';
14
+ import { capitalize, emitLowConfidenceTodo, emitReasonAnnotations, exportPrefix, getChildren, getFirstChild, getProps, handlerCode, parseParamList, } from './helpers.js';
15
+ const p = getProps;
16
+ const kids = getChildren;
17
+ const firstChild = getFirstChild;
18
+ // ── Ground Layer: derive ─────────────────────────────────────────────────
19
+ export function generateDerive(node) {
20
+ const annotations = emitReasonAnnotations(node);
21
+ const props = propsOf(node);
22
+ const conf = props.confidence;
23
+ const todo = emitLowConfidenceTodo(node, conf);
24
+ const name = emitIdentifier(props.name, 'derived', node);
25
+ // expr is by-design raw code (escape hatch)
26
+ const expr = props.expr;
27
+ const constType = props.type;
28
+ const exp = exportPrefix(node);
29
+ const typeAnnotation = constType ? `: ${emitTypeAnnotation(constType, 'unknown', node)}` : '';
30
+ return [...todo, ...annotations, `${exp}const ${name}${typeAnnotation} = ${expr};`];
31
+ }
32
+ // ── Ground Layer: transform ──────────────────────────────────────────────
33
+ export function generateTransform(node) {
34
+ const annotations = emitReasonAnnotations(node);
35
+ const props = propsOf(node);
36
+ const conf = props.confidence;
37
+ const todo = emitLowConfidenceTodo(node, conf);
38
+ const name = emitIdentifier(props.name, 'transform', node);
39
+ // target and via are by-design raw code (escape hatches)
40
+ const target = props.target;
41
+ const via = props.via;
42
+ const constType = props.type;
43
+ const exp = exportPrefix(node);
44
+ const code = handlerCode(node);
45
+ const typeAnnotation = constType ? `: ${emitTypeAnnotation(constType, 'unknown', node)}` : '';
46
+ if (code) {
47
+ // Handler block form — generate a function
48
+ const lines = [...todo, ...annotations];
49
+ lines.push(`${exp}function ${name}(state: unknown)${typeAnnotation} {`);
50
+ for (const line of code.split('\n')) {
51
+ lines.push(` ${line}`);
52
+ }
53
+ lines.push('}');
54
+ return lines;
55
+ }
56
+ if (target && via) {
57
+ return [
58
+ ...todo,
59
+ ...annotations,
60
+ `${exp}const ${name}${typeAnnotation} = ${via.replace(/\(/, `(${target}, `).replace(/, \)/, ')')};`,
61
+ ];
62
+ }
63
+ if (via) {
64
+ return [...todo, ...annotations, `${exp}const ${name}${typeAnnotation} = ${via};`];
65
+ }
66
+ return [...todo, ...annotations, `${exp}const ${name}${typeAnnotation};`];
67
+ }
68
+ // ── Ground Layer: action ─────────────────────────────────────────────────
69
+ export function generateAction(node) {
70
+ const annotations = emitReasonAnnotations(node);
71
+ const props = propsOf(node);
72
+ const conf = props.confidence;
73
+ const todo = emitLowConfidenceTodo(node, conf);
74
+ const name = emitIdentifier(props.name, 'action', node);
75
+ const idempotent = props.idempotent === 'true' || props.idempotent === true;
76
+ const reversible = props.reversible === 'true' || props.reversible === true;
77
+ const params = props.params || '';
78
+ const returns = props.returns;
79
+ const exp = exportPrefix(node);
80
+ const code = handlerCode(node);
81
+ const lines = [...todo, ...annotations];
82
+ // JSDoc for action metadata
83
+ const metaParts = [];
84
+ if (idempotent)
85
+ metaParts.push('idempotent=true');
86
+ if (reversible)
87
+ metaParts.push('reversible=true');
88
+ if (metaParts.length > 0) {
89
+ lines.push(`/** @action ${metaParts.join(' ')} */`);
90
+ }
91
+ const paramList = params ? parseParamList(params) : '';
92
+ const retClause = returns ? `: Promise<${emitTypeAnnotation(returns, 'void', node)}>` : ': Promise<void>';
93
+ lines.push(`${exp}async function ${name}(${paramList})${retClause} {`);
94
+ if (code) {
95
+ for (const line of code.split('\n')) {
96
+ lines.push(` ${line}`);
97
+ }
98
+ }
99
+ lines.push('}');
100
+ return lines;
101
+ }
102
+ // ── Ground Layer: guard ──────────────────────────────────────────────────
103
+ export function generateGuard(node) {
104
+ const annotations = emitReasonAnnotations(node);
105
+ const props = propsOf(node);
106
+ const conf = props.confidence;
107
+ const todo = emitLowConfidenceTodo(node, conf);
108
+ const name = props.name || 'guard';
109
+ const expr = props.expr;
110
+ const elseCode = props.else;
111
+ const lines = [...todo, ...annotations];
112
+ if (elseCode && /^\d+$/.test(elseCode)) {
113
+ lines.push(`if (!(${expr})) { throw new HttpError(${elseCode}, 'Guard: ${name}'); }`);
114
+ }
115
+ else if (elseCode) {
116
+ lines.push(`if (!(${expr})) { ${elseCode}; }`);
117
+ }
118
+ else {
119
+ lines.push(`if (!(${expr})) { throw new Error('Guard failed: ${name}'); }`);
120
+ }
121
+ return lines;
122
+ }
123
+ // ── Ground Layer: assume ─────────────────────────────────────────────────
124
+ export function generateAssume(node) {
125
+ const annotations = emitReasonAnnotations(node);
126
+ const props = propsOf(node);
127
+ const conf = props.confidence;
128
+ const todo = emitLowConfidenceTodo(node, conf);
129
+ const expr = props.expr;
130
+ const scope = props.scope || 'request';
131
+ const evidence = props.evidence;
132
+ const fallback = props.fallback;
133
+ if (!evidence)
134
+ throw new KernCodegenError('assume requires evidence prop', node);
135
+ if (!fallback)
136
+ throw new KernCodegenError('assume requires fallback prop', node);
137
+ const lines = [...todo, ...annotations];
138
+ lines.push(`/** @assume ${expr} @scope ${scope} @evidence ${evidence} */`);
139
+ lines.push(`if (process.env.NODE_ENV !== 'production') {`);
140
+ lines.push(` if (!(${expr})) { ${fallback}; }`);
141
+ lines.push(`}`);
142
+ return lines;
143
+ }
144
+ // ── Ground Layer: invariant ──────────────────────────────────────────────
145
+ export function generateInvariant(node) {
146
+ const annotations = emitReasonAnnotations(node);
147
+ const props = propsOf(node);
148
+ const conf = props.confidence;
149
+ const todo = emitLowConfidenceTodo(node, conf);
150
+ const name = props.name || 'invariant';
151
+ const expr = props.expr;
152
+ const lines = [...todo, ...annotations];
153
+ lines.push(`console.assert(${expr}, 'Invariant: ${name}');`);
154
+ return lines;
155
+ }
156
+ // ── Ground Layer: collect ────────────────────────────────────────────────
157
+ export function generateCollect(node) {
158
+ const annotations = emitReasonAnnotations(node);
159
+ const props = propsOf(node);
160
+ const conf = props.confidence;
161
+ const todo = emitLowConfidenceTodo(node, conf);
162
+ const name = emitIdentifier(props.name, 'collected', node);
163
+ const from = props.from;
164
+ const where = props.where;
165
+ const limit = props.limit;
166
+ const order = props.order;
167
+ const exp = exportPrefix(node);
168
+ let chain = from;
169
+ if (where)
170
+ chain += `.filter(item => ${where})`;
171
+ if (order)
172
+ chain += `.sort((a, b) => ${order})`;
173
+ if (limit)
174
+ chain += `.slice(0, ${limit})`;
175
+ return [...todo, ...annotations, `${exp}const ${name} = ${chain};`];
176
+ }
177
+ // ── Ground Layer: resolve / candidate / discriminator ────────────────────
178
+ export function generateResolve(node) {
179
+ const annotations = emitReasonAnnotations(node);
180
+ const props = propsOf(node);
181
+ const conf = props.confidence;
182
+ const todo = emitLowConfidenceTodo(node, conf);
183
+ const name = emitIdentifier(props.name, 'resolver', node);
184
+ const candidates = kids(node, 'candidate');
185
+ const discriminator = firstChild(node, 'discriminator');
186
+ if (!discriminator)
187
+ throw new KernCodegenError('resolve requires discriminator', node);
188
+ const lines = [...todo, ...annotations];
189
+ const dp = p(discriminator);
190
+ const method = dp.method || 'select';
191
+ const metric = dp.metric || '';
192
+ // Candidate array
193
+ lines.push(`/** resolve: ${name} */`);
194
+ lines.push(`const _${name}_candidates = [`);
195
+ for (const c of candidates) {
196
+ const cp = p(c);
197
+ const cname = emitIdentifier(cp.name, 'candidate', c);
198
+ const code = handlerCode(c);
199
+ lines.push(` { name: '${cname}', fn: (signal: unknown) => { ${code.trim()} } },`);
200
+ }
201
+ lines.push(`];`);
202
+ lines.push('');
203
+ // Resolver function
204
+ const discCode = handlerCode(discriminator);
205
+ lines.push(`async function resolve${capitalize(name)}(signal: unknown): Promise<unknown> {`);
206
+ lines.push(` const candidates = _${name}_candidates;`);
207
+ lines.push(` // discriminator: ${method}(${metric})`);
208
+ if (discCode) {
209
+ for (const line of discCode.split('\n')) {
210
+ lines.push(` ${line}`);
211
+ }
212
+ }
213
+ lines.push(` return candidates[winnerIdx].fn(signal);`);
214
+ lines.push('}');
215
+ return lines;
216
+ }
217
+ // ── Ground Layer: expect ─────────────────────────────────────────────────
218
+ export function generateExpect(node) {
219
+ const annotations = emitReasonAnnotations(node);
220
+ const props = propsOf(node);
221
+ const conf = props.confidence;
222
+ const todo = emitLowConfidenceTodo(node, conf);
223
+ const name = props.name || 'expected';
224
+ const expr = props.expr;
225
+ const within = props.within;
226
+ const max = props.max;
227
+ const min = props.min;
228
+ const lines = [...todo, ...annotations];
229
+ lines.push(`if (process.env.NODE_ENV !== 'production') {`);
230
+ lines.push(` const _${name} = ${expr};`);
231
+ if (within) {
232
+ const [lo, hi] = within.split('..');
233
+ lines.push(` console.assert(_${name} >= ${lo} && _${name} <= ${hi}, 'Expected ${name} in [${lo}, ${hi}], got ' + _${name});`);
234
+ }
235
+ else if (min && max) {
236
+ lines.push(` console.assert(_${name} >= ${min} && _${name} <= ${max}, 'Expected ${name} in [${min}, ${max}], got ' + _${name});`);
237
+ }
238
+ else if (max) {
239
+ lines.push(` console.assert(_${name} <= ${max}, 'Expected ${name} <= ${max}, got ' + _${name});`);
240
+ }
241
+ else if (min) {
242
+ lines.push(` console.assert(_${name} >= ${min}, 'Expected ${name} >= ${min}, got ' + _${name});`);
243
+ }
244
+ else {
245
+ lines.push(` console.assert(_${name} != null, 'Expected ${name} to be defined');`);
246
+ }
247
+ lines.push('}');
248
+ return lines;
249
+ }
250
+ // ── Ground Layer: recover / strategy ─────────────────────────────────────
251
+ export function generateRecover(node) {
252
+ const annotations = emitReasonAnnotations(node);
253
+ const props = propsOf(node);
254
+ const conf = props.confidence;
255
+ const todo = emitLowConfidenceTodo(node, conf);
256
+ const name = emitIdentifier(props.name, 'recovery', node);
257
+ const strategies = kids(node, 'strategy');
258
+ const hasFallback = strategies.some((s) => p(s).name === 'fallback');
259
+ if (!hasFallback)
260
+ throw new KernCodegenError('recover requires a fallback strategy', node);
261
+ const lines = [...todo, ...annotations];
262
+ lines.push(`/** recover: ${name} */`);
263
+ lines.push(`async function ${name}WithRecovery<T>(fn: () => Promise<T>): Promise<T> {`);
264
+ for (const strategy of strategies) {
265
+ const sp = p(strategy);
266
+ const sname = emitIdentifier(sp.name, 'strategy', strategy);
267
+ const code = handlerCode(strategy);
268
+ if (sname === 'retry') {
269
+ const max = Number(sp.max) || 3;
270
+ const delay = Number(sp.delay) || 1000;
271
+ lines.push(` // strategy: retry (max=${max}, delay=${delay}ms)`);
272
+ lines.push(` for (let _attempt = 0; _attempt < ${max}; _attempt++) {`);
273
+ lines.push(` try { return await fn(); }`);
274
+ lines.push(` catch { if (_attempt < ${max - 1}) await new Promise(r => setTimeout(r, ${delay})); }`);
275
+ lines.push(` }`);
276
+ }
277
+ else if (sname === 'fallback') {
278
+ lines.push(` // strategy: fallback (terminal)`);
279
+ if (code) {
280
+ for (const line of code.split('\n')) {
281
+ lines.push(` ${line}`);
282
+ }
283
+ }
284
+ else {
285
+ lines.push(` throw new Error('All recovery strategies exhausted for ${name}');`);
286
+ }
287
+ }
288
+ else {
289
+ // compensate, degrade, or custom
290
+ lines.push(` // strategy: ${sname}`);
291
+ lines.push(` try {`);
292
+ if (code) {
293
+ for (const line of code.split('\n')) {
294
+ lines.push(` ${line}`);
295
+ }
296
+ }
297
+ lines.push(` } catch {}`);
298
+ }
299
+ }
300
+ lines.push('}');
301
+ return lines;
302
+ }
303
+ // ── Ground Layer: pattern / apply ────────────────────────────────────────
304
+ export function generatePattern(_node) {
305
+ // pattern nodes are registered as templates — no direct output
306
+ return [];
307
+ }
308
+ export function generateApply(node, _depth = 0) {
309
+ // apply nodes expand the referenced pattern
310
+ const props = propsOf(node);
311
+ const patternName = props.pattern;
312
+ if (!patternName)
313
+ return [];
314
+ // Delegate to template expansion — propagate depth to prevent infinite recursion
315
+ const syntheticNode = { ...node, type: patternName };
316
+ if (isTemplateNode(patternName)) {
317
+ return expandTemplateNode(syntheticNode, _depth + 1);
318
+ }
319
+ return [`// apply: pattern '${patternName}' not found`];
320
+ }
321
+ //# sourceMappingURL=ground-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground-layer.js","sourceRoot":"","sources":["../../src/codegen/ground-layer.ts"],"names":[],"mappings":"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"}
@@ -18,5 +18,7 @@ export declare function exportPrefix(node: IRNode): string;
18
18
  export declare function capitalize(s: string): string;
19
19
  /** Parse "name:Type,name2:Type2,spread:number=8" → "name: Type, name2: Type2, spread: number = 8" */
20
20
  export declare function parseParamList(params: string): string;
21
+ /** Emit a @kern-source comment for tracing generated code back to .kern source. */
22
+ export declare function sourceComment(node: IRNode, sourceFile?: string): string;
21
23
  export declare function emitReasonAnnotations(node: IRNode): string[];
22
24
  export declare function emitLowConfidenceTodo(node: IRNode, confidence: string | undefined): string[];
@@ -10,7 +10,7 @@ export function getProps(node) {
10
10
  }
11
11
  export function getChildren(node, type) {
12
12
  const c = node.children || [];
13
- return type ? c.filter(n => n.type === type) : c;
13
+ return type ? c.filter((n) => n.type === type) : c;
14
14
  }
15
15
  export function getFirstChild(node, type) {
16
16
  return getChildren(node, type)[0];
@@ -27,11 +27,14 @@ export function getThemeRefs(node) {
27
27
  // ── String Utilities ────────────────────────────────────────────────────
28
28
  export function dedent(code) {
29
29
  const lines = code.split('\n');
30
- const nonEmpty = lines.filter(l => l.trim().length > 0);
30
+ const nonEmpty = lines.filter((l) => l.trim().length > 0);
31
31
  if (nonEmpty.length === 0)
32
32
  return code;
33
- const minIndent = Math.min(...nonEmpty.map(l => l.match(/^(\s*)/)?.[1]?.length ?? 0));
34
- return lines.map(l => l.slice(minIndent)).join('\n').trim();
33
+ const minIndent = Math.min(...nonEmpty.map((l) => l.match(/^(\s*)/)?.[1]?.length ?? 0));
34
+ return lines
35
+ .map((l) => l.slice(minIndent))
36
+ .join('\n')
37
+ .trim();
35
38
  }
36
39
  export function cssPropertyName(camel) {
37
40
  return camel.replace(/([A-Z])/g, '-$1').toLowerCase();
@@ -54,7 +57,8 @@ export function capitalize(s) {
54
57
  export function parseParamList(params) {
55
58
  if (!params)
56
59
  return '';
57
- return splitParamsRespectingDepth(params).map(s => {
60
+ return splitParamsRespectingDepth(params)
61
+ .map((s) => {
58
62
  const trimmed = s.trim();
59
63
  const colonIdx = trimmed.indexOf(':');
60
64
  if (colonIdx === -1)
@@ -67,7 +71,8 @@ export function parseParamList(params) {
67
71
  const ptype = rest.slice(0, eqIdx).trim();
68
72
  const pdefault = rest.slice(eqIdx + 1).trim();
69
73
  return `${pname}: ${ptype} = ${pdefault}`;
70
- }).join(', ');
74
+ })
75
+ .join(', ');
71
76
  }
72
77
  /** Split param string on commas while respecting <>, (), {} depth. */
73
78
  function splitParamsRespectingDepth(s) {
@@ -109,6 +114,13 @@ function findDefaultSeparator(rest) {
109
114
  }
110
115
  return -1;
111
116
  }
117
+ // ── Source Location Comments ────────────────────────────────────────────
118
+ /** Emit a @kern-source comment for tracing generated code back to .kern source. */
119
+ export function sourceComment(node, sourceFile) {
120
+ if (!node.loc)
121
+ return '';
122
+ return `// @kern-source: ${sourceFile || 'unknown'}:${node.loc.line}`;
123
+ }
112
124
  // ── Reason & Confidence Annotations ─────────────────────────────────────
113
125
  export function emitReasonAnnotations(node) {
114
126
  const reasonNode = getFirstChild(node, 'reason');
@@ -151,7 +163,7 @@ export function emitLowConfidenceTodo(node, confidence) {
151
163
  if (!confidence)
152
164
  return [];
153
165
  const val = parseFloat(confidence);
154
- if (isNaN(val) || val >= 0.5 || confidence.includes(':'))
166
+ if (Number.isNaN(val) || val >= 0.5 || confidence.includes(':'))
155
167
  return [];
156
168
  const name = getProps(node).name || node.type;
157
169
  return [`// TODO(low-confidence): ${name} confidence=${confidence}`];
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/codegen/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/codegen/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * State Machine Generators — machine, machineReducer.
3
+ *
4
+ * KERN's killer feature: 12 lines of KERN → 140+ lines of TypeScript.
5
+ * Extracted from codegen-core.ts for modular codegen architecture.
6
+ */
7
+ import type { IRNode } from '../types.js';
8
+ export declare function generateMachine(node: IRNode): string[];
9
+ export declare function generateMachineReducer(node: IRNode): string[];