kern-lang 1.0.0 → 2.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 (66) hide show
  1. package/dist/index.d.ts +14 -25
  2. package/dist/index.js +15 -28
  3. package/dist/index.js.map +1 -1
  4. package/package.json +17 -36
  5. package/README.md +0 -304
  6. package/dist/cli.d.ts +0 -2
  7. package/dist/cli.js +0 -244
  8. package/dist/cli.js.map +0 -1
  9. package/dist/config.d.ts +0 -46
  10. package/dist/config.js +0 -54
  11. package/dist/config.js.map +0 -1
  12. package/dist/context-export.d.ts +0 -11
  13. package/dist/context-export.js +0 -121
  14. package/dist/context-export.js.map +0 -1
  15. package/dist/decompiler.d.ts +0 -2
  16. package/dist/decompiler.js +0 -44
  17. package/dist/decompiler.js.map +0 -1
  18. package/dist/draft-protocol.d.ts +0 -27
  19. package/dist/draft-protocol.js +0 -135
  20. package/dist/draft-protocol.js.map +0 -1
  21. package/dist/errors.d.ts +0 -12
  22. package/dist/errors.js +0 -40
  23. package/dist/errors.js.map +0 -1
  24. package/dist/metrics.d.ts +0 -30
  25. package/dist/metrics.js +0 -182
  26. package/dist/metrics.js.map +0 -1
  27. package/dist/parser.d.ts +0 -4
  28. package/dist/parser.js +0 -361
  29. package/dist/parser.js.map +0 -1
  30. package/dist/spec.d.ts +0 -17
  31. package/dist/spec.js +0 -86
  32. package/dist/spec.js.map +0 -1
  33. package/dist/styles-react.d.ts +0 -3
  34. package/dist/styles-react.js +0 -20
  35. package/dist/styles-react.js.map +0 -1
  36. package/dist/styles-tailwind.d.ts +0 -8
  37. package/dist/styles-tailwind.js +0 -197
  38. package/dist/styles-tailwind.js.map +0 -1
  39. package/dist/transpiler-cli.d.ts +0 -3
  40. package/dist/transpiler-cli.js +0 -279
  41. package/dist/transpiler-cli.js.map +0 -1
  42. package/dist/transpiler-express.d.ts +0 -3
  43. package/dist/transpiler-express.js +0 -612
  44. package/dist/transpiler-express.js.map +0 -1
  45. package/dist/transpiler-nextjs.d.ts +0 -21
  46. package/dist/transpiler-nextjs.js +0 -400
  47. package/dist/transpiler-nextjs.js.map +0 -1
  48. package/dist/transpiler-tailwind.d.ts +0 -3
  49. package/dist/transpiler-tailwind.js +0 -594
  50. package/dist/transpiler-tailwind.js.map +0 -1
  51. package/dist/transpiler-terminal.d.ts +0 -3
  52. package/dist/transpiler-terminal.js +0 -522
  53. package/dist/transpiler-terminal.js.map +0 -1
  54. package/dist/transpiler-web.d.ts +0 -3
  55. package/dist/transpiler-web.js +0 -218
  56. package/dist/transpiler-web.js.map +0 -1
  57. package/dist/transpiler.d.ts +0 -3
  58. package/dist/transpiler.js +0 -218
  59. package/dist/transpiler.js.map +0 -1
  60. package/dist/types.d.ts +0 -76
  61. package/dist/types.js +0 -11
  62. package/dist/types.js.map +0 -1
  63. package/dist/utils.d.ts +0 -5
  64. package/dist/utils.js +0 -36
  65. package/dist/utils.js.map +0 -1
  66. package/kern.config.ts +0 -61
package/dist/cli.js DELETED
@@ -1,244 +0,0 @@
1
- #!/usr/bin/env node
2
- import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
3
- import { resolve, basename, dirname } from 'path';
4
- import { createJiti } from 'jiti';
5
- import { parse } from './parser.js';
6
- import { transpile } from './transpiler.js';
7
- import { transpileWeb } from './transpiler-web.js';
8
- import { transpileTailwind } from './transpiler-tailwind.js';
9
- import { transpileNextjs } from './transpiler-nextjs.js';
10
- import { transpileExpress } from './transpiler-express.js';
11
- import { transpileCliApp } from './transpiler-cli.js';
12
- import { transpileTerminal } from './transpiler-terminal.js';
13
- import { decompile } from './decompiler.js';
14
- import { resolveConfig, VALID_TARGETS } from './config.js';
15
- import { collectLanguageMetrics } from './metrics.js';
16
- const args = process.argv.slice(2);
17
- const inputFile = args.find(a => !a.startsWith('--'));
18
- if (!inputFile) {
19
- console.log('Usage: kern <file.kern> [--target=nextjs|tailwind|web|native|express|cli] [options]');
20
- console.log('');
21
- console.log('Targets:');
22
- console.log(' nextjs Next.js App Router (default)');
23
- console.log(' tailwind React + Tailwind CSS');
24
- console.log(' web React with inline styles');
25
- console.log(' native React Native component');
26
- console.log(' express Express TypeScript backend');
27
- console.log(' cli Commander.js CLI app');
28
- console.log(' terminal ANSI terminal rendering');
29
- console.log('');
30
- console.log('Options:');
31
- console.log(' --decompile Output human-readable pseudocode');
32
- console.log(' --minify Output minified single-line Kern (LLM wire format)');
33
- console.log(' --pretty Expand minified Kern back to indented format');
34
- console.log(' --metrics Show language metrics (escape ratio, coverage, etc.)');
35
- process.exit(1);
36
- }
37
- // ── Load config via jiti (supports .ts config at runtime) ────────────────
38
- let config;
39
- const configPath = resolve(process.cwd(), 'kern.config.ts');
40
- if (existsSync(configPath)) {
41
- try {
42
- const jiti = createJiti(import.meta.url);
43
- const userConfig = jiti(configPath).default ?? jiti(configPath);
44
- config = resolveConfig(userConfig);
45
- }
46
- catch (err) {
47
- console.error(`Warning: Failed to load kern.config.ts: ${err.message}`);
48
- config = resolveConfig({});
49
- }
50
- }
51
- else {
52
- config = resolveConfig({});
53
- }
54
- // CLI flags override config — target
55
- const cliTarget = args.find(a => a.startsWith('--target='))?.split('=')[1];
56
- if (cliTarget) {
57
- if (!VALID_TARGETS.includes(cliTarget)) {
58
- console.error(`Unknown target: '${cliTarget}'. Valid targets: ${VALID_TARGETS.join(', ')}`);
59
- process.exit(1);
60
- }
61
- config = { ...config, target: cliTarget };
62
- }
63
- const target = config.target;
64
- const irSource = readFileSync(resolve(inputFile), 'utf-8');
65
- const ast = parse(irSource);
66
- const ext = inputFile.endsWith('.kern') ? '.kern' : '.ir';
67
- const name = basename(inputFile, ext);
68
- // ── Minify: indented Kern → single-line wire format ─────────────────────
69
- if (args.includes('--minify')) {
70
- const minified = minifyKern(ast);
71
- const outFile = resolve(dirname(inputFile), `${name}.min.kern`);
72
- writeFileSync(outFile, minified);
73
- const savings = Math.round((1 - minified.length / irSource.length) * 100);
74
- console.log(`Minified: ${inputFile} → ${outFile}`);
75
- console.log(`Chars: ${irSource.length} → ${minified.length} (${savings}% smaller)`);
76
- process.exit(0);
77
- }
78
- // ── Pretty: re-indent (useful after minify or messy edits) ──────────────
79
- if (args.includes('--pretty')) {
80
- const pretty = prettyKern(ast);
81
- const outFile = resolve(dirname(inputFile), `${name}.kern`);
82
- writeFileSync(outFile, pretty);
83
- console.log(`Formatted: ${inputFile} → ${outFile}`);
84
- process.exit(0);
85
- }
86
- // ── Decompile: Kern → human-readable pseudocode ─────────────────────────
87
- if (args.includes('--decompile')) {
88
- const result = decompile(ast);
89
- console.log(result.code);
90
- process.exit(0);
91
- }
92
- // ── Metrics: analyze language coverage ────────────────────────────────────
93
- if (args.includes('--metrics')) {
94
- const metrics = collectLanguageMetrics(ast);
95
- console.log(`Metrics: ${inputFile}`);
96
- console.log(` Nodes: ${metrics.nodeCount} (${metrics.nodeTypes.length} types)`);
97
- console.log(` Styles: ${metrics.styleMetrics.totalStyleDecls} declarations`);
98
- console.log(` Mapped: ${metrics.styleMetrics.mappedStyleDecls} (${Math.round((1 - metrics.styleMetrics.escapeRatio) * 100)}%)`);
99
- console.log(` Escaped: ${metrics.styleMetrics.escapedStyleDecls} (${Math.round(metrics.styleMetrics.escapeRatio * 100)}%)`);
100
- if (metrics.styleMetrics.escapedKeys.length > 0) {
101
- console.log(` Escape keys: ${metrics.styleMetrics.escapedKeys.join(', ')}`);
102
- }
103
- console.log(` Shorthand: ${Math.round(metrics.shorthandCoverage * 100)}% coverage`);
104
- console.log(` Theme refs: ${metrics.themeRefCount}`);
105
- console.log(` Pseudo: ${metrics.pseudoStyleCount}`);
106
- if (metrics.unknownNodeCount > 0) {
107
- console.log(` Unknown nodes: ${metrics.unknownNodeCount}`);
108
- }
109
- console.log('');
110
- console.log(' Node types:');
111
- for (const nt of metrics.nodeTypes.slice(0, 10)) {
112
- console.log(` ${nt.type}: ${nt.count} (${nt.styleDecls} styles)`);
113
- }
114
- process.exit(0);
115
- }
116
- // ── Transpile: Kern → target code ───────────────────────────────────────
117
- const result = target === 'native'
118
- ? transpile(ast, config)
119
- : target === 'web'
120
- ? transpileWeb(ast, config)
121
- : target === 'tailwind'
122
- ? transpileTailwind(ast, config)
123
- : target === 'express'
124
- ? transpileExpress(ast, config)
125
- : target === 'cli'
126
- ? transpileCliApp(ast, config)
127
- : target === 'terminal'
128
- ? transpileTerminal(ast, config)
129
- : transpileNextjs(ast, config);
130
- const outDir = resolve(dirname(inputFile), config.output.outDir);
131
- const outExt = (target === 'express' || target === 'cli' || target === 'terminal') ? '.ts' : '.tsx';
132
- const outFile = resolve(outDir, `${name}${outExt}`);
133
- mkdirSync(dirname(outFile), { recursive: true });
134
- writeFileSync(outFile, result.code);
135
- if (result.artifacts) {
136
- for (const artifact of result.artifacts) {
137
- const artifactPath = resolve(outDir, artifact.path);
138
- mkdirSync(dirname(artifactPath), { recursive: true });
139
- writeFileSync(artifactPath, artifact.content);
140
- }
141
- }
142
- console.log(`Transpiled: ${inputFile} → ${outFile}`);
143
- const targetNames = { native: 'React Native', web: 'React (inline)', tailwind: 'React + Tailwind', nextjs: 'Next.js App Router', express: 'Express TypeScript', cli: 'Commander.js CLI', terminal: 'ANSI Terminal' };
144
- console.log(`Target: ${targetNames[target] || target}`);
145
- console.log(`IR tokens: ${result.irTokenCount}`);
146
- console.log(`TS tokens: ${result.tsTokenCount}`);
147
- console.log(`Reduction: ${result.tokenReduction}%`);
148
- console.log(`Source map: ${result.sourceMap.length} entries`);
149
- if (result.artifacts) {
150
- console.log(`Artifacts: ${result.artifacts.length}`);
151
- }
152
- // ── Minify/Pretty implementations ───────────────────────────────────────
153
- function minifyKern(node) {
154
- const type = node.type;
155
- const props = node.props || {};
156
- let head = type;
157
- // Serialize props (theme name is bare word, not key=value)
158
- for (const [k, v] of Object.entries(props)) {
159
- if (['styles', 'pseudoStyles', 'themeRefs'].includes(k))
160
- continue;
161
- if (type === 'theme' && k === 'name') {
162
- head += ` ${v}`;
163
- continue;
164
- }
165
- if (typeof v === 'object' && v !== null && '__expr' in v) {
166
- head += ` ${k}={{ ${v.code} }}`;
167
- continue;
168
- }
169
- const val = typeof v === 'string' && v.includes(' ') ? `"${v}"` : String(v);
170
- head += ` ${k}=${val}`;
171
- }
172
- // Serialize styles
173
- if (props.styles) {
174
- const pairs = Object.entries(props.styles)
175
- .map(([k, v]) => v.includes(' ') || v.includes(',') ? `"${k}":"${v}"` : `${k}:${v}`);
176
- head += ` {${pairs.join(',')}}`;
177
- }
178
- // Serialize pseudo styles
179
- if (props.pseudoStyles) {
180
- const pseudo = props.pseudoStyles;
181
- for (const [state, styles] of Object.entries(pseudo)) {
182
- for (const [k, v] of Object.entries(styles)) {
183
- head += ` {:${state}:${k}:${v}}`;
184
- }
185
- }
186
- }
187
- // Theme refs
188
- if (props.themeRefs) {
189
- for (const ref of props.themeRefs) {
190
- head += ` $${ref}`;
191
- }
192
- }
193
- // Children → S-expression style
194
- if (node.children && node.children.length > 0) {
195
- const kids = node.children.map(c => minifyKern(c)).join(',');
196
- return `${head}(${kids})`;
197
- }
198
- return head;
199
- }
200
- function prettyKern(node, indent = '') {
201
- const type = node.type;
202
- const props = node.props || {};
203
- let line = `${indent}${type}`;
204
- for (const [k, v] of Object.entries(props)) {
205
- if (['styles', 'pseudoStyles', 'themeRefs'].includes(k))
206
- continue;
207
- if (type === 'theme' && k === 'name') {
208
- line += ` ${v}`;
209
- continue;
210
- }
211
- if (typeof v === 'object' && v !== null && '__expr' in v) {
212
- line += ` ${k}={{ ${v.code} }}`;
213
- continue;
214
- }
215
- const val = typeof v === 'string' && v.includes(' ') ? `"${v}"` : String(v);
216
- line += ` ${k}=${val}`;
217
- }
218
- if (props.styles) {
219
- const pairs = Object.entries(props.styles)
220
- .map(([k, v]) => v.includes(' ') || v.includes(',') ? `"${k}":"${v}"` : `${k}:${v}`);
221
- line += ` {${pairs.join(',')}}`;
222
- }
223
- if (props.pseudoStyles) {
224
- const pseudo = props.pseudoStyles;
225
- for (const [state, styles] of Object.entries(pseudo)) {
226
- for (const [k, v] of Object.entries(styles)) {
227
- line += `,${`:${state}:${k}:${v}`}`;
228
- }
229
- }
230
- }
231
- if (props.themeRefs) {
232
- for (const ref of props.themeRefs) {
233
- line += ` $${ref}`;
234
- }
235
- }
236
- let result = line + '\n';
237
- if (node.children) {
238
- for (const child of node.children) {
239
- result += prettyKern(child, indent + ' ');
240
- }
241
- }
242
- return result;
243
- }
244
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,46 +0,0 @@
1
- /**
2
- * Kern Configuration Types
3
- */
4
- export type KernTarget = 'nextjs' | 'tailwind' | 'web' | 'native' | 'express' | 'cli' | 'terminal';
5
- export declare const VALID_TARGETS: KernTarget[];
6
- export interface KernConfig {
7
- target?: KernTarget;
8
- i18n?: {
9
- enabled?: boolean;
10
- hookName?: string;
11
- importPath?: string;
12
- };
13
- components?: {
14
- uiLibrary?: string;
15
- componentRoot?: string;
16
- mappings?: Record<string, string>;
17
- };
18
- colors?: Record<string, string>;
19
- output?: {
20
- outDir?: string;
21
- sourceMaps?: boolean;
22
- };
23
- }
24
- /** Fully resolved config — all fields required, no optionals */
25
- export interface ResolvedKernConfig {
26
- target: KernTarget;
27
- i18n: {
28
- enabled: boolean;
29
- hookName: string;
30
- importPath: string;
31
- };
32
- components: {
33
- uiLibrary: string;
34
- componentRoot: string;
35
- mappings: Record<string, string>;
36
- };
37
- colors: Record<string, string>;
38
- output: {
39
- outDir: string;
40
- sourceMaps: boolean;
41
- };
42
- }
43
- export declare const DEFAULT_CONFIG: ResolvedKernConfig;
44
- export declare function resolveConfig(user?: Partial<KernConfig>): ResolvedKernConfig;
45
- /** @deprecated Use resolveConfig instead */
46
- export declare function mergeConfig(user: Partial<KernConfig>): KernConfig;
package/dist/config.js DELETED
@@ -1,54 +0,0 @@
1
- /**
2
- * Kern Configuration Types
3
- */
4
- import { DEFAULT_COLORS } from './styles-tailwind.js';
5
- export const VALID_TARGETS = ['nextjs', 'tailwind', 'web', 'native', 'express', 'cli', 'terminal'];
6
- export const DEFAULT_CONFIG = {
7
- target: 'nextjs',
8
- i18n: {
9
- enabled: true,
10
- hookName: 'useTranslation',
11
- importPath: 'react-i18next',
12
- },
13
- components: {
14
- uiLibrary: '@components/ui',
15
- componentRoot: '@/components',
16
- mappings: {},
17
- },
18
- colors: { ...DEFAULT_COLORS },
19
- output: {
20
- outDir: '.',
21
- sourceMaps: false,
22
- },
23
- };
24
- export function resolveConfig(user) {
25
- if (!user)
26
- return { ...DEFAULT_CONFIG };
27
- // Validate target
28
- if (user.target && !VALID_TARGETS.includes(user.target)) {
29
- throw new Error(`Unknown target: '${user.target}'. Valid targets: ${VALID_TARGETS.join(', ')}`);
30
- }
31
- return {
32
- target: user.target || DEFAULT_CONFIG.target,
33
- i18n: {
34
- enabled: user.i18n?.enabled ?? DEFAULT_CONFIG.i18n.enabled,
35
- hookName: user.i18n?.hookName ?? DEFAULT_CONFIG.i18n.hookName,
36
- importPath: user.i18n?.importPath ?? DEFAULT_CONFIG.i18n.importPath,
37
- },
38
- components: {
39
- uiLibrary: user.components?.uiLibrary ?? DEFAULT_CONFIG.components.uiLibrary,
40
- componentRoot: user.components?.componentRoot ?? DEFAULT_CONFIG.components.componentRoot,
41
- mappings: { ...DEFAULT_CONFIG.components.mappings, ...user.components?.mappings },
42
- },
43
- colors: { ...DEFAULT_CONFIG.colors, ...user.colors },
44
- output: {
45
- outDir: user.output?.outDir ?? DEFAULT_CONFIG.output.outDir,
46
- sourceMaps: user.output?.sourceMaps ?? DEFAULT_CONFIG.output.sourceMaps,
47
- },
48
- };
49
- }
50
- /** @deprecated Use resolveConfig instead */
51
- export function mergeConfig(user) {
52
- return resolveConfig(user);
53
- }
54
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,MAAM,CAAC,MAAM,aAAa,GAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAiDjH,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,eAAe;KAC5B;IACD,UAAU,EAAE;QACV,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,cAAc;QAC7B,QAAQ,EAAE,EAAE;KACb;IACD,MAAM,EAAE,EAAE,GAAG,cAAc,EAAE;IAC7B,MAAM,EAAE;QACN,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAExC,kBAAkB;IAClB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,qBAAqB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IAED,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM;QAC5C,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO;YAC1D,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ;YAC7D,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU;SACpE;QACD,UAAU,EAAE;YACV,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,cAAc,CAAC,UAAU,CAAC,SAAS;YAC5E,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,IAAI,cAAc,CAAC,UAAU,CAAC,aAAa;YACxF,QAAQ,EAAE,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE;SAClF;QACD,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACpD,MAAM,EAAE;YACN,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM;YAC3D,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,cAAc,CAAC,MAAM,CAAC,UAAU;SACxE;KACF,CAAC;AACJ,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,11 +0,0 @@
1
- import { type LanguageMetrics } from './metrics.js';
2
- import { type ResolvedKernConfig, type KernTarget } from './config.js';
3
- export interface ProjectSummary {
4
- cwd: string;
5
- target: KernTarget;
6
- kernFiles: string[];
7
- colorPalette: Record<string, string>;
8
- metrics: LanguageMetrics | null;
9
- }
10
- export declare function scanKernProject(cwd: string, config?: ResolvedKernConfig): ProjectSummary;
11
- export declare function projectToKern(summary: ProjectSummary): string;
@@ -1,121 +0,0 @@
1
- import { readFileSync, readdirSync, statSync } from 'fs';
2
- import { resolve, relative, join } from 'path';
3
- import { parse } from './parser.js';
4
- import { collectLanguageMetrics, mergeMetrics } from './metrics.js';
5
- import { resolveConfig } from './config.js';
6
- // ── File discovery ───────────────────────────────────────────────────────
7
- const SKIP_DIRS = new Set(['node_modules', 'dist', '.git', '.next', 'build', 'out']);
8
- function findKernFiles(cwd, maxDepth = 5) {
9
- const results = [];
10
- function walk(dir, depth) {
11
- if (depth > maxDepth)
12
- return;
13
- let entries;
14
- try {
15
- entries = readdirSync(dir);
16
- }
17
- catch {
18
- return;
19
- }
20
- for (const entry of entries) {
21
- if (SKIP_DIRS.has(entry))
22
- continue;
23
- const full = join(dir, entry);
24
- let stat;
25
- try {
26
- stat = statSync(full);
27
- }
28
- catch {
29
- continue;
30
- }
31
- if (stat.isDirectory()) {
32
- walk(full, depth + 1);
33
- }
34
- else if (entry.endsWith('.kern')) {
35
- results.push(relative(cwd, full));
36
- }
37
- }
38
- }
39
- walk(cwd, 0);
40
- return results.sort();
41
- }
42
- // ── Project scanning ─────────────────────────────────────────────────────
43
- export function scanKernProject(cwd, config) {
44
- const resolved = config ?? resolveConfig();
45
- const kernFiles = findKernFiles(cwd);
46
- if (kernFiles.length === 0) {
47
- return {
48
- cwd,
49
- target: resolved.target,
50
- kernFiles: [],
51
- colorPalette: resolved.colors,
52
- metrics: null,
53
- };
54
- }
55
- const fileMetrics = [];
56
- for (const file of kernFiles) {
57
- try {
58
- const source = readFileSync(resolve(cwd, file), 'utf-8');
59
- const ast = parse(source);
60
- fileMetrics.push(collectLanguageMetrics(ast));
61
- }
62
- catch {
63
- // Skip unparseable files
64
- }
65
- }
66
- return {
67
- cwd,
68
- target: resolved.target,
69
- kernFiles,
70
- colorPalette: resolved.colors,
71
- metrics: fileMetrics.length > 0 ? mergeMetrics(fileMetrics) : null,
72
- };
73
- }
74
- // ── Kern-format context export (for Agon integration) ────────────────────
75
- export function projectToKern(summary) {
76
- const lines = [];
77
- const name = summary.cwd.split('/').pop() || 'project';
78
- lines.push(`kern-project ${name} {`);
79
- lines.push(` target: "${summary.target}"`);
80
- lines.push(` files: ${summary.kernFiles.length}`);
81
- for (const file of summary.kernFiles) {
82
- lines.push(` - ${file}`);
83
- }
84
- if (summary.metrics) {
85
- const m = summary.metrics;
86
- lines.push('');
87
- lines.push(' metrics {');
88
- lines.push(` nodes: ${m.nodeCount}`);
89
- lines.push(` escapeRatio: ${m.styleMetrics.escapeRatio.toFixed(2)}`);
90
- if (m.styleMetrics.escapedKeys.length > 0) {
91
- lines.push(` escapedKeys: ${m.styleMetrics.escapedKeys.join(', ')}`);
92
- }
93
- lines.push(` themeRefs: ${m.themeRefCount}`);
94
- lines.push(` pseudoStyles: ${m.pseudoStyleCount}`);
95
- lines.push(` shorthandCoverage: ${Math.round(m.shorthandCoverage * 100)}%`);
96
- if (m.tokenEfficiency) {
97
- lines.push(` tokenReduction: ${m.tokenEfficiency.tokenReduction}%`);
98
- }
99
- lines.push(' }');
100
- if (m.nodeTypes.length > 0) {
101
- lines.push('');
102
- lines.push(' nodeTypes {');
103
- for (const nt of m.nodeTypes.slice(0, 15)) {
104
- lines.push(` ${nt.type}: ${nt.count}`);
105
- }
106
- lines.push(' }');
107
- }
108
- }
109
- const colorEntries = Object.entries(summary.colorPalette);
110
- if (colorEntries.length > 0) {
111
- lines.push('');
112
- lines.push(' colors {');
113
- for (const [hex, name] of colorEntries.slice(0, 20)) {
114
- lines.push(` ${hex}: ${name}`);
115
- }
116
- lines.push(' }');
117
- }
118
- lines.push('}');
119
- return lines.join('\n');
120
- }
121
- //# sourceMappingURL=context-export.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-export.js","sourceRoot":"","sources":["../src/context-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAc,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAwB,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,aAAa,EAA4C,MAAM,aAAa,CAAC;AAYtF,4EAA4E;AAE5E,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAErF,SAAS,aAAa,CAAC,GAAW,EAAE,QAAQ,GAAG,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,SAAS,IAAI,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,KAAK,GAAG,QAAQ;YAAE,OAAO;QAC7B,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACb,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,4EAA4E;AAE5E,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,MAA2B;IACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,aAAa,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAErC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG;YACH,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1B,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG;QACH,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS;QACT,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC;AACJ,CAAC;AAED,4EAA4E;AAE5E,MAAM,UAAU,aAAa,CAAC,OAAuB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAEvD,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/E,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,eAAe,CAAC,cAAc,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElB,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5B,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { IRNode, DecompileResult } from './types.js';
2
- export declare function decompile(root: IRNode): DecompileResult;
@@ -1,44 +0,0 @@
1
- import { STYLE_SHORTHANDS, VALUE_SHORTHANDS } from './spec.js';
2
- function expandKey(key) {
3
- return STYLE_SHORTHANDS[key] || key;
4
- }
5
- function expandVal(val) {
6
- return VALUE_SHORTHANDS[val] || val;
7
- }
8
- export function decompile(root) {
9
- const lines = [];
10
- function render(node, indent) {
11
- const props = node.props || {};
12
- const name = props.name || '';
13
- const type = node.type.charAt(0).toUpperCase() + node.type.slice(1);
14
- // Style description
15
- const styles = props.styles;
16
- const styleDesc = styles
17
- ? Object.entries(styles).map(([k, v]) => `${expandKey(k)}: ${expandVal(v)}`).join(', ')
18
- : '';
19
- // Props (excluding internal keys)
20
- const propEntries = Object.entries(props)
21
- .filter(([k]) => k !== 'styles' && k !== 'pseudoStyles' && k !== 'themeRefs')
22
- .map(([k, v]) => `${k}=${JSON.stringify(v)}`)
23
- .join(', ');
24
- let desc = `${indent}${type}`;
25
- if (name)
26
- desc += ` "${name}"`;
27
- if (propEntries)
28
- desc += ` (${propEntries})`;
29
- if (styleDesc)
30
- desc += ` [${styleDesc}]`;
31
- const themeRefs = props.themeRefs;
32
- if (themeRefs?.length)
33
- desc += ` inherits ${themeRefs.map(r => `$${r}`).join(', ')}`;
34
- lines.push(desc);
35
- if (node.children) {
36
- for (const child of node.children) {
37
- render(child, indent + ' ');
38
- }
39
- }
40
- }
41
- render(root, '');
42
- return { code: lines.join('\n') };
43
- }
44
- //# sourceMappingURL=decompiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decompiler.js","sourceRoot":"","sources":["../src/decompiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE/D,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,MAAM,CAAC,IAAY,EAAE,MAAc;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAI,KAAK,CAAC,IAAe,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAA4C,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM;YACtB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACvF,CAAC,CAAC,EAAE,CAAC;QAEP,kCAAkC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,KAAK,WAAW,CAAC;aAC5E,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,IAAI,IAAI,GAAG,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI;YAAE,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC;QAC/B,IAAI,WAAW;YAAE,IAAI,IAAI,KAAK,WAAW,GAAG,CAAC;QAC7C,IAAI,SAAS;YAAE,IAAI,IAAI,KAAK,SAAS,GAAG,CAAC;QAEzC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAiC,CAAC;QAC1D,IAAI,SAAS,EAAE,MAAM;YAAE,IAAI,IAAI,aAAa,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAErF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpC,CAAC"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Kern Draft Protocol
3
- *
4
- * Structured communication format for competing AI engines.
5
- * Engines respond in Kern draft format instead of verbose natural language —
6
- * 70% fewer tokens, no fluff, structured and rankable.
7
- *
8
- * "Engines speak Kern."
9
- */
10
- export interface KernDraft {
11
- approach: string;
12
- reasoning: string;
13
- tradeoffs: string[];
14
- confidence: number;
15
- keyFiles: string[];
16
- steps: string[];
17
- }
18
- export declare function buildKernDraftPrompt(opts: {
19
- question: string;
20
- context?: string;
21
- mode: 'brainstorm' | 'forge-plan' | 'tribunal-position';
22
- }): string;
23
- export declare function buildKernRankPrompt(drafts: {
24
- engineId: string;
25
- draft: KernDraft;
26
- }[]): string;
27
- export declare function parseKernDraft(output: string): KernDraft | null;