@kernlang/evolve 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.
- package/LICENSE +17 -0
- package/dist/concept-gap-adapter.js +1 -1
- package/dist/concept-gap-adapter.js.map +1 -1
- package/dist/detector-registry.js +1 -1
- package/dist/detector-registry.js.map +1 -1
- package/dist/detectors/animation.js +4 -8
- package/dist/detectors/animation.js.map +1 -1
- package/dist/detectors/data-fetching.js +3 -5
- package/dist/detectors/data-fetching.js.map +1 -1
- package/dist/detectors/express-middleware.js +4 -4
- package/dist/detectors/express-middleware.js.map +1 -1
- package/dist/detectors/react-forms.js +5 -3
- package/dist/detectors/react-forms.js.map +1 -1
- package/dist/detectors/schema-validation.js +2 -2
- package/dist/detectors/schema-validation.js.map +1 -1
- package/dist/detectors/state-mgmt.js +2 -3
- package/dist/detectors/state-mgmt.js.map +1 -1
- package/dist/detectors/structural.js +37 -23
- package/dist/detectors/structural.js.map +1 -1
- package/dist/detectors/testing.js +1 -1
- package/dist/detectors/testing.js.map +1 -1
- package/dist/detectors/vue-composables.js +4 -2
- package/dist/detectors/vue-composables.js.map +1 -1
- package/dist/evolve-dedup.js.map +1 -1
- package/dist/evolve-rollback.js +2 -2
- package/dist/evolve-rollback.js.map +1 -1
- package/dist/evolve-runner.js +24 -23
- package/dist/evolve-runner.js.map +1 -1
- package/dist/evolve-validator-v4.js +4 -5
- package/dist/evolve-validator-v4.js.map +1 -1
- package/dist/evolved-node-loader.js +4 -4
- package/dist/evolved-node-loader.js.map +1 -1
- package/dist/expressibility-scorer.d.ts +1 -1
- package/dist/expressibility-scorer.js +2 -3
- package/dist/expressibility-scorer.js.map +1 -1
- package/dist/gap-detector.d.ts +1 -1
- package/dist/gap-detector.js +2 -2
- package/dist/gap-detector.js.map +1 -1
- package/dist/golden-test-runner.js +4 -5
- package/dist/golden-test-runner.js.map +1 -1
- package/dist/graduation.d.ts +1 -1
- package/dist/graduation.js +4 -4
- package/dist/graduation.js.map +1 -1
- package/dist/index.d.ts +24 -24
- package/dist/index.js +35 -34
- package/dist/index.js.map +1 -1
- package/dist/llm-discovery.d.ts +1 -1
- package/dist/llm-discovery.js +16 -8
- package/dist/llm-discovery.js.map +1 -1
- package/dist/llm-provider.js +4 -4
- package/dist/llm-provider.js.map +1 -1
- package/dist/node-governance.js.map +1 -1
- package/dist/node-proposer.d.ts +3 -3
- package/dist/node-proposer.js +4 -9
- package/dist/node-proposer.js.map +1 -1
- package/dist/node-validator.js +1 -1
- package/dist/node-validator.js.map +1 -1
- package/dist/pattern-analyzer.d.ts +1 -1
- package/dist/pattern-analyzer.js +25 -23
- package/dist/pattern-analyzer.js.map +1 -1
- package/dist/quality-scorer.d.ts +1 -1
- package/dist/quality-scorer.js +7 -7
- package/dist/quality-scorer.js.map +1 -1
- package/dist/sandboxed-generator.js +21 -18
- package/dist/sandboxed-generator.js.map +1 -1
- package/dist/staging.d.ts +2 -2
- package/dist/staging.js +14 -11
- package/dist/staging.js.map +1 -1
- package/dist/template-proposer.js +1 -1
- package/dist/template-proposer.js.map +1 -1
- package/dist/template-validator.js +17 -17
- package/dist/template-validator.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -10,49 +10,50 @@
|
|
|
10
10
|
* registerDetector(pack) — register custom detector
|
|
11
11
|
* loadBuiltinDetectors() — load all built-in detectors
|
|
12
12
|
*/
|
|
13
|
-
// Detector Registry
|
|
14
|
-
export { registerDetector, unregisterDetector, getDetector, getAllDetectors, getDetectorsForImport, getUniversalDetectors, clearDetectors, detectorCount, loadBuiltinDetectors, registerDetectors, } from './detector-registry.js';
|
|
15
|
-
// Gap Detector
|
|
16
|
-
export { detectGaps, detectGapsInFiles, detectGapsFromSource, resetGapIds } from './gap-detector.js';
|
|
17
13
|
// Concept Gap Adapter
|
|
18
14
|
export { detectConceptualGaps, resetConceptGapIds } from './concept-gap-adapter.js';
|
|
19
|
-
//
|
|
20
|
-
export {
|
|
21
|
-
//
|
|
22
|
-
export {
|
|
23
|
-
// Template Proposer
|
|
24
|
-
export { proposeTemplates, generateKernSource } from './template-proposer.js';
|
|
25
|
-
// Template Validator
|
|
26
|
-
export { validateProposal } from './template-validator.js';
|
|
27
|
-
// Staging
|
|
28
|
-
export { stageProposal, listStaged, getStaged, updateStagedStatus, promoteLocal, cleanRejected, formatSplitView,
|
|
29
|
-
// v3 node staging
|
|
30
|
-
stageNodeProposal, listStagedNodes, updateStagedNodeStatus, formatNodeSplitView,
|
|
31
|
-
// v4 evolve staging
|
|
32
|
-
stageEvolveV4Proposal, listStagedEvolveV4, getStagedEvolveV4, updateStagedEvolveV4Status, cleanRejectedEvolveV4, cleanApprovedEvolveV4, formatEvolveV4SplitView, } from './staging.js';
|
|
15
|
+
// Detector Registry
|
|
16
|
+
export { clearDetectors, detectorCount, getAllDetectors, getDetector, getDetectorsForImport, getUniversalDetectors, loadBuiltinDetectors, registerDetector, registerDetectors, unregisterDetector, } from './detector-registry.js';
|
|
17
|
+
// Evolve Runner (main entry points)
|
|
18
|
+
export { evolve, evolveSource } from './evolve-runner.js';
|
|
33
19
|
// Expressibility Scorer (v3)
|
|
34
|
-
export {
|
|
35
|
-
//
|
|
36
|
-
export {
|
|
20
|
+
export { EXPRESSIBILITY_NODE_THRESHOLD, isNodeCandidate, scoreExpressibility, } from './expressibility-scorer.js';
|
|
21
|
+
// Gap Detector
|
|
22
|
+
export { detectGaps, detectGapsFromSource, detectGapsInFiles, resetGapIds } from './gap-detector.js';
|
|
37
23
|
// Node Governance (v3)
|
|
38
|
-
export {
|
|
24
|
+
export { getGovernanceThresholds, governanceGate } from './node-governance.js';
|
|
25
|
+
// Node Proposer (v3)
|
|
26
|
+
export { deriveNodeName as deriveNodeProposalName, proposeNodes, resetNodeProposalIds } from './node-proposer.js';
|
|
39
27
|
// Node Validator (v3)
|
|
40
28
|
export { validateNodeProposal } from './node-validator.js';
|
|
41
|
-
//
|
|
42
|
-
export {
|
|
43
|
-
//
|
|
44
|
-
export {
|
|
45
|
-
//
|
|
46
|
-
export {
|
|
29
|
+
// Pattern Analyzer
|
|
30
|
+
export { analyzePatterns, analyzeStructuralPatterns, computeStructuralHash, deriveTemplateName, } from './pattern-analyzer.js';
|
|
31
|
+
// Quality Scorer
|
|
32
|
+
export { DEFAULT_THRESHOLDS, passesThresholds, scorePattern } from './quality-scorer.js';
|
|
33
|
+
// Staging
|
|
34
|
+
export { cleanApprovedEvolveV4, cleanRejected, cleanRejectedEvolveV4, formatEvolveV4SplitView, formatNodeSplitView, formatSplitView, getStaged, getStagedEvolveV4, listStaged, listStagedEvolveV4, listStagedNodes, promoteLocal,
|
|
35
|
+
// v4 evolve staging
|
|
36
|
+
stageEvolveV4Proposal,
|
|
37
|
+
// v3 node staging
|
|
38
|
+
stageNodeProposal, stageProposal, updateStagedEvolveV4Status, updateStagedNodeStatus, updateStagedStatus, } from './staging.js';
|
|
39
|
+
// Template Proposer
|
|
40
|
+
export { generateKernSource, proposeTemplates } from './template-proposer.js';
|
|
41
|
+
// Template Validator
|
|
42
|
+
export { validateProposal } from './template-validator.js';
|
|
43
|
+
// ── Evolve v4 — Self-Extending IR ───────────────────────────────────────
|
|
44
|
+
export { checkDedup } from './evolve-dedup.js';
|
|
45
|
+
// Rollback + Prune + Migrate
|
|
46
|
+
export { detectCollisions, findUsages, pruneNodes, renameEvolvedNode, restoreNode, rollbackNode, } from './evolve-rollback.js';
|
|
47
47
|
// v4 Validation
|
|
48
48
|
export { validateEvolveProposal } from './evolve-validator-v4.js';
|
|
49
|
-
|
|
50
|
-
export {
|
|
49
|
+
// Evolved Node Loader
|
|
50
|
+
export { clearEvolvedNodes, evolvedNodeCount, getEvolvedGenerator, getEvolvedKeywords, getParserHints as getEvolvedParserHints, hasEvolvedNodes, loadEvolvedNodes, readManifest as readEvolvedManifest, readNodeDefinition, rebuildManifest as rebuildEvolvedManifest, } from './evolved-node-loader.js';
|
|
51
|
+
export { compareGoldenOutput, formatGoldenTestResults, runGoldenTests } from './golden-test-runner.js';
|
|
51
52
|
// Graduation
|
|
52
|
-
export {
|
|
53
|
-
// Rollback + Prune + Migrate
|
|
54
|
-
export { rollbackNode, restoreNode, findUsages, pruneNodes, detectCollisions, renameEvolvedNode } from './evolve-rollback.js';
|
|
53
|
+
export { compileCodegenToJS, graduateNode, promoteNode } from './graduation.js';
|
|
55
54
|
// LLM Discovery
|
|
56
|
-
export {
|
|
55
|
+
export { buildBackfillPrompt, buildDiscoveryPrompt, buildRetryPrompt, collectTsFiles, estimateTokens, parseDiscoveryResponse, selectRepresentativeFiles, } from './llm-discovery.js';
|
|
57
56
|
export { createLLMProvider, TokenBudget } from './llm-provider.js';
|
|
57
|
+
// Sandboxed Generator
|
|
58
|
+
export { compileSandboxedGenerator, getCodegenHelpers, loadSandboxedGenerator } from './sandboxed-generator.js';
|
|
58
59
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/llm-discovery.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Offline-safe: this module only constructs prompts and parses responses.
|
|
8
8
|
* The actual LLM call is handled by llm-provider.ts.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
10
|
+
import type { EvolvedNodeProp, EvolveNodeProposal } from './evolved-types.js';
|
|
11
11
|
/**
|
|
12
12
|
* Select representative TypeScript files, clustered by directory.
|
|
13
13
|
* Returns batches of 3-5 files suitable for LLM context.
|
package/dist/llm-discovery.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* The actual LLM call is handled by llm-provider.ts.
|
|
9
9
|
*/
|
|
10
10
|
import { readdirSync, statSync } from 'fs';
|
|
11
|
-
import {
|
|
11
|
+
import { dirname, join, resolve } from 'path';
|
|
12
12
|
// ── File Selection ───────────────────────────────────────────────────────
|
|
13
13
|
/**
|
|
14
14
|
* Select representative TypeScript files, clustered by directory.
|
|
@@ -29,7 +29,7 @@ export function selectRepresentativeFiles(filePaths, maxPerCluster = 3, maxBatch
|
|
|
29
29
|
}
|
|
30
30
|
// Sample from each cluster: pick diverse files (by size variance)
|
|
31
31
|
const sampled = [];
|
|
32
|
-
for (const [
|
|
32
|
+
for (const [_dir, files] of clusters) {
|
|
33
33
|
// Sort by file size (descending) to get diverse samples
|
|
34
34
|
const sorted = [...files].sort((a, b) => {
|
|
35
35
|
try {
|
|
@@ -96,7 +96,9 @@ export function collectTsFiles(dir, recursive = true) {
|
|
|
96
96
|
* Build the LLM discovery prompt for a batch of files.
|
|
97
97
|
*/
|
|
98
98
|
export function buildDiscoveryPrompt(files, nodeTypes, evolvedKeywords = []) {
|
|
99
|
-
const fileBlocks = files
|
|
99
|
+
const fileBlocks = files
|
|
100
|
+
.map((f) => `### ${f.path}\n\`\`\`typescript\n${truncate(f.content, 3000)}\n\`\`\``)
|
|
101
|
+
.join('\n\n');
|
|
100
102
|
const existingNodes = [...nodeTypes, ...evolvedKeywords].join(', ');
|
|
101
103
|
return `You are analyzing TypeScript source files to find repeating structural patterns that a language called KERN cannot yet express.
|
|
102
104
|
|
|
@@ -200,7 +202,11 @@ function normalizeProposal(raw, evolveRunId) {
|
|
|
200
202
|
if (!keyword || typeof keyword !== 'string')
|
|
201
203
|
return null;
|
|
202
204
|
// Normalize keyword to lowercase with hyphens
|
|
203
|
-
const normalizedKeyword = keyword
|
|
205
|
+
const normalizedKeyword = keyword
|
|
206
|
+
.toLowerCase()
|
|
207
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
208
|
+
.replace(/-+/g, '-')
|
|
209
|
+
.replace(/^-|-$/g, '');
|
|
204
210
|
if (!normalizedKeyword)
|
|
205
211
|
return null;
|
|
206
212
|
const reason = raw.reason || {};
|
|
@@ -234,9 +240,11 @@ function normalizeProps(raw) {
|
|
|
234
240
|
return [];
|
|
235
241
|
return raw
|
|
236
242
|
.filter((p) => p !== null && typeof p === 'object')
|
|
237
|
-
.map(p => ({
|
|
243
|
+
.map((p) => ({
|
|
238
244
|
name: p.name || 'unknown',
|
|
239
|
-
type: (['string', 'boolean', 'number', 'expression'].includes(p.type)
|
|
245
|
+
type: (['string', 'boolean', 'number', 'expression'].includes(p.type)
|
|
246
|
+
? p.type
|
|
247
|
+
: 'string'),
|
|
240
248
|
required: p.required === true,
|
|
241
249
|
description: p.description || '',
|
|
242
250
|
}));
|
|
@@ -245,7 +253,7 @@ function normalizeProps(raw) {
|
|
|
245
253
|
function truncate(content, maxChars) {
|
|
246
254
|
if (content.length <= maxChars)
|
|
247
255
|
return content;
|
|
248
|
-
return content.slice(0, maxChars)
|
|
256
|
+
return `${content.slice(0, maxChars)}\n// ... truncated ...`;
|
|
249
257
|
}
|
|
250
258
|
/**
|
|
251
259
|
* Estimate token count for a string (rough: 1 token ≈ 4 chars).
|
|
@@ -312,7 +320,7 @@ export function buildBackfillPrompt(keyword, definition, target) {
|
|
|
312
320
|
Target: ${target}
|
|
313
321
|
|
|
314
322
|
## Props
|
|
315
|
-
${definition.props.map(p => `- ${p.name} (${p.type}${p.required ? ', required' : ''}): ${p.description}`).join('\n')}
|
|
323
|
+
${definition.props.map((p) => `- ${p.name} (${p.type}${p.required ? ', required' : ''}): ${p.description}`).join('\n')}
|
|
316
324
|
|
|
317
325
|
## Child Types
|
|
318
326
|
${definition.childTypes.join(', ') || '(none)'}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-discovery.js","sourceRoot":"","sources":["../src/llm-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG9C,4EAA4E;AAE5E;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,
|
|
1
|
+
{"version":3,"file":"llm-discovery.js","sourceRoot":"","sources":["../src/llm-discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/llm-provider.js
CHANGED
|
@@ -55,7 +55,7 @@ function createOpenAIProvider(options) {
|
|
|
55
55
|
const text = await response.text();
|
|
56
56
|
throw new Error(`OpenAI API error ${response.status}: ${text}`);
|
|
57
57
|
}
|
|
58
|
-
const data = await response.json();
|
|
58
|
+
const data = (await response.json());
|
|
59
59
|
return data.choices[0]?.message?.content || '';
|
|
60
60
|
},
|
|
61
61
|
};
|
|
@@ -86,7 +86,7 @@ function createAnthropicProvider(options) {
|
|
|
86
86
|
const text = await response.text();
|
|
87
87
|
throw new Error(`Anthropic API error ${response.status}: ${text}`);
|
|
88
88
|
}
|
|
89
|
-
const data = await response.json();
|
|
89
|
+
const data = (await response.json());
|
|
90
90
|
return data.content[0]?.text || '';
|
|
91
91
|
},
|
|
92
92
|
};
|
|
@@ -110,7 +110,7 @@ function createOllamaProvider(options) {
|
|
|
110
110
|
const text = await response.text();
|
|
111
111
|
throw new Error(`Ollama error ${response.status}: ${text}`);
|
|
112
112
|
}
|
|
113
|
-
const data = await response.json();
|
|
113
|
+
const data = (await response.json());
|
|
114
114
|
return data.response || '';
|
|
115
115
|
},
|
|
116
116
|
};
|
|
@@ -137,7 +137,7 @@ export class TokenBudget {
|
|
|
137
137
|
return this.used;
|
|
138
138
|
}
|
|
139
139
|
toString() {
|
|
140
|
-
return `${this.used}/${this.limit} tokens (${Math.round(this.used / this.limit * 100)}%)`;
|
|
140
|
+
return `${this.used}/${this.limit} tokens (${Math.round((this.used / this.limit) * 100)}%)`;
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
//# sourceMappingURL=llm-provider.js.map
|
package/dist/llm-provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../src/llm-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC;IAEtD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,WAAW;YACd,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvC;YACE,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../src/llm-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-governance.js","sourceRoot":"","sources":["../src/node-governance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,oBAAoB;AACnD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,QAAQ,CAAC,SAAS,GAAG,aAAa,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,SAAS,MAAM,aAAa,wBAAwB,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,GAAG,kBAAkB,EAAE,CAAC;QAC9D,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"node-governance.js","sourceRoot":"","sources":["../src/node-governance.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,oBAAoB;AACnD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,QAAQ,CAAC,SAAS,GAAG,aAAa,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,SAAS,MAAM,aAAa,wBAAwB,CAAC,CAAC;IAC3F,CAAC;IAED,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,GAAG,kBAAkB,EAAE,CAAC;QAC9D,OAAO,CAAC,IAAI,CACV,kBAAkB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,MAAM,kBAAkB,2BAA2B,CAC1G,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,YAAY,GAAG,iBAAiB,EAAE,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,YAAY,MAAM,iBAAiB,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,wEAAwE;IACxE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IAC7D,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,mBAAmB,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,mBAAmB,WAAW,IAAI,mBAAmB,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC1B,OAAO;KACR,CAAC;AACJ,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,YAAY,EAAE,aAAa;QAC3B,iBAAiB,EAAE,kBAAkB;QACrC,iBAAiB,EAAE,mBAAmB;QACtC,eAAe,EAAE,iBAAiB;KACnC,CAAC;AACJ,CAAC"}
|
package/dist/node-proposer.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Deterministic: no LLM needed (--llm is optional enhancement).
|
|
5
5
|
* Maps detected structural patterns to proposed KERN node types.
|
|
6
6
|
*/
|
|
7
|
-
import type { AnalyzedPattern,
|
|
7
|
+
import type { AnalyzedPattern, ExpressibilityScore, NodeProposal } from './types.js';
|
|
8
8
|
export declare function resetNodeProposalIds(): void;
|
|
9
9
|
/**
|
|
10
10
|
* Derive a KERN node name from a structural pattern's detector ID.
|
|
@@ -13,11 +13,11 @@ export declare function deriveNodeName(pattern: AnalyzedPattern): string;
|
|
|
13
13
|
/**
|
|
14
14
|
* Generate example KERN syntax for a proposed node.
|
|
15
15
|
*/
|
|
16
|
-
export declare function generateKernSyntaxExample(nodeName: string,
|
|
16
|
+
export declare function generateKernSyntaxExample(nodeName: string, _pattern: AnalyzedPattern): string;
|
|
17
17
|
/**
|
|
18
18
|
* Generate a codegen stub for a proposed node.
|
|
19
19
|
*/
|
|
20
|
-
export declare function generateCodegenStub(nodeName: string,
|
|
20
|
+
export declare function generateCodegenStub(nodeName: string, _pattern: AnalyzedPattern): string;
|
|
21
21
|
/**
|
|
22
22
|
* Propose new IR nodes from analyzed structural patterns.
|
|
23
23
|
*
|
package/dist/node-proposer.js
CHANGED
|
@@ -35,15 +35,13 @@ export function deriveNodeName(pattern) {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
// Fallback: derive from template name
|
|
38
|
-
const cleaned = pattern.templateName
|
|
39
|
-
.replace(/^structural-?/, '')
|
|
40
|
-
.replace(/-\w+$/, '');
|
|
38
|
+
const cleaned = pattern.templateName.replace(/^structural-?/, '').replace(/-\w+$/, '');
|
|
41
39
|
return cleaned || 'unknown';
|
|
42
40
|
}
|
|
43
41
|
/**
|
|
44
42
|
* Generate example KERN syntax for a proposed node.
|
|
45
43
|
*/
|
|
46
|
-
export function generateKernSyntaxExample(nodeName,
|
|
44
|
+
export function generateKernSyntaxExample(nodeName, _pattern) {
|
|
47
45
|
const examples = {
|
|
48
46
|
model: [
|
|
49
47
|
`model name=Example table=examples`,
|
|
@@ -65,10 +63,7 @@ export function generateKernSyntaxExample(nodeName, pattern) {
|
|
|
65
63
|
` entry name=item key="ex:{id}"`,
|
|
66
64
|
` strategy read-through`,
|
|
67
65
|
].join('\n'),
|
|
68
|
-
conditional: [
|
|
69
|
-
`conditional if=isEnabled`,
|
|
70
|
-
` text value="Feature enabled"`,
|
|
71
|
-
].join('\n'),
|
|
66
|
+
conditional: [`conditional if=isEnabled`, ` text value="Feature enabled"`].join('\n'),
|
|
72
67
|
select: [
|
|
73
68
|
`select name=status value=current placeholder="Choose"`,
|
|
74
69
|
` option value=active label="Active"`,
|
|
@@ -80,7 +75,7 @@ export function generateKernSyntaxExample(nodeName, pattern) {
|
|
|
80
75
|
/**
|
|
81
76
|
* Generate a codegen stub for a proposed node.
|
|
82
77
|
*/
|
|
83
|
-
export function generateCodegenStub(nodeName,
|
|
78
|
+
export function generateCodegenStub(nodeName, _pattern) {
|
|
84
79
|
const fnName = `generate${nodeName[0].toUpperCase()}${nodeName.slice(1)}`;
|
|
85
80
|
return [
|
|
86
81
|
`export function ${fnName}(node: IRNode): string[] {`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-proposer.js","sourceRoot":"","sources":["../src/node-proposer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAE7B,SAAS,kBAAkB;IACzB,OAAO,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,oBAAoB,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwB;IACrD,oFAAoF;IACpF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC;IAExG,MAAM,OAAO,GAA2B;QACtC,kBAAkB,EAAE,OAAO;QAC3B,uBAAuB,EAAE,YAAY;QACrC,uBAAuB,EAAE,YAAY;QACrC,kBAAkB,EAAE,OAAO;QAC3B,wBAAwB,EAAE,aAAa;QACvC,mBAAmB,EAAE,QAAQ;KAC9B,CAAC;IAEF,uCAAuC;IACvC,IAAI,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpD,kCAAkC;IAClC,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY
|
|
1
|
+
{"version":3,"file":"node-proposer.js","sourceRoot":"","sources":["../src/node-proposer.ts"],"names":[],"mappings":"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"}
|
package/dist/node-validator.js
CHANGED
|
@@ -33,7 +33,7 @@ function validateKernSyntax(syntax, errors) {
|
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
// Check the syntax has proper indentation structure
|
|
36
|
-
const lines = syntax.split('\n').filter(l => l.trim().length > 0);
|
|
36
|
+
const lines = syntax.split('\n').filter((l) => l.trim().length > 0);
|
|
37
37
|
if (lines.length === 0) {
|
|
38
38
|
errors.push('KERN syntax has no non-empty lines');
|
|
39
39
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-validator.js","sourceRoot":"","sources":["../src/node-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAsB;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,0DAA0D;IAC1D,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhE,+CAA+C;IAC/C,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEvF,2BAA2B;IAC3B,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAErD,OAAO;QACL,OAAO;QACP,SAAS;QACT,cAAc;QACd,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,MAAgB;IAC1D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"node-validator.js","sourceRoot":"","sources":["../src/node-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAsB;IACzD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,0DAA0D;IAC1D,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEhE,+CAA+C;IAC/C,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEvF,2BAA2B;IAC3B,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAErD,OAAO;QACL,OAAO;QACP,SAAS;QACT,cAAc;QACd,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,MAAgB;IAC1D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,2DAA2D,SAAS,GAAG,CAAC,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAgB;IAC3E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,MAAM,UAAU,GAAG,WAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,gDAAgD,UAAU,EAAE,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAsB;IACjD,+CAA+C;IAC/C,qCAAqC;IACrC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,6BAA6B;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1C,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Groups gaps by structural hash, deduplicates, scores, and selects
|
|
5
5
|
* representative examples for template generation.
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
7
|
+
import type { AnalyzedPattern, PatternGap, QualityThresholds } from './types.js';
|
|
8
8
|
/**
|
|
9
9
|
* Compute a structural hash for a pattern gap.
|
|
10
10
|
*
|
package/dist/pattern-analyzer.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* representative examples for template generation.
|
|
6
6
|
*/
|
|
7
7
|
import { createHash } from 'crypto';
|
|
8
|
-
import {
|
|
8
|
+
import { DEFAULT_THRESHOLDS, passesThresholds, scorePattern } from './quality-scorer.js';
|
|
9
9
|
/**
|
|
10
10
|
* Compute a structural hash for a pattern gap.
|
|
11
11
|
*
|
|
@@ -15,7 +15,7 @@ import { scorePattern, passesThresholds, DEFAULT_THRESHOLDS } from './quality-sc
|
|
|
15
15
|
export function computeStructuralHash(gap) {
|
|
16
16
|
// Normalize: replace variable values with slot types
|
|
17
17
|
const paramSignature = gap.extractedParams
|
|
18
|
-
.map(p => `${p.name}:${p.slotType}`)
|
|
18
|
+
.map((p) => `${p.name}:${p.slotType}`)
|
|
19
19
|
.sort()
|
|
20
20
|
.join('|');
|
|
21
21
|
// The hash key: detector + pattern structure (not values)
|
|
@@ -31,7 +31,7 @@ export function deriveTemplateName(gap) {
|
|
|
31
31
|
// Start with detector ID which is already descriptive
|
|
32
32
|
const base = gap.detectorId;
|
|
33
33
|
// Look for a key identifier param (the main "name" param)
|
|
34
|
-
const nameParam = gap.extractedParams.find(p => p.slotType === 'identifier' && !p.optional);
|
|
34
|
+
const nameParam = gap.extractedParams.find((p) => p.slotType === 'identifier' && !p.optional);
|
|
35
35
|
// If there's a clear naming pattern, use it
|
|
36
36
|
if (nameParam) {
|
|
37
37
|
// e.g., react-hook-form + useForm → rhf-useform
|
|
@@ -45,16 +45,16 @@ function abbreviateLibrary(name) {
|
|
|
45
45
|
// Common abbreviations
|
|
46
46
|
const abbrevs = {
|
|
47
47
|
'React Hook Form': 'rhf',
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
Formik: 'formik',
|
|
49
|
+
Recoil: 'recoil',
|
|
50
50
|
'Redux Toolkit': 'rtk',
|
|
51
51
|
'Framer Motion': 'motion',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
Axios: 'axios',
|
|
53
|
+
Ky: 'ky',
|
|
54
|
+
Yup: 'yup',
|
|
55
|
+
Valibot: 'valibot',
|
|
56
56
|
'Express Middleware': 'express-mw',
|
|
57
|
-
|
|
57
|
+
VueUse: 'vueuse',
|
|
58
58
|
'Testing Library': 'rtl',
|
|
59
59
|
};
|
|
60
60
|
return abbrevs[name] || name.toLowerCase().replace(/\s+/g, '-');
|
|
@@ -64,24 +64,26 @@ function abbreviateLibrary(name) {
|
|
|
64
64
|
*/
|
|
65
65
|
function extractImports(gap) {
|
|
66
66
|
// The anchor import tells us what to import
|
|
67
|
-
return [
|
|
67
|
+
return [
|
|
68
|
+
{
|
|
68
69
|
from: gap.anchorImport.includes('/') ? gap.anchorImport : guessImportSource(gap),
|
|
69
70
|
names: [gap.anchorImport],
|
|
70
|
-
}
|
|
71
|
+
},
|
|
72
|
+
];
|
|
71
73
|
}
|
|
72
74
|
function guessImportSource(gap) {
|
|
73
75
|
// Map library names to package names
|
|
74
76
|
const packageMap = {
|
|
75
77
|
'React Hook Form': 'react-hook-form',
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
Formik: 'formik',
|
|
79
|
+
Recoil: 'recoil',
|
|
78
80
|
'Redux Toolkit': '@reduxjs/toolkit',
|
|
79
81
|
'Framer Motion': 'framer-motion',
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
Axios: 'axios',
|
|
83
|
+
Ky: 'ky',
|
|
84
|
+
Yup: 'yup',
|
|
85
|
+
Valibot: 'valibot',
|
|
86
|
+
VueUse: '@vueuse/core',
|
|
85
87
|
'Testing Library': '@testing-library/react',
|
|
86
88
|
};
|
|
87
89
|
return packageMap[gap.libraryName] || gap.libraryName.toLowerCase();
|
|
@@ -135,7 +137,7 @@ function mergeParams(gaps) {
|
|
|
135
137
|
* Analyze structural gaps separately for v3 node proposals.
|
|
136
138
|
*/
|
|
137
139
|
export function analyzeStructuralPatterns(gaps, thresholds = DEFAULT_THRESHOLDS) {
|
|
138
|
-
const structuralGaps = gaps.filter(g => g.libraryName === 'structural');
|
|
140
|
+
const structuralGaps = gaps.filter((g) => g.libraryName === 'structural');
|
|
139
141
|
return groupAndScore(structuralGaps, thresholds);
|
|
140
142
|
}
|
|
141
143
|
/**
|
|
@@ -143,7 +145,7 @@ export function analyzeStructuralPatterns(gaps, thresholds = DEFAULT_THRESHOLDS)
|
|
|
143
145
|
*/
|
|
144
146
|
export function analyzePatterns(gaps, thresholds = DEFAULT_THRESHOLDS) {
|
|
145
147
|
// Structural gaps are findings, not template proposal candidates — filter them out
|
|
146
|
-
const templateGaps = gaps.filter(g => g.libraryName !== 'structural');
|
|
148
|
+
const templateGaps = gaps.filter((g) => g.libraryName !== 'structural');
|
|
147
149
|
return groupAndScore(templateGaps, thresholds);
|
|
148
150
|
}
|
|
149
151
|
function groupAndScore(gaps, thresholds) {
|
|
@@ -156,7 +158,7 @@ function groupAndScore(gaps, thresholds) {
|
|
|
156
158
|
groups.set(key, group);
|
|
157
159
|
}
|
|
158
160
|
const patterns = [];
|
|
159
|
-
for (const [
|
|
161
|
+
for (const [_key, groupGaps] of groups) {
|
|
160
162
|
const representative = groupGaps[0];
|
|
161
163
|
const hash = computeStructuralHash(representative);
|
|
162
164
|
const qualityScore = scorePattern(groupGaps, thresholds);
|
|
@@ -172,7 +174,7 @@ function groupAndScore(gaps, thresholds) {
|
|
|
172
174
|
representativeSnippet: representative.snippet,
|
|
173
175
|
goldenExample: buildGoldenExample(representative),
|
|
174
176
|
imports: extractImports(representative),
|
|
175
|
-
gapIds: groupGaps.map(g => g.id),
|
|
177
|
+
gapIds: groupGaps.map((g) => g.id),
|
|
176
178
|
});
|
|
177
179
|
}
|
|
178
180
|
patterns.sort((a, b) => b.qualityScore.overallScore - a.qualityScore.overallScore);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-analyzer.js","sourceRoot":"","sources":["../src/pattern-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"pattern-analyzer.js","sourceRoot":"","sources":["../src/pattern-analyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/quality-scorer.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const DEFAULT_THRESHOLDS: QualityThresholds;
|
|
|
9
9
|
/**
|
|
10
10
|
* Calculate quality score for a group of pattern gaps (same structural pattern).
|
|
11
11
|
*/
|
|
12
|
-
export declare function scorePattern(gaps: PatternGap[],
|
|
12
|
+
export declare function scorePattern(gaps: PatternGap[], _thresholds?: QualityThresholds): QualityScore;
|
|
13
13
|
/**
|
|
14
14
|
* Check if a quality score passes the configured thresholds.
|
|
15
15
|
*/
|
package/dist/quality-scorer.js
CHANGED
|
@@ -13,7 +13,7 @@ export const DEFAULT_THRESHOLDS = {
|
|
|
13
13
|
/**
|
|
14
14
|
* Calculate quality score for a group of pattern gaps (same structural pattern).
|
|
15
15
|
*/
|
|
16
|
-
export function scorePattern(gaps,
|
|
16
|
+
export function scorePattern(gaps, _thresholds = DEFAULT_THRESHOLDS) {
|
|
17
17
|
if (gaps.length === 0) {
|
|
18
18
|
return { confidence: 0, supportCount: 0, variability: 0, relevanceScore: 0, overallScore: 0 };
|
|
19
19
|
}
|
|
@@ -42,7 +42,10 @@ function calculateVariability(gaps) {
|
|
|
42
42
|
if (gaps.length <= 1)
|
|
43
43
|
return 0;
|
|
44
44
|
// Compare the number and names of extracted params across instances
|
|
45
|
-
const paramSets = gaps.map(g => g.extractedParams
|
|
45
|
+
const paramSets = gaps.map((g) => g.extractedParams
|
|
46
|
+
.map((p) => p.name)
|
|
47
|
+
.sort()
|
|
48
|
+
.join(','));
|
|
46
49
|
// Count how many unique param signatures there are
|
|
47
50
|
const uniqueSignatures = new Set(paramSets).size;
|
|
48
51
|
const variability = (uniqueSignatures - 1) / Math.max(gaps.length - 1, 1);
|
|
@@ -60,7 +63,7 @@ function calculateRelevance(gaps) {
|
|
|
60
63
|
// Multi-line patterns with params are good template candidates
|
|
61
64
|
const lineBasedScore = Math.min(avgSnippetLength / 300, 1);
|
|
62
65
|
const paramBasedScore = Math.min(avgParams / 3, 1);
|
|
63
|
-
return
|
|
66
|
+
return lineBasedScore * 0.6 + paramBasedScore * 0.4;
|
|
64
67
|
}
|
|
65
68
|
function computeOverall(confidence, supportCount, variability, relevanceScore) {
|
|
66
69
|
// Normalize confidence to 0-1
|
|
@@ -70,10 +73,7 @@ function computeOverall(confidence, supportCount, variability, relevanceScore) {
|
|
|
70
73
|
// Variability penalty (higher variability = worse)
|
|
71
74
|
const varPenalty = 1 - variability;
|
|
72
75
|
// Weighted composite
|
|
73
|
-
const overall = confNorm * 0.3 +
|
|
74
|
-
supportNorm * 0.2 +
|
|
75
|
-
varPenalty * 0.2 +
|
|
76
|
-
relevanceScore * 0.3;
|
|
76
|
+
const overall = confNorm * 0.3 + supportNorm * 0.2 + varPenalty * 0.2 + relevanceScore * 0.3;
|
|
77
77
|
return Math.round(overall * 100);
|
|
78
78
|
}
|
|
79
79
|
//# sourceMappingURL=quality-scorer.js.map
|