@kernlang/evolve 3.1.6 → 3.1.8

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 (73) hide show
  1. package/dist/concept-gap-adapter.js +1 -1
  2. package/dist/concept-gap-adapter.js.map +1 -1
  3. package/dist/detector-registry.js +1 -1
  4. package/dist/detector-registry.js.map +1 -1
  5. package/dist/detectors/animation.js +4 -8
  6. package/dist/detectors/animation.js.map +1 -1
  7. package/dist/detectors/data-fetching.js +3 -5
  8. package/dist/detectors/data-fetching.js.map +1 -1
  9. package/dist/detectors/express-middleware.js +4 -4
  10. package/dist/detectors/express-middleware.js.map +1 -1
  11. package/dist/detectors/react-forms.js +5 -3
  12. package/dist/detectors/react-forms.js.map +1 -1
  13. package/dist/detectors/schema-validation.js +2 -2
  14. package/dist/detectors/schema-validation.js.map +1 -1
  15. package/dist/detectors/state-mgmt.js +2 -3
  16. package/dist/detectors/state-mgmt.js.map +1 -1
  17. package/dist/detectors/structural.js +37 -23
  18. package/dist/detectors/structural.js.map +1 -1
  19. package/dist/detectors/testing.js +1 -1
  20. package/dist/detectors/testing.js.map +1 -1
  21. package/dist/detectors/vue-composables.js +4 -2
  22. package/dist/detectors/vue-composables.js.map +1 -1
  23. package/dist/evolve-dedup.js.map +1 -1
  24. package/dist/evolve-rollback.js +2 -2
  25. package/dist/evolve-rollback.js.map +1 -1
  26. package/dist/evolve-runner.js +24 -23
  27. package/dist/evolve-runner.js.map +1 -1
  28. package/dist/evolve-validator-v4.js +4 -5
  29. package/dist/evolve-validator-v4.js.map +1 -1
  30. package/dist/evolved-node-loader.js +4 -4
  31. package/dist/evolved-node-loader.js.map +1 -1
  32. package/dist/expressibility-scorer.d.ts +1 -1
  33. package/dist/expressibility-scorer.js +2 -3
  34. package/dist/expressibility-scorer.js.map +1 -1
  35. package/dist/gap-detector.d.ts +1 -1
  36. package/dist/gap-detector.js +2 -2
  37. package/dist/gap-detector.js.map +1 -1
  38. package/dist/golden-test-runner.js +4 -5
  39. package/dist/golden-test-runner.js.map +1 -1
  40. package/dist/graduation.d.ts +1 -1
  41. package/dist/graduation.js +4 -4
  42. package/dist/graduation.js.map +1 -1
  43. package/dist/index.d.ts +24 -24
  44. package/dist/index.js +35 -34
  45. package/dist/index.js.map +1 -1
  46. package/dist/llm-discovery.d.ts +24 -1
  47. package/dist/llm-discovery.js +68 -8
  48. package/dist/llm-discovery.js.map +1 -1
  49. package/dist/llm-provider.js +4 -4
  50. package/dist/llm-provider.js.map +1 -1
  51. package/dist/node-governance.js.map +1 -1
  52. package/dist/node-proposer.d.ts +3 -3
  53. package/dist/node-proposer.js +4 -9
  54. package/dist/node-proposer.js.map +1 -1
  55. package/dist/node-validator.js +1 -1
  56. package/dist/node-validator.js.map +1 -1
  57. package/dist/pattern-analyzer.d.ts +1 -1
  58. package/dist/pattern-analyzer.js +25 -23
  59. package/dist/pattern-analyzer.js.map +1 -1
  60. package/dist/quality-scorer.d.ts +1 -1
  61. package/dist/quality-scorer.js +7 -7
  62. package/dist/quality-scorer.js.map +1 -1
  63. package/dist/sandboxed-generator.js +21 -18
  64. package/dist/sandboxed-generator.js.map +1 -1
  65. package/dist/staging.d.ts +2 -2
  66. package/dist/staging.js +14 -11
  67. package/dist/staging.js.map +1 -1
  68. package/dist/template-proposer.js +1 -1
  69. package/dist/template-proposer.js.map +1 -1
  70. package/dist/template-validator.js +17 -17
  71. package/dist/template-validator.js.map +1 -1
  72. package/dist/types.d.ts +1 -1
  73. package/package.json +3 -3
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
- // Quality Scorer
20
- export { scorePattern, passesThresholds, DEFAULT_THRESHOLDS } from './quality-scorer.js';
21
- // Pattern Analyzer
22
- export { analyzePatterns, analyzeStructuralPatterns, computeStructuralHash, deriveTemplateName } from './pattern-analyzer.js';
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 { scoreExpressibility, isNodeCandidate, EXPRESSIBILITY_NODE_THRESHOLD, } from './expressibility-scorer.js';
35
- // Node Proposer (v3)
36
- export { proposeNodes, deriveNodeName as deriveNodeProposalName, resetNodeProposalIds } from './node-proposer.js';
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 { governanceGate, getGovernanceThresholds } from './node-governance.js';
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
- // Evolve Runner (main entry points)
42
- export { evolve, evolveSource } from './evolve-runner.js';
43
- // Evolved Node Loader
44
- export { loadEvolvedNodes, clearEvolvedNodes, getEvolvedGenerator, getParserHints as getEvolvedParserHints, hasEvolvedNodes, evolvedNodeCount, getEvolvedKeywords, readManifest as readEvolvedManifest, readNodeDefinition, rebuildManifest as rebuildEvolvedManifest, } from './evolved-node-loader.js';
45
- // Sandboxed Generator
46
- export { loadSandboxedGenerator, compileSandboxedGenerator, getCodegenHelpers } from './sandboxed-generator.js';
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
- export { checkDedup } from './evolve-dedup.js';
50
- export { compareGoldenOutput, runGoldenTests, formatGoldenTestResults } from './golden-test-runner.js';
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 { graduateNode, compileCodegenToJS, promoteNode } from './graduation.js';
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 { buildDiscoveryPrompt, parseDiscoveryResponse, selectRepresentativeFiles, collectTsFiles, estimateTokens, buildBackfillPrompt, buildRetryPrompt } from './llm-discovery.js';
55
+ export { buildBackfillPrompt, buildDiscoveryPrompt, buildRetryPrompt, collectTsFiles, estimateTokens, parseDiscoveryResponse, parseLLMJsonObject, selectRepresentativeFiles, validateBackfillResponse, validateRetryResponse, } 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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 { EvolveNodeProposal, EvolvedNodeProp } from './evolved-types.js';
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.
@@ -34,6 +34,29 @@ export declare function buildDiscoveryPrompt(files: Array<{
34
34
  * Handles common LLM quirks: markdown fences, preamble, trailing text.
35
35
  */
36
36
  export declare function parseDiscoveryResponse(response: string, evolveRunId?: string): EvolveNodeProposal[];
37
+ /**
38
+ * Extract and parse a JSON object from an LLM response.
39
+ * Handles markdown fences, preamble text, and validates the result is a plain object.
40
+ * Returns null if extraction or parsing fails.
41
+ */
42
+ export declare function parseLLMJsonObject(response: string): Record<string, unknown> | null;
43
+ /**
44
+ * Validate and extract a backfill LLM response.
45
+ * Returns only known fields with correct types, or null if codegenSource is missing.
46
+ */
47
+ export declare function validateBackfillResponse(parsed: Record<string, unknown>): {
48
+ codegenSource: string;
49
+ expectedOutput: string | undefined;
50
+ } | null;
51
+ /**
52
+ * Validate and extract retry response fields for an evolve proposal.
53
+ * Returns only known string fields that are present.
54
+ */
55
+ export declare function validateRetryResponse(parsed: Record<string, unknown>): {
56
+ kernExample?: string;
57
+ expectedOutput?: string;
58
+ codegenSource?: string;
59
+ };
37
60
  /**
38
61
  * Estimate token count for a string (rough: 1 token ≈ 4 chars).
39
62
  */
@@ -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 { resolve, join, dirname } from 'path';
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 [dir, files] of clusters) {
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.map(f => `### ${f.path}\n\`\`\`typescript\n${truncate(f.content, 3000)}\n\`\`\``).join('\n\n');
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.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');
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,18 +240,72 @@ 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) ? p.type : 'string'),
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
  }));
243
251
  }
252
+ // ── LLM JSON Extraction ─────────────────────────────────────────────────
253
+ /**
254
+ * Extract and parse a JSON object from an LLM response.
255
+ * Handles markdown fences, preamble text, and validates the result is a plain object.
256
+ * Returns null if extraction or parsing fails.
257
+ */
258
+ export function parseLLMJsonObject(response) {
259
+ let json = response.trim();
260
+ const fenceMatch = json.match(/```(?:json)?\s*\n?([\s\S]*?)```/);
261
+ if (fenceMatch)
262
+ json = fenceMatch[1].trim();
263
+ const objStart = json.indexOf('{');
264
+ const objEnd = json.lastIndexOf('}');
265
+ if (objStart === -1 || objEnd <= objStart)
266
+ return null;
267
+ json = json.slice(objStart, objEnd + 1);
268
+ let parsed;
269
+ try {
270
+ parsed = JSON.parse(json);
271
+ }
272
+ catch {
273
+ return null;
274
+ }
275
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
276
+ return null;
277
+ return parsed;
278
+ }
279
+ /**
280
+ * Validate and extract a backfill LLM response.
281
+ * Returns only known fields with correct types, or null if codegenSource is missing.
282
+ */
283
+ export function validateBackfillResponse(parsed) {
284
+ const codegenSource = typeof parsed.codegenSource === 'string' ? parsed.codegenSource : undefined;
285
+ if (!codegenSource)
286
+ return null;
287
+ const expectedOutput = typeof parsed.expectedOutput === 'string' ? parsed.expectedOutput : undefined;
288
+ return { codegenSource, expectedOutput };
289
+ }
290
+ /**
291
+ * Validate and extract retry response fields for an evolve proposal.
292
+ * Returns only known string fields that are present.
293
+ */
294
+ export function validateRetryResponse(parsed) {
295
+ const result = {};
296
+ if (typeof parsed.kernExample === 'string')
297
+ result.kernExample = parsed.kernExample;
298
+ if (typeof parsed.expectedOutput === 'string')
299
+ result.expectedOutput = parsed.expectedOutput;
300
+ if (typeof parsed.codegenSource === 'string')
301
+ result.codegenSource = parsed.codegenSource;
302
+ return result;
303
+ }
244
304
  // ── Utility ──────────────────────────────────────────────────────────────
245
305
  function truncate(content, maxChars) {
246
306
  if (content.length <= maxChars)
247
307
  return content;
248
- return content.slice(0, maxChars) + '\n// ... truncated ...';
308
+ return `${content.slice(0, maxChars)}\n// ... truncated ...`;
249
309
  }
250
310
  /**
251
311
  * Estimate token count for a string (rough: 1 token ≈ 4 chars).
@@ -312,7 +372,7 @@ export function buildBackfillPrompt(keyword, definition, target) {
312
372
  Target: ${target}
313
373
 
314
374
  ## Props
315
- ${definition.props.map(p => `- ${p.name} (${p.type}${p.required ? ', required' : ''}): ${p.description}`).join('\n')}
375
+ ${definition.props.map((p) => `- ${p.name} (${p.type}${p.required ? ', required' : ''}): ${p.description}`).join('\n')}
316
376
 
317
377
  ## Child Types
318
378
  ${definition.childTypes.join(', ') || '(none)'}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-discovery.js","sourceRoot":"","sources":["../src/llm-discovery.ts"],"names":[],"mappings":"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"}
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,CAAC,SAAmB,EAAE,aAAa,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC;IAChG,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,kEAAkE;IAClE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,wDAAwD;QACxD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,SAAS,GAAG,IAAI;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,IAAI,CAAC,CAAS;QACrB,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5D,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBACnG,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,CAAC;qBAAM,IACL,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC3D,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC7B,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAChC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACjC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAChC,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;QAC5E,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAE5E;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAA+C,EAC/C,SAA4B,EAC5B,kBAA4B,EAAE;IAE9B,MAAM,UAAU,GAAG,KAAK;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,uBAAuB,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;SACnF,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,MAAM,aAAa,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpE,OAAO;;;EAGP,aAAa;;;;EAIb,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA6CiE,CAAC;AAC9E,CAAC;AAED,4EAA4E;AAE5E;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAgB,EAChB,cAAsB,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;IAEzC,wBAAwB;IACxB,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,oCAAoC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE5C,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,SAAS,GAAyB,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAA+B,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kDAAkD;YAClD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAA4B,EAAE,WAAmB;IAC1E,MAAM,OAAO,GAAG,GAAG,CAAC,OAAiB,CAAC;IACtC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzD,8CAA8C;IAC9C,MAAM,iBAAiB,GAAG,OAAO;SAC9B,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,IAAI,CAAC,iBAAiB;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAI,GAAG,CAAC,MAAkC,IAAI,EAAE,CAAC;IAE7D,OAAO;QACL,EAAE,EAAE,YAAY,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;QACjD,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,iBAAiB;QAC7D,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,EAAE;QAC9C,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,KAAkB,CAAC;QAC7C,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;QACjH,WAAW,EAAG,GAAG,CAAC,WAAsB,IAAI,EAAE;QAC9C,cAAc,EAAG,GAAG,CAAC,cAAyB,IAAI,EAAE;QACpD,aAAa,EAAG,GAAG,CAAC,aAAwB,IAAI,EAAE;QAClD,WAAW,EAAE,SAAS;QACtB,eAAe,EAAE,SAAS;QAC1B,MAAM,EAAE;YACN,WAAW,EAAG,MAAM,CAAC,WAAsB,IAAI,EAAE;YACjD,YAAY,EAAG,MAAM,CAAC,YAAuB,IAAI,EAAE;YACnD,WAAW,EAAG,MAAM,CAAC,WAAsB,IAAI,EAAE;YACjD,SAAS,EAAG,MAAM,CAAC,SAAoB,IAAI,CAAC;YAC5C,QAAQ,EAAG,MAAM,CAAC,QAAmB,IAAI,CAAC;YAC1C,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;SACnE;QACD,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAc;IACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,GAAG;SACP,MAAM,CAAC,CAAC,CAAC,EAAgC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SAChF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAG,CAAC,CAAC,IAAe,IAAI,SAAS;QACrC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAc,CAAC;YAC7E,CAAC,CAAC,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,QAAQ,CAA4B;QACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI;QAC7B,WAAW,EAAG,CAAC,CAAC,WAAsB,IAAI,EAAE;KAC7C,CAAC,CAAC,CAAC;AACR,CAAC;AAED,2EAA2E;AAE3E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACjE,IAAI,UAAU;QAAE,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAExC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA+B;IAE/B,MAAM,aAAa,GAAG,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,cAAc,GAAG,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA+B;IAKnE,MAAM,MAAM,GAA8E,EAAE,CAAC;IAC7F,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACpF,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ;QAAE,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAC7F,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;QAAE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC1F,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4EAA4E;AAE5E,SAAS,QAAQ,CAAC,OAAe,EAAE,QAAgB;IACjD,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC/C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,wBAAwB,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,6EAA6E;AAE7E;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA4B,EAAE,MAAgB;IAC7E,OAAO,qCAAqC,QAAQ,CAAC,OAAO;;;;WAInD,QAAQ,CAAC,OAAO;eACZ,QAAQ,CAAC,WAAW;kBACjB,QAAQ,CAAC,cAAc;;EAEvC,QAAQ,CAAC,aAAa;;;;EAItB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;gBAgBnC,QAAQ,CAAC,OAAO;oBACZ,QAAQ,CAAC,WAAW;oBACpB,QAAQ,CAAC,WAAW;aAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;kBACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;;;;cAIvC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;;;;oDAIO,CAAC;AACrD,CAAC;AAED,6EAA6E;AAE7E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,UAMC,EACD,MAAc;IAEd,OAAO;;WAEE,OAAO;UACR,MAAM;;;EAGd,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGpH,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ;;;;EAI5C,UAAU,CAAC,WAAW;;;;;EAKtB,UAAU,CAAC,aAAa;;;;;EAKxB,UAAU,CAAC,cAAc;;;;;4DAKiC,MAAM;;;;;;;;;;;;;;mDAcf,CAAC;AACpD,CAAC"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../src/llm-provider.ts"],"names":[],"mappings":"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"}
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,CAAC,kBAAkB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,MAAM,kBAAkB,2BAA2B,CAAC,CAAC;IAC1H,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"}
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"}
@@ -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, NodeProposal, ExpressibilityScore } from './types.js';
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, pattern: AnalyzedPattern): 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, pattern: AnalyzedPattern): 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
  *
@@ -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, pattern) {
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, pattern) {
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":"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"}
1
+ {"version":3,"file":"node-proposer.js","sourceRoot":"","sources":["../src/node-proposer.ts"],"names":[],"mappings":"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"}
@@ -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;IAClE,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"}
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 { PatternGap, AnalyzedPattern, QualityThresholds } from './types.js';
7
+ import type { AnalyzedPattern, PatternGap, QualityThresholds } from './types.js';
8
8
  /**
9
9
  * Compute a structural hash for a pattern gap.
10
10
  *
@@ -5,7 +5,7 @@
5
5
  * representative examples for template generation.
6
6
  */
7
7
  import { createHash } from 'crypto';
8
- import { scorePattern, passesThresholds, DEFAULT_THRESHOLDS } from './quality-scorer.js';
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
- 'Formik': 'formik',
49
- 'Recoil': 'recoil',
48
+ Formik: 'formik',
49
+ Recoil: 'recoil',
50
50
  'Redux Toolkit': 'rtk',
51
51
  'Framer Motion': 'motion',
52
- 'Axios': 'axios',
53
- 'Ky': 'ky',
54
- 'Yup': 'yup',
55
- 'Valibot': 'valibot',
52
+ Axios: 'axios',
53
+ Ky: 'ky',
54
+ Yup: 'yup',
55
+ Valibot: 'valibot',
56
56
  'Express Middleware': 'express-mw',
57
- 'VueUse': 'vueuse',
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
- 'Formik': 'formik',
77
- 'Recoil': 'recoil',
78
+ Formik: 'formik',
79
+ Recoil: 'recoil',
78
80
  'Redux Toolkit': '@reduxjs/toolkit',
79
81
  'Framer Motion': 'framer-motion',
80
- 'Axios': 'axios',
81
- 'Ky': 'ky',
82
- 'Yup': 'yup',
83
- 'Valibot': 'valibot',
84
- 'VueUse': '@vueuse/core',
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 [key, groupGaps] of groups) {
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);