@lokascript/framework 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/aot/index.d.ts +1 -0
  2. package/dist/aot/index.d.ts.map +1 -1
  3. package/dist/aot/registry-bridge.d.ts +27 -0
  4. package/dist/aot/registry-bridge.d.ts.map +1 -0
  5. package/dist/api/create-dsl.d.ts.map +1 -1
  6. package/dist/api/dispatcher.d.ts +22 -0
  7. package/dist/api/dispatcher.d.ts.map +1 -1
  8. package/dist/api/domain-registry.d.ts +41 -0
  9. package/dist/api/domain-registry.d.ts.map +1 -1
  10. package/dist/api/index.js +1438 -21
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/core/index.js +247 -10
  13. package/dist/core/index.js.map +1 -1
  14. package/dist/core/pattern-matching/index.js +74 -10
  15. package/dist/core/pattern-matching/index.js.map +1 -1
  16. package/dist/core/pattern-matching/pattern-matcher.d.ts.map +1 -1
  17. package/dist/core/tokenization/index.js +133 -0
  18. package/dist/core/tokenization/index.js.map +1 -1
  19. package/dist/core/tokenization/morphology/base-normalizer.d.ts +94 -0
  20. package/dist/core/tokenization/morphology/base-normalizer.d.ts.map +1 -0
  21. package/dist/core/tokenization/morphology/index.d.ts +3 -1
  22. package/dist/core/tokenization/morphology/index.d.ts.map +1 -1
  23. package/dist/core/types.d.ts +81 -2
  24. package/dist/core/types.d.ts.map +1 -1
  25. package/dist/core/types.js +40 -0
  26. package/dist/core/types.js.map +1 -1
  27. package/dist/feedback/confidence-gate.d.ts +28 -0
  28. package/dist/feedback/confidence-gate.d.ts.map +1 -0
  29. package/dist/feedback/feedback-formatter.d.ts +21 -0
  30. package/dist/feedback/feedback-formatter.d.ts.map +1 -0
  31. package/dist/feedback/index.d.ts +11 -0
  32. package/dist/feedback/index.d.ts.map +1 -0
  33. package/dist/feedback/pattern-tracker.d.ts +47 -0
  34. package/dist/feedback/pattern-tracker.d.ts.map +1 -0
  35. package/dist/feedback/types.d.ts +113 -0
  36. package/dist/feedback/types.d.ts.map +1 -0
  37. package/dist/generation/index.js +2 -1
  38. package/dist/generation/index.js.map +1 -1
  39. package/dist/index.cjs +3264 -132
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.ts +8 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +3223 -132
  44. package/dist/index.js.map +1 -1
  45. package/dist/ir/explicit-parser.d.ts +86 -0
  46. package/dist/ir/explicit-parser.d.ts.map +1 -0
  47. package/dist/ir/explicit-renderer.d.ts +34 -0
  48. package/dist/ir/explicit-renderer.d.ts.map +1 -0
  49. package/dist/ir/from-interchange.d.ts +51 -0
  50. package/dist/ir/from-interchange.d.ts.map +1 -0
  51. package/dist/ir/index.d.ts +31 -0
  52. package/dist/ir/index.d.ts.map +1 -0
  53. package/dist/ir/index.js +1934 -0
  54. package/dist/ir/index.js.map +1 -0
  55. package/dist/ir/json-schema.d.ts +40 -0
  56. package/dist/ir/json-schema.d.ts.map +1 -0
  57. package/dist/ir/protocol-json.d.ts +73 -0
  58. package/dist/ir/protocol-json.d.ts.map +1 -0
  59. package/dist/ir/references.d.ts +19 -0
  60. package/dist/ir/references.d.ts.map +1 -0
  61. package/dist/ir/to-runtime-ast.d.ts +53 -0
  62. package/dist/ir/to-runtime-ast.d.ts.map +1 -0
  63. package/dist/ir/types.d.ts +151 -0
  64. package/dist/ir/types.d.ts.map +1 -0
  65. package/dist/parsing/index.js +74 -10
  66. package/dist/parsing/index.js.map +1 -1
  67. package/dist/prompts/index.d.ts +9 -0
  68. package/dist/prompts/index.d.ts.map +1 -0
  69. package/dist/prompts/prompt-generator.d.ts +49 -0
  70. package/dist/prompts/prompt-generator.d.ts.map +1 -0
  71. package/dist/prompts/types.d.ts +64 -0
  72. package/dist/prompts/types.d.ts.map +1 -0
  73. package/dist/schema/command-schema.d.ts +17 -0
  74. package/dist/schema/command-schema.d.ts.map +1 -1
  75. package/dist/schema/index.js.map +1 -1
  76. package/dist/testing/index.js +8673 -8260
  77. package/dist/testing/index.js.map +1 -1
  78. package/dist/training/index.d.ts +11 -0
  79. package/dist/training/index.d.ts.map +1 -0
  80. package/dist/training/jsonl-writer.d.ts +42 -0
  81. package/dist/training/jsonl-writer.d.ts.map +1 -0
  82. package/dist/training/schema-synthesizer.d.ts +20 -0
  83. package/dist/training/schema-synthesizer.d.ts.map +1 -0
  84. package/dist/training/types.d.ts +73 -0
  85. package/dist/training/types.d.ts.map +1 -0
  86. package/package.json +5 -1
  87. package/src/aot/index.ts +1 -0
  88. package/src/aot/registry-bridge.test.ts +104 -0
  89. package/src/aot/registry-bridge.ts +66 -0
  90. package/src/api/create-dsl.test.ts +306 -0
  91. package/src/api/create-dsl.ts +21 -0
  92. package/src/api/dispatcher.test.ts +66 -0
  93. package/src/api/dispatcher.ts +77 -9
  94. package/src/api/domain-registry.ts +120 -4
  95. package/src/core/pattern-matching/pattern-matcher.test.ts +131 -0
  96. package/src/core/pattern-matching/pattern-matcher.ts +102 -19
  97. package/src/core/tokenization/morphology/base-normalizer.ts +249 -0
  98. package/src/core/tokenization/morphology/index.ts +3 -1
  99. package/src/core/types.ts +147 -2
  100. package/src/feedback/confidence-gate.test.ts +111 -0
  101. package/src/feedback/confidence-gate.ts +70 -0
  102. package/src/feedback/feedback-formatter.test.ts +198 -0
  103. package/src/feedback/feedback-formatter.ts +298 -0
  104. package/src/feedback/index.ts +24 -0
  105. package/src/feedback/pattern-tracker.test.ts +198 -0
  106. package/src/feedback/pattern-tracker.ts +140 -0
  107. package/src/feedback/types.ts +149 -0
  108. package/src/generation/pattern-generator.ts +2 -2
  109. package/src/index.ts +29 -0
  110. package/src/integration/llm-lse-integration.test.ts +457 -0
  111. package/src/ir/conformance.test.ts +120 -0
  112. package/src/ir/explicit-parser.test.ts +612 -0
  113. package/src/ir/explicit-parser.ts +793 -0
  114. package/src/ir/explicit-renderer.test.ts +229 -0
  115. package/src/ir/explicit-renderer.ts +198 -0
  116. package/src/ir/from-interchange.test.ts +853 -0
  117. package/src/ir/from-interchange.ts +594 -0
  118. package/src/ir/index.ts +77 -0
  119. package/src/ir/json-schema.test.ts +281 -0
  120. package/src/ir/json-schema.ts +299 -0
  121. package/src/ir/protocol-json.test.ts +1187 -0
  122. package/src/ir/protocol-json.ts +751 -0
  123. package/src/ir/references.test.ts +38 -0
  124. package/src/ir/references.ts +33 -0
  125. package/src/ir/round-trip.test.ts +557 -0
  126. package/src/ir/to-runtime-ast.ts +203 -0
  127. package/src/ir/types.ts +191 -0
  128. package/src/prompts/index.ts +15 -0
  129. package/src/prompts/prompt-generator.test.ts +386 -0
  130. package/src/prompts/prompt-generator.ts +531 -0
  131. package/src/prompts/types.ts +89 -0
  132. package/src/schema/command-schema.ts +19 -0
  133. package/src/training/index.ts +13 -0
  134. package/src/training/jsonl-writer.test.ts +138 -0
  135. package/src/training/jsonl-writer.ts +67 -0
  136. package/src/training/schema-synthesizer.test.ts +250 -0
  137. package/src/training/schema-synthesizer.ts +306 -0
  138. package/src/training/types.ts +103 -0
@@ -1312,7 +1312,140 @@ function normalized(stem, confidence, metadata) {
1312
1312
  }
1313
1313
  return { stem, confidence };
1314
1314
  }
1315
+
1316
+ // src/core/tokenization/morphology/base-normalizer.ts
1317
+ var BaseMorphologicalNormalizer = class {
1318
+ constructor(config) {
1319
+ this.language = config.language;
1320
+ this.config = {
1321
+ minWordLength: 3,
1322
+ minStemLength: 2,
1323
+ ...config
1324
+ };
1325
+ }
1326
+ /**
1327
+ * Standard normalization pipeline. Override for custom behavior.
1328
+ */
1329
+ normalize(word) {
1330
+ const lower = word.toLowerCase();
1331
+ if (this.isAlreadyNormalized(lower)) {
1332
+ return noChange(word);
1333
+ }
1334
+ if (this.config.reflexiveSuffixes) {
1335
+ const reflexive = this.tryReflexiveNormalization(lower);
1336
+ if (reflexive) return reflexive;
1337
+ }
1338
+ if (this.config.endings) {
1339
+ const conjugation = this.tryConjugationEndings(lower);
1340
+ if (conjugation) return conjugation;
1341
+ }
1342
+ if (this.config.suffixRules) {
1343
+ const suffix = this.trySuffixRules(lower);
1344
+ if (suffix) return suffix;
1345
+ }
1346
+ if (this.config.prefixRules) {
1347
+ const prefix = this.tryPrefixRules(lower);
1348
+ if (prefix) return prefix;
1349
+ }
1350
+ return noChange(word);
1351
+ }
1352
+ /**
1353
+ * Check if word is already in dictionary form (e.g., ends in -ar/-er/-ir).
1354
+ * Override for language-specific checks.
1355
+ */
1356
+ isAlreadyNormalized(word) {
1357
+ if (this.config.infinitiveEndings) {
1358
+ return this.config.infinitiveEndings.some((e) => word.endsWith(e));
1359
+ }
1360
+ return false;
1361
+ }
1362
+ /**
1363
+ * Try to strip reflexive suffixes and normalize the remainder.
1364
+ * Common in Romance languages (Spanish, Portuguese, French).
1365
+ */
1366
+ tryReflexiveNormalization(word) {
1367
+ const suffixes = this.config.reflexiveSuffixes;
1368
+ if (!suffixes) return null;
1369
+ for (const suffix of suffixes) {
1370
+ if (!word.endsWith(suffix)) continue;
1371
+ const remainder = word.slice(0, -suffix.length);
1372
+ if (this.isAlreadyNormalized(remainder)) {
1373
+ return normalized(remainder, 0.88, {
1374
+ removedSuffixes: [suffix],
1375
+ conjugationType: "reflexive"
1376
+ });
1377
+ }
1378
+ const inner = this.tryConjugationEndings(remainder) || this.trySuffixRules(remainder);
1379
+ if (inner && inner.stem !== remainder) {
1380
+ return normalized(inner.stem, inner.confidence * 0.95, {
1381
+ removedSuffixes: [suffix, ...inner.metadata?.removedSuffixes || []],
1382
+ conjugationType: "reflexive"
1383
+ });
1384
+ }
1385
+ }
1386
+ return null;
1387
+ }
1388
+ /**
1389
+ * Try conjugation endings (verb class endings like -ar/-er/-ir patterns).
1390
+ * Endings must be pre-sorted longest-first.
1391
+ */
1392
+ tryConjugationEndings(word) {
1393
+ const endings = this.config.endings;
1394
+ if (!endings) return null;
1395
+ const minStem = this.config.minStemLength ?? 2;
1396
+ for (const rule of endings) {
1397
+ if (!word.endsWith(rule.ending)) continue;
1398
+ const stemBase = word.slice(0, -rule.ending.length);
1399
+ if (stemBase.length < minStem) continue;
1400
+ const infinitive = stemBase + rule.stem;
1401
+ return normalized(infinitive, rule.confidence, {
1402
+ removedSuffixes: [rule.ending],
1403
+ conjugationType: rule.type
1404
+ });
1405
+ }
1406
+ return null;
1407
+ }
1408
+ /**
1409
+ * Try SuffixRule-style normalization.
1410
+ * Rules must be pre-sorted longest-first.
1411
+ */
1412
+ trySuffixRules(word) {
1413
+ const rules = this.config.suffixRules;
1414
+ if (!rules) return null;
1415
+ const defaultMinStem = this.config.minStemLength ?? 2;
1416
+ for (const rule of rules) {
1417
+ if (!word.endsWith(rule.pattern)) continue;
1418
+ const stem = word.slice(0, -rule.pattern.length);
1419
+ const minStem = rule.minStemLength ?? defaultMinStem;
1420
+ if (stem.length < minStem) continue;
1421
+ const result = stem + (rule.replacement || "");
1422
+ return normalized(result, rule.confidence, {
1423
+ removedSuffixes: [rule.pattern],
1424
+ ...rule.conjugationType && { conjugationType: rule.conjugationType }
1425
+ });
1426
+ }
1427
+ return null;
1428
+ }
1429
+ /**
1430
+ * Try PrefixRule-style normalization.
1431
+ */
1432
+ tryPrefixRules(word) {
1433
+ const rules = this.config.prefixRules;
1434
+ if (!rules) return null;
1435
+ for (const rule of rules) {
1436
+ if (!word.startsWith(rule.pattern)) continue;
1437
+ const remainder = word.slice(rule.pattern.length);
1438
+ const minRemaining = rule.minRemaining ?? this.config.minStemLength ?? 2;
1439
+ if (remainder.length < minRemaining) continue;
1440
+ return normalized(remainder, 1 - rule.confidencePenalty, {
1441
+ removedPrefixes: [rule.pattern]
1442
+ });
1443
+ }
1444
+ return null;
1445
+ }
1446
+ };
1315
1447
  export {
1448
+ BaseMorphologicalNormalizer,
1316
1449
  BaseTokenizer,
1317
1450
  DEFAULT_OPERATORS,
1318
1451
  DEFAULT_PUNCTUATION,