@kernlang/cli 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 (49) hide show
  1. package/LICENSE +17 -0
  2. package/dist/cli.js +32 -2435
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/compile.d.ts +1 -0
  5. package/dist/commands/compile.js +193 -0
  6. package/dist/commands/compile.js.map +1 -0
  7. package/dist/commands/confidence.d.ts +1 -0
  8. package/dist/commands/confidence.js +105 -0
  9. package/dist/commands/confidence.js.map +1 -0
  10. package/dist/commands/dev.d.ts +1 -0
  11. package/dist/commands/dev.js +123 -0
  12. package/dist/commands/dev.js.map +1 -0
  13. package/dist/commands/evolve/backfill.d.ts +1 -0
  14. package/dist/commands/evolve/backfill.js +88 -0
  15. package/dist/commands/evolve/backfill.js.map +1 -0
  16. package/dist/commands/evolve/discover.d.ts +1 -0
  17. package/dist/commands/evolve/discover.js +158 -0
  18. package/dist/commands/evolve/discover.js.map +1 -0
  19. package/dist/commands/evolve/index.d.ts +1 -0
  20. package/dist/commands/evolve/index.js +40 -0
  21. package/dist/commands/evolve/index.js.map +1 -0
  22. package/dist/commands/evolve/lifecycle.d.ts +8 -0
  23. package/dist/commands/evolve/lifecycle.js +190 -0
  24. package/dist/commands/evolve/lifecycle.js.map +1 -0
  25. package/dist/commands/evolve/main.d.ts +1 -0
  26. package/dist/commands/evolve/main.js +76 -0
  27. package/dist/commands/evolve/main.js.map +1 -0
  28. package/dist/commands/evolve/review-v4.d.ts +1 -0
  29. package/dist/commands/evolve/review-v4.js +181 -0
  30. package/dist/commands/evolve/review-v4.js.map +1 -0
  31. package/dist/commands/evolve/review.d.ts +1 -0
  32. package/dist/commands/evolve/review.js +63 -0
  33. package/dist/commands/evolve/review.js.map +1 -0
  34. package/dist/commands/review.d.ts +1 -0
  35. package/dist/commands/review.js +881 -0
  36. package/dist/commands/review.js.map +1 -0
  37. package/dist/commands/scan.d.ts +2 -0
  38. package/dist/commands/scan.js +89 -0
  39. package/dist/commands/scan.js.map +1 -0
  40. package/dist/commands/transpile.d.ts +2 -0
  41. package/dist/commands/transpile.js +286 -0
  42. package/dist/commands/transpile.js.map +1 -0
  43. package/dist/shared.d.ts +20 -0
  44. package/dist/shared.js +270 -0
  45. package/dist/shared.js.map +1 -0
  46. package/dist/transpiler-cli.d.ts +1 -1
  47. package/dist/transpiler-cli.js +10 -9
  48. package/dist/transpiler-cli.js.map +1 -1
  49. package/package.json +14 -13
@@ -0,0 +1,190 @@
1
+ import { NODE_TYPES } from '@kernlang/core';
2
+ import { detectCollisions, formatGoldenTestResults, promoteNode, pruneNodes, readEvolvedManifest, rebuildEvolvedManifest, renameEvolvedNode, restoreNode, rollbackNode, runGoldenTests, } from '@kernlang/evolve';
3
+ import { relative } from 'path';
4
+ import { hasFlag, parseFlag } from '../../shared.js';
5
+ export function runEvolveTest() {
6
+ console.log('\n KERN evolve:test — golden test runner\n');
7
+ const results = runGoldenTests();
8
+ console.log(formatGoldenTestResults(results));
9
+ const failed = results.filter((r) => !r.pass).length;
10
+ console.log('');
11
+ process.exit(failed > 0 ? 1 : 0);
12
+ }
13
+ export function runEvolveRollback(args) {
14
+ const keyword = args[1];
15
+ if (!keyword || keyword.startsWith('--')) {
16
+ console.error('Usage: kern evolve:rollback <keyword> [--force]');
17
+ process.exit(1);
18
+ }
19
+ const force = hasFlag(args, '--force');
20
+ const result = rollbackNode(keyword, process.cwd(), force);
21
+ if (result.success) {
22
+ console.log(` Rolled back '${keyword}' (moved to .trash/).`);
23
+ console.log(` Restore with: kern evolve:restore ${keyword}`);
24
+ }
25
+ else {
26
+ console.error(` Failed: ${result.error}`);
27
+ if (result.usageFiles) {
28
+ console.error(' Used in:');
29
+ for (const f of result.usageFiles.slice(0, 5)) {
30
+ console.error(` ${relative(process.cwd(), f)}`);
31
+ }
32
+ }
33
+ process.exit(1);
34
+ }
35
+ process.exit(0);
36
+ }
37
+ export function runEvolveRestore(args) {
38
+ const keyword = args[1];
39
+ if (!keyword) {
40
+ console.error('Usage: kern evolve:restore <keyword>');
41
+ process.exit(1);
42
+ }
43
+ const result = restoreNode(keyword);
44
+ if (result.success) {
45
+ console.log(` Restored '${keyword}'.`);
46
+ }
47
+ else {
48
+ console.error(` Failed: ${result.error}`);
49
+ process.exit(1);
50
+ }
51
+ process.exit(0);
52
+ }
53
+ export function runEvolveList() {
54
+ const manifest = readEvolvedManifest();
55
+ if (!manifest || Object.keys(manifest.nodes).length === 0) {
56
+ console.log("\n No evolved nodes graduated. Run 'kern evolve:discover' to start.\n");
57
+ process.exit(0);
58
+ }
59
+ console.log(`\n KERN evolved nodes — ${Object.keys(manifest.nodes).length} graduated\n`);
60
+ for (const [keyword, entry] of Object.entries(manifest.nodes)) {
61
+ console.log(` ${keyword} — ${entry.displayName} (graduated ${entry.graduatedAt.split('T')[0]} by ${entry.graduatedBy})`);
62
+ }
63
+ console.log('');
64
+ process.exit(0);
65
+ }
66
+ export function runEvolvePromote(args) {
67
+ const promoteKeyword = args[1];
68
+ if (!promoteKeyword || promoteKeyword.startsWith('--')) {
69
+ console.error('Usage: kern evolve:promote <keyword>');
70
+ console.error(' Reads codegen from .kern/evolved/<keyword>/ and outputs what to add to core.');
71
+ process.exit(1);
72
+ }
73
+ const result = promoteNode(promoteKeyword);
74
+ if (!result.success) {
75
+ console.error(` Failed: ${result.error}`);
76
+ process.exit(1);
77
+ }
78
+ const fnName = 'generate' +
79
+ promoteKeyword
80
+ .split('-')
81
+ .map((w) => w[0].toUpperCase() + w.slice(1))
82
+ .join('');
83
+ console.log(`\n KERN evolve:promote — ${promoteKeyword}\n`);
84
+ console.log(' To promote this node to core, apply these changes:\n');
85
+ console.log(` 1. Add '${promoteKeyword}' to NODE_TYPES in packages/core/src/spec.ts`);
86
+ console.log(` 2. Create packages/core/src/generators/${fnName}.ts with:`);
87
+ console.log(` ──────────────────────────────`);
88
+ for (const line of (result.codegenTs || '').split('\n').slice(0, 20)) {
89
+ console.log(` ${line}`);
90
+ }
91
+ if ((result.codegenTs || '').split('\n').length > 20) {
92
+ console.log(` ... (${(result.codegenTs || '').split('\n').length - 20} more lines)`);
93
+ }
94
+ console.log(` ──────────────────────────────`);
95
+ console.log(` 3. Add case '${promoteKeyword}': return ${fnName}(node); to generateCoreNode() in codegen-core.ts`);
96
+ if (result.goldenKern) {
97
+ console.log(` 4. Move golden test to packages/core/tests/`);
98
+ }
99
+ console.log(` 5. Run: kern evolve:rollback ${promoteKeyword} --force`);
100
+ console.log('');
101
+ process.exit(0);
102
+ }
103
+ export function runEvolvePrune(args) {
104
+ const dryRun = hasFlag(args, '--dry-run');
105
+ const daysArg = parseFlag(args, '--days');
106
+ const thresholdDays = daysArg ? Number(daysArg) : 90;
107
+ console.log(`\n KERN evolve:prune — removing unused nodes (>${thresholdDays}d)\n`);
108
+ const results = pruneNodes(process.cwd(), thresholdDays, dryRun);
109
+ if (results.length === 0) {
110
+ console.log(' No nodes eligible for pruning.');
111
+ process.exit(0);
112
+ }
113
+ for (const r of results) {
114
+ if (dryRun) {
115
+ console.log(` Would prune: ${r.keyword} (${r.daysUnused}d unused)`);
116
+ }
117
+ else if (r.pruned) {
118
+ console.log(` Pruned: ${r.keyword} (${r.daysUnused}d unused) → .trash/`);
119
+ }
120
+ else {
121
+ console.log(` Failed: ${r.keyword} — ${r.error}`);
122
+ }
123
+ }
124
+ if (dryRun) {
125
+ console.log(`\n Dry run — no changes made. Remove --dry-run to prune.`);
126
+ }
127
+ console.log('');
128
+ process.exit(0);
129
+ }
130
+ export function runEvolveMigrate(args) {
131
+ console.log(`\n KERN evolve:migrate — checking for keyword collisions\n`);
132
+ const collisions = detectCollisions(NODE_TYPES);
133
+ if (collisions.length === 0) {
134
+ console.log(' No collisions. All evolved nodes are compatible with core.');
135
+ process.exit(0);
136
+ }
137
+ console.log(` Found ${collisions.length} collision(s):\n`);
138
+ for (const c of collisions) {
139
+ console.log(` ${c.keyword} (graduated ${c.graduatedAt.split('T')[0]})`);
140
+ console.log(` This keyword now exists in core NODE_TYPES.`);
141
+ console.log(` Options:`);
142
+ console.log(` kern evolve:migrate --rename=${c.keyword} --to=<new-name>`);
143
+ console.log(` kern evolve:migrate --remove=${c.keyword} (core version supersedes)`);
144
+ console.log('');
145
+ }
146
+ const renameArg = parseFlag(args, '--rename');
147
+ const toArg = parseFlag(args, '--to');
148
+ const removeArg = parseFlag(args, '--remove');
149
+ if (renameArg && toArg) {
150
+ const result = renameEvolvedNode(renameArg, toArg);
151
+ if (result.success) {
152
+ console.log(` Renamed '${renameArg}' → '${toArg}'`);
153
+ console.log(` Update your .kern files: replace '${renameArg}' with '${toArg}'.`);
154
+ }
155
+ else {
156
+ console.error(` Rename failed: ${result.error}`);
157
+ process.exit(1);
158
+ }
159
+ }
160
+ if (removeArg) {
161
+ const result = rollbackNode(removeArg, process.cwd(), true);
162
+ if (result.success) {
163
+ console.log(` Removed evolved '${removeArg}' — core version will be used.`);
164
+ }
165
+ else {
166
+ console.error(` Remove failed: ${result.error}`);
167
+ process.exit(1);
168
+ }
169
+ }
170
+ console.log('');
171
+ process.exit(0);
172
+ }
173
+ export function runEvolveRebuild() {
174
+ console.log(`\n KERN evolve:rebuild — rebuilding manifest from disk\n`);
175
+ const result = rebuildEvolvedManifest();
176
+ if (result.errors.length > 0) {
177
+ for (const err of result.errors) {
178
+ console.log(` ⚠ ${err}`);
179
+ }
180
+ console.log('');
181
+ }
182
+ if (result.rebuilt === 0 && result.errors.length > 0) {
183
+ console.error(' No nodes rebuilt.');
184
+ process.exit(1);
185
+ }
186
+ console.log(` manifest.json rebuilt with ${result.rebuilt} node(s).`);
187
+ console.log('');
188
+ process.exit(0);
189
+ }
190
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/commands/evolve/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runEvolve(args: string[]): Promise<void>;
@@ -0,0 +1,76 @@
1
+ import { evolve, loadBuiltinDetectors } from '@kernlang/evolve';
2
+ import { existsSync, statSync } from 'fs';
3
+ import { relative, resolve } from 'path';
4
+ import { hasFlag, parseFlag } from '../../shared.js';
5
+ export async function runEvolve(args) {
6
+ const evolveInput = args[1];
7
+ if (!evolveInput || evolveInput.startsWith('--')) {
8
+ console.error('Usage: kern evolve <dir|file> [--recursive] [--preview] [--min-confidence=N] [--min-support=N] [--json]');
9
+ process.exit(1);
10
+ }
11
+ const evolvePath = resolve(evolveInput);
12
+ const stat = existsSync(evolvePath) ? statSync(evolvePath) : null;
13
+ if (!stat) {
14
+ console.error(`Not found: ${evolveInput}`);
15
+ process.exit(1);
16
+ }
17
+ const recursive = hasFlag(args, '--recursive', '-r');
18
+ const preview = hasFlag(args, '--preview');
19
+ const jsonOutput = hasFlag(args, '--json');
20
+ const minConfArg = parseFlag(args, '--min-confidence');
21
+ const minSupportArg = parseFlag(args, '--min-support');
22
+ const enableNodes = hasFlag(args, '--nodes', '--from-gaps');
23
+ const evolveOptions = {
24
+ recursive,
25
+ preview,
26
+ enableNodeProposals: enableNodes,
27
+ thresholds: {
28
+ ...(minConfArg ? { minConfidence: Number(minConfArg) } : {}),
29
+ ...(minSupportArg ? { minSupport: Number(minSupportArg) } : {}),
30
+ },
31
+ };
32
+ await loadBuiltinDetectors();
33
+ console.log(`\n KERN evolve — scanning for template gaps\n`);
34
+ console.log(` Input: ${relative(process.cwd(), evolvePath) || '.'}`);
35
+ console.log(` Mode: ${preview ? 'preview (no staging)' : 'detect + stage'}`);
36
+ console.log('');
37
+ const result = evolve(evolvePath, evolveOptions);
38
+ if (jsonOutput) {
39
+ console.log(JSON.stringify(result, null, 2));
40
+ }
41
+ else {
42
+ console.log(` Gaps detected: ${result.gaps.length}`);
43
+ if (result.conceptSummary) {
44
+ console.log(` ${result.conceptSummary.formatted}`);
45
+ }
46
+ console.log(` Patterns analyzed: ${result.analyzed.length}`);
47
+ console.log(` Templates proposed: ${result.proposals.length}`);
48
+ console.log(` Validated: ${result.validated.filter((v) => v.validation.parseOk && v.validation.expansionOk).length}/${result.validated.length}`);
49
+ if (!preview && result.staged.length > 0) {
50
+ console.log(` Staged for review: ${result.staged.length}`);
51
+ console.log(`\n Run 'kern evolve:review --list' to review proposals.`);
52
+ }
53
+ if (result.proposals.length > 0) {
54
+ console.log('\n Proposed templates:');
55
+ for (const p of result.proposals) {
56
+ const v = result.validated.find((v) => v.proposal.id === p.id);
57
+ const status = v ? (v.validation.parseOk && v.validation.expansionOk ? '✓' : '✗') : '?';
58
+ console.log(` ${status} ${p.templateName} (${p.namespace}) — score: ${p.qualityScore.overallScore}, instances: ${p.instanceCount}`);
59
+ }
60
+ }
61
+ if (result.nodeProposals && result.nodeProposals.length > 0) {
62
+ console.log(`\n Node proposals (v3): ${result.nodeProposals.length}`);
63
+ for (const np of result.nodeProposals) {
64
+ const nv = result.nodeValidated?.find((v) => v.proposal.id === np.id);
65
+ const status = nv ? (nv.validation.parseOk && nv.validation.codegenOk ? '✓' : '✗') : '?';
66
+ console.log(` ${status} ${np.nodeName} — express: ${np.expressibilityScore.overall}, freq: ${np.frequency}, score: ${np.qualityScore}`);
67
+ }
68
+ if (result.stagedNodes && result.stagedNodes.length > 0) {
69
+ console.log(` Staged nodes: ${result.stagedNodes.length}`);
70
+ }
71
+ }
72
+ }
73
+ console.log('');
74
+ process.exit(0);
75
+ }
76
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/commands/evolve/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runEvolveReviewV4(args: string[]): Promise<void>;
@@ -0,0 +1,181 @@
1
+ import { cleanApprovedEvolveV4, cleanRejectedEvolveV4, compileCodegenToJS, formatEvolveV4SplitView, getStagedEvolveV4, graduateNode, listStagedEvolveV4, updateStagedEvolveV4Status, } from '@kernlang/evolve';
2
+ import { hasFlag, parseFlagOrNext } from '../../shared.js';
3
+ export async function runEvolveReviewV4(args) {
4
+ const approveV4Id = parseFlagOrNext(args, '--approve');
5
+ const rejectV4Id = parseFlagOrNext(args, '--reject');
6
+ const detailV4Id = parseFlagOrNext(args, '--detail');
7
+ if (approveV4Id) {
8
+ const staged = getStagedEvolveV4(approveV4Id);
9
+ if (!staged) {
10
+ console.error(` Not found: ${approveV4Id}`);
11
+ process.exit(1);
12
+ }
13
+ const { proposal, validation } = staged;
14
+ const allOk = validation.schemaOk &&
15
+ validation.keywordOk &&
16
+ validation.parseOk &&
17
+ validation.codegenCompileOk &&
18
+ validation.codegenRunOk;
19
+ if (!allOk) {
20
+ console.error(` Cannot approve — validation failed for '${proposal.keyword}':`);
21
+ for (const err of validation.errors) {
22
+ console.error(` ${err}`);
23
+ }
24
+ process.exit(1);
25
+ }
26
+ let compiledJs;
27
+ try {
28
+ compiledJs = compileCodegenToJS(proposal.codegenSource);
29
+ }
30
+ catch (err) {
31
+ console.error(` Failed to compile codegen for '${proposal.keyword}': ${err.message}`);
32
+ process.exit(1);
33
+ }
34
+ const result = graduateNode(proposal, compiledJs);
35
+ if (result.success) {
36
+ updateStagedEvolveV4Status(approveV4Id, 'approved');
37
+ cleanApprovedEvolveV4(approveV4Id);
38
+ console.log(` Graduated '${proposal.keyword}' → ${result.path}`);
39
+ console.log(` The node is now available in kern compile and kern dev.`);
40
+ }
41
+ else {
42
+ console.error(` Graduation failed: ${result.error}`);
43
+ process.exit(1);
44
+ }
45
+ process.exit(0);
46
+ }
47
+ if (rejectV4Id) {
48
+ const updated = updateStagedEvolveV4Status(rejectV4Id, 'rejected');
49
+ if (updated) {
50
+ console.log(` Rejected: ${updated.proposal.keyword} (${rejectV4Id})`);
51
+ cleanRejectedEvolveV4();
52
+ }
53
+ else {
54
+ console.error(` Not found: ${rejectV4Id}`);
55
+ process.exit(1);
56
+ }
57
+ process.exit(0);
58
+ }
59
+ if (detailV4Id) {
60
+ const staged = getStagedEvolveV4(detailV4Id);
61
+ if (!staged) {
62
+ console.error(` Not found: ${detailV4Id}`);
63
+ process.exit(1);
64
+ }
65
+ const { proposal, validation } = staged;
66
+ console.log(`\n DETAIL: ${proposal.keyword} (${proposal.displayName})\n`);
67
+ console.log(` Description: ${proposal.description}`);
68
+ console.log(` Props: ${proposal.props.map((p) => `${p.name}:${p.type}${p.required ? '*' : ''}`).join(', ')}`);
69
+ console.log(` Child types: ${proposal.childTypes.join(', ') || '(none)'}`);
70
+ console.log(` Codegen tier: ${proposal.codegenTier}`);
71
+ console.log(` Run ID: ${proposal.evolveRunId}`);
72
+ if (proposal.parserHints) {
73
+ console.log(` Parser hints: ${JSON.stringify(proposal.parserHints)}`);
74
+ }
75
+ console.log(`\n --- Codegen Source ---`);
76
+ console.log(proposal.codegenSource);
77
+ console.log(` --- Instances (${proposal.reason.instances.length}) ---`);
78
+ for (const inst of proposal.reason.instances.slice(0, 10)) {
79
+ console.log(` ${inst}`);
80
+ }
81
+ if (validation.errors.length > 0) {
82
+ console.log(`\n --- Validation Errors ---`);
83
+ for (const err of validation.errors) {
84
+ console.log(` ${err}`);
85
+ }
86
+ }
87
+ console.log('');
88
+ process.exit(0);
89
+ }
90
+ // Default: interactive review or list mode
91
+ const stagedV4 = listStagedEvolveV4();
92
+ const pendingV4 = stagedV4.filter((s) => s.status === 'pending');
93
+ if (pendingV4.length === 0) {
94
+ console.log(" No pending v4 proposals. Run 'kern evolve:discover <dir>' to find patterns.");
95
+ process.exit(0);
96
+ }
97
+ const listOnly = hasFlag(args, '--list');
98
+ if (listOnly) {
99
+ console.log(`\n KERN evolve:review-v4 — ${pendingV4.length} proposal(s)\n`);
100
+ for (const s of pendingV4) {
101
+ console.log(formatEvolveV4SplitView(s));
102
+ console.log('');
103
+ }
104
+ process.exit(0);
105
+ }
106
+ // Interactive review
107
+ const { createInterface } = await import('readline');
108
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
109
+ const ask = (q) => new Promise((res) => rl.question(q, res));
110
+ console.log(`\n KERN evolve:review-v4 — ${pendingV4.length} proposal(s)\n`);
111
+ for (const staged of pendingV4) {
112
+ console.log(formatEvolveV4SplitView(staged));
113
+ console.log('');
114
+ let decided = false;
115
+ while (!decided) {
116
+ const answer = (await ask(' [a]pprove [r]eject [s]kip [d]etail [q]uit > ')).trim().toLowerCase();
117
+ if (answer === 'a' || answer === 'approve') {
118
+ const { proposal, validation } = staged;
119
+ const allOk = validation.schemaOk &&
120
+ validation.keywordOk &&
121
+ validation.parseOk &&
122
+ validation.codegenCompileOk &&
123
+ validation.codegenRunOk;
124
+ if (!allOk) {
125
+ console.log(` Cannot approve — validation failed. Use [d]etail to see errors.\n`);
126
+ continue;
127
+ }
128
+ try {
129
+ const compiledJs = compileCodegenToJS(proposal.codegenSource);
130
+ const result = graduateNode(proposal, compiledJs);
131
+ if (result.success) {
132
+ updateStagedEvolveV4Status(staged.id, 'approved');
133
+ cleanApprovedEvolveV4(staged.id);
134
+ console.log(` \u2713 Graduated '${proposal.keyword}'\n`);
135
+ }
136
+ else {
137
+ console.log(` Graduation failed: ${result.error}\n`);
138
+ }
139
+ }
140
+ catch (err) {
141
+ console.log(` Error: ${err.message}\n`);
142
+ }
143
+ decided = true;
144
+ }
145
+ else if (answer === 'r' || answer === 'reject') {
146
+ updateStagedEvolveV4Status(staged.id, 'rejected');
147
+ cleanRejectedEvolveV4();
148
+ console.log(` \u2717 Rejected '${staged.proposal.keyword}'\n`);
149
+ decided = true;
150
+ }
151
+ else if (answer === 's' || answer === 'skip') {
152
+ console.log(` Skipped.\n`);
153
+ decided = true;
154
+ }
155
+ else if (answer === 'd' || answer === 'detail') {
156
+ const { proposal, validation } = staged;
157
+ console.log(`\n --- Codegen Source ---`);
158
+ console.log(proposal.codegenSource);
159
+ console.log(` --- Instances (${proposal.reason.instances.length}) ---`);
160
+ for (const inst of proposal.reason.instances.slice(0, 5)) {
161
+ console.log(` ${inst}`);
162
+ }
163
+ if (validation.errors.length > 0) {
164
+ console.log(` --- Errors ---`);
165
+ for (const err of validation.errors) {
166
+ console.log(` ${err}`);
167
+ }
168
+ }
169
+ console.log('');
170
+ }
171
+ else if (answer === 'q' || answer === 'quit') {
172
+ rl.close();
173
+ process.exit(0);
174
+ }
175
+ }
176
+ }
177
+ rl.close();
178
+ console.log(' Review complete.\n');
179
+ process.exit(0);
180
+ }
181
+ //# sourceMappingURL=review-v4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-v4.js","sourceRoot":"","sources":["../../../src/commands/evolve/review-v4.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runEvolveReview(args: string[]): void;
@@ -0,0 +1,63 @@
1
+ import { cleanRejected, formatSplitView, listStaged, promoteLocal, updateStagedStatus } from '@kernlang/evolve';
2
+ import { hasFlag, parseFlagOrNext } from '../../shared.js';
3
+ export function runEvolveReview(args) {
4
+ const _listMode = hasFlag(args, '--list') || args.length === 1;
5
+ const approveId = parseFlagOrNext(args, '--approve');
6
+ const rejectId = parseFlagOrNext(args, '--reject');
7
+ const promoteMode = hasFlag(args, '--promote');
8
+ const isLocal = hasFlag(args, '--local') || !hasFlag(args, '--catalog');
9
+ if (approveId) {
10
+ const updated = updateStagedStatus(approveId, 'approved');
11
+ if (updated) {
12
+ console.log(` Approved: ${approveId}`);
13
+ }
14
+ else {
15
+ console.error(` Not found: ${approveId}`);
16
+ process.exit(1);
17
+ }
18
+ process.exit(0);
19
+ }
20
+ if (rejectId) {
21
+ const updated = updateStagedStatus(rejectId, 'rejected');
22
+ if (updated) {
23
+ console.log(` Rejected: ${rejectId}`);
24
+ cleanRejected();
25
+ }
26
+ else {
27
+ console.error(` Not found: ${rejectId}`);
28
+ process.exit(1);
29
+ }
30
+ process.exit(0);
31
+ }
32
+ if (promoteMode) {
33
+ if (!isLocal) {
34
+ console.log(' Catalog promotion is for contributors who want to upstream templates.');
35
+ console.log(' Use --local (default) to write templates to your project.');
36
+ process.exit(0);
37
+ }
38
+ const promoted = promoteLocal();
39
+ if (promoted.length === 0) {
40
+ console.log(' No approved proposals to promote.');
41
+ }
42
+ else {
43
+ console.log(` Promoted ${promoted.length} template(s) to templates/:`);
44
+ for (const name of promoted) {
45
+ console.log(` ${name}`);
46
+ }
47
+ }
48
+ process.exit(0);
49
+ }
50
+ // Default: list mode
51
+ const staged = listStaged();
52
+ if (staged.length === 0) {
53
+ console.log(" No staged proposals. Run 'kern evolve <dir>' to detect gaps.");
54
+ process.exit(0);
55
+ }
56
+ console.log(`\n KERN evolve:review — ${staged.length} proposal(s)\n`);
57
+ for (const s of staged) {
58
+ console.log(formatSplitView(s));
59
+ console.log('');
60
+ }
61
+ process.exit(0);
62
+ }
63
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../src/commands/evolve/review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runReview(args: string[]): Promise<void>;