@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.
- package/dist/aot/index.d.ts +1 -0
- package/dist/aot/index.d.ts.map +1 -1
- package/dist/aot/registry-bridge.d.ts +27 -0
- package/dist/aot/registry-bridge.d.ts.map +1 -0
- package/dist/api/create-dsl.d.ts.map +1 -1
- package/dist/api/dispatcher.d.ts +22 -0
- package/dist/api/dispatcher.d.ts.map +1 -1
- package/dist/api/domain-registry.d.ts +41 -0
- package/dist/api/domain-registry.d.ts.map +1 -1
- package/dist/api/index.js +1438 -21
- package/dist/api/index.js.map +1 -1
- package/dist/core/index.js +247 -10
- package/dist/core/index.js.map +1 -1
- package/dist/core/pattern-matching/index.js +74 -10
- package/dist/core/pattern-matching/index.js.map +1 -1
- package/dist/core/pattern-matching/pattern-matcher.d.ts.map +1 -1
- package/dist/core/tokenization/index.js +133 -0
- package/dist/core/tokenization/index.js.map +1 -1
- package/dist/core/tokenization/morphology/base-normalizer.d.ts +94 -0
- package/dist/core/tokenization/morphology/base-normalizer.d.ts.map +1 -0
- package/dist/core/tokenization/morphology/index.d.ts +3 -1
- package/dist/core/tokenization/morphology/index.d.ts.map +1 -1
- package/dist/core/types.d.ts +81 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +40 -0
- package/dist/core/types.js.map +1 -1
- package/dist/feedback/confidence-gate.d.ts +28 -0
- package/dist/feedback/confidence-gate.d.ts.map +1 -0
- package/dist/feedback/feedback-formatter.d.ts +21 -0
- package/dist/feedback/feedback-formatter.d.ts.map +1 -0
- package/dist/feedback/index.d.ts +11 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/pattern-tracker.d.ts +47 -0
- package/dist/feedback/pattern-tracker.d.ts.map +1 -0
- package/dist/feedback/types.d.ts +113 -0
- package/dist/feedback/types.d.ts.map +1 -0
- package/dist/generation/index.js +2 -1
- package/dist/generation/index.js.map +1 -1
- package/dist/index.cjs +3264 -132
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3223 -132
- package/dist/index.js.map +1 -1
- package/dist/ir/explicit-parser.d.ts +86 -0
- package/dist/ir/explicit-parser.d.ts.map +1 -0
- package/dist/ir/explicit-renderer.d.ts +34 -0
- package/dist/ir/explicit-renderer.d.ts.map +1 -0
- package/dist/ir/from-interchange.d.ts +51 -0
- package/dist/ir/from-interchange.d.ts.map +1 -0
- package/dist/ir/index.d.ts +31 -0
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +1934 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/json-schema.d.ts +40 -0
- package/dist/ir/json-schema.d.ts.map +1 -0
- package/dist/ir/protocol-json.d.ts +73 -0
- package/dist/ir/protocol-json.d.ts.map +1 -0
- package/dist/ir/references.d.ts +19 -0
- package/dist/ir/references.d.ts.map +1 -0
- package/dist/ir/to-runtime-ast.d.ts +53 -0
- package/dist/ir/to-runtime-ast.d.ts.map +1 -0
- package/dist/ir/types.d.ts +151 -0
- package/dist/ir/types.d.ts.map +1 -0
- package/dist/parsing/index.js +74 -10
- package/dist/parsing/index.js.map +1 -1
- package/dist/prompts/index.d.ts +9 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/prompt-generator.d.ts +49 -0
- package/dist/prompts/prompt-generator.d.ts.map +1 -0
- package/dist/prompts/types.d.ts +64 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/schema/command-schema.d.ts +17 -0
- package/dist/schema/command-schema.d.ts.map +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/testing/index.js +8673 -8260
- package/dist/testing/index.js.map +1 -1
- package/dist/training/index.d.ts +11 -0
- package/dist/training/index.d.ts.map +1 -0
- package/dist/training/jsonl-writer.d.ts +42 -0
- package/dist/training/jsonl-writer.d.ts.map +1 -0
- package/dist/training/schema-synthesizer.d.ts +20 -0
- package/dist/training/schema-synthesizer.d.ts.map +1 -0
- package/dist/training/types.d.ts +73 -0
- package/dist/training/types.d.ts.map +1 -0
- package/package.json +5 -1
- package/src/aot/index.ts +1 -0
- package/src/aot/registry-bridge.test.ts +104 -0
- package/src/aot/registry-bridge.ts +66 -0
- package/src/api/create-dsl.test.ts +306 -0
- package/src/api/create-dsl.ts +21 -0
- package/src/api/dispatcher.test.ts +66 -0
- package/src/api/dispatcher.ts +77 -9
- package/src/api/domain-registry.ts +120 -4
- package/src/core/pattern-matching/pattern-matcher.test.ts +131 -0
- package/src/core/pattern-matching/pattern-matcher.ts +102 -19
- package/src/core/tokenization/morphology/base-normalizer.ts +249 -0
- package/src/core/tokenization/morphology/index.ts +3 -1
- package/src/core/types.ts +147 -2
- package/src/feedback/confidence-gate.test.ts +111 -0
- package/src/feedback/confidence-gate.ts +70 -0
- package/src/feedback/feedback-formatter.test.ts +198 -0
- package/src/feedback/feedback-formatter.ts +298 -0
- package/src/feedback/index.ts +24 -0
- package/src/feedback/pattern-tracker.test.ts +198 -0
- package/src/feedback/pattern-tracker.ts +140 -0
- package/src/feedback/types.ts +149 -0
- package/src/generation/pattern-generator.ts +2 -2
- package/src/index.ts +29 -0
- package/src/integration/llm-lse-integration.test.ts +457 -0
- package/src/ir/conformance.test.ts +120 -0
- package/src/ir/explicit-parser.test.ts +612 -0
- package/src/ir/explicit-parser.ts +793 -0
- package/src/ir/explicit-renderer.test.ts +229 -0
- package/src/ir/explicit-renderer.ts +198 -0
- package/src/ir/from-interchange.test.ts +853 -0
- package/src/ir/from-interchange.ts +594 -0
- package/src/ir/index.ts +77 -0
- package/src/ir/json-schema.test.ts +281 -0
- package/src/ir/json-schema.ts +299 -0
- package/src/ir/protocol-json.test.ts +1187 -0
- package/src/ir/protocol-json.ts +751 -0
- package/src/ir/references.test.ts +38 -0
- package/src/ir/references.ts +33 -0
- package/src/ir/round-trip.test.ts +557 -0
- package/src/ir/to-runtime-ast.ts +203 -0
- package/src/ir/types.ts +191 -0
- package/src/prompts/index.ts +15 -0
- package/src/prompts/prompt-generator.test.ts +386 -0
- package/src/prompts/prompt-generator.ts +531 -0
- package/src/prompts/types.ts +89 -0
- package/src/schema/command-schema.ts +19 -0
- package/src/training/index.ts +13 -0
- package/src/training/jsonl-writer.test.ts +138 -0
- package/src/training/jsonl-writer.ts +67 -0
- package/src/training/schema-synthesizer.test.ts +250 -0
- package/src/training/schema-synthesizer.ts +306 -0
- package/src/training/types.ts +103 -0
|
@@ -266,7 +266,7 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
266
266
|
* a token and the immediately following pattern token fails, the matcher
|
|
267
267
|
* resets to before the optional role and retries the failed token.
|
|
268
268
|
*/
|
|
269
|
-
matchTokenSequence(tokens, patternTokens, captured) {
|
|
269
|
+
matchTokenSequence(tokens, patternTokens, captured, parentStopMarkers) {
|
|
270
270
|
const firstPatternToken = patternTokens[0];
|
|
271
271
|
const patternExpectsConjunction = firstPatternToken?.type === "literal" && (firstPatternToken.value === "and" || firstPatternToken.value === "then" || firstPatternToken.alternatives?.includes("and") || firstPatternToken.alternatives?.includes("then"));
|
|
272
272
|
if (this.currentProfile?.code === "ar" && !patternExpectsConjunction) {
|
|
@@ -290,6 +290,9 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
290
290
|
);
|
|
291
291
|
if (patternToken.type === "role" && patternToken.greedy) {
|
|
292
292
|
const stopMarkers = this.collectStopMarkers(patternTokens, i + 1);
|
|
293
|
+
if (parentStopMarkers) {
|
|
294
|
+
for (const m of parentStopMarkers) stopMarkers.add(m);
|
|
295
|
+
}
|
|
293
296
|
const values = [];
|
|
294
297
|
while (!tokens.isAtEnd()) {
|
|
295
298
|
const nextToken = tokens.peek();
|
|
@@ -309,8 +312,58 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
309
312
|
return false;
|
|
310
313
|
}
|
|
311
314
|
}
|
|
315
|
+
if (patternToken.type === "group") {
|
|
316
|
+
const siblingStopMarkers = this.collectStopMarkers(patternTokens, i + 1);
|
|
317
|
+
if (parentStopMarkers) {
|
|
318
|
+
for (const m of parentStopMarkers) siblingStopMarkers.add(m);
|
|
319
|
+
}
|
|
320
|
+
const groupMatched = this.matchGroupToken(
|
|
321
|
+
tokens,
|
|
322
|
+
patternToken,
|
|
323
|
+
captured,
|
|
324
|
+
siblingStopMarkers
|
|
325
|
+
);
|
|
326
|
+
if (groupMatched) {
|
|
327
|
+
prevOptionalMark = null;
|
|
328
|
+
prevOptionalRole = null;
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
if (this.isOptional(patternToken)) {
|
|
332
|
+
continue;
|
|
333
|
+
}
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
312
336
|
const isOptionalRole = patternToken.type === "role" && patternToken.optional === true;
|
|
313
337
|
const markBefore = isOptionalRole ? tokens.mark() : null;
|
|
338
|
+
const isRoleToken = patternToken.type === "role";
|
|
339
|
+
if (isRoleToken && !isOptionalRole) {
|
|
340
|
+
const nextPT = i + 1 < patternTokens.length ? patternTokens[i + 1] : null;
|
|
341
|
+
if (nextPT?.type === "literal") {
|
|
342
|
+
const currentToken = tokens.peek();
|
|
343
|
+
if (currentToken && this.getMatchType(currentToken, nextPT.value) !== "none") {
|
|
344
|
+
this.logger.debug(
|
|
345
|
+
" >> MARKER-STEAL GUARD: current token matches next literal, skipping role"
|
|
346
|
+
);
|
|
347
|
+
this.logger.debug(" >> Token match FAILED");
|
|
348
|
+
if (this.isOptional(patternToken)) {
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
if (prevOptionalMark && prevOptionalRole) {
|
|
352
|
+
this.logger.debug(" >> BACKTRACKING: undoing optional role", prevOptionalRole);
|
|
353
|
+
tokens.reset(prevOptionalMark);
|
|
354
|
+
captured.delete(prevOptionalRole);
|
|
355
|
+
prevOptionalMark = null;
|
|
356
|
+
prevOptionalRole = null;
|
|
357
|
+
const retryMatched = this.matchPatternToken(tokens, patternToken, captured);
|
|
358
|
+
this.logger.debug(" >> Backtrack retry result:", retryMatched);
|
|
359
|
+
if (retryMatched) {
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
314
367
|
const matched = this.matchPatternToken(tokens, patternToken, captured);
|
|
315
368
|
this.logger.debug(" >> Match result:", matched);
|
|
316
369
|
if (matched) {
|
|
@@ -431,7 +484,7 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
431
484
|
const possessiveValue = this.tryMatchPossessiveExpression(tokens);
|
|
432
485
|
if (possessiveValue) {
|
|
433
486
|
if (patternToken.expectedTypes && patternToken.expectedTypes.length > 0) {
|
|
434
|
-
if (!
|
|
487
|
+
if (!isTypeCompatible(possessiveValue.type, patternToken.expectedTypes)) {
|
|
435
488
|
return patternToken.optional || false;
|
|
436
489
|
}
|
|
437
490
|
}
|
|
@@ -441,7 +494,7 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
441
494
|
const methodCallValue = this.tryMatchMethodCallExpression(tokens);
|
|
442
495
|
if (methodCallValue) {
|
|
443
496
|
if (patternToken.expectedTypes && patternToken.expectedTypes.length > 0) {
|
|
444
|
-
if (!
|
|
497
|
+
if (!isTypeCompatible(methodCallValue.type, patternToken.expectedTypes)) {
|
|
445
498
|
return patternToken.optional || false;
|
|
446
499
|
}
|
|
447
500
|
}
|
|
@@ -461,7 +514,7 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
461
514
|
const propertyAccessValue = this.tryMatchPropertyAccessExpression(tokens);
|
|
462
515
|
if (propertyAccessValue) {
|
|
463
516
|
if (patternToken.expectedTypes && patternToken.expectedTypes.length > 0) {
|
|
464
|
-
if (!
|
|
517
|
+
if (!isTypeCompatible(propertyAccessValue.type, patternToken.expectedTypes)) {
|
|
465
518
|
return patternToken.optional || false;
|
|
466
519
|
}
|
|
467
520
|
}
|
|
@@ -781,10 +834,15 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
781
834
|
* (e.g., a value like 'hello') to sit between groups without blocking later
|
|
782
835
|
* marker matches.
|
|
783
836
|
*/
|
|
784
|
-
matchGroupToken(tokens, patternToken, captured) {
|
|
837
|
+
matchGroupToken(tokens, patternToken, captured, parentStopMarkers) {
|
|
785
838
|
const mark = tokens.mark();
|
|
786
839
|
const capturedBefore = new Set(captured.keys());
|
|
787
|
-
const success = this.matchTokenSequence(
|
|
840
|
+
const success = this.matchTokenSequence(
|
|
841
|
+
tokens,
|
|
842
|
+
patternToken.tokens,
|
|
843
|
+
captured,
|
|
844
|
+
parentStopMarkers
|
|
845
|
+
);
|
|
788
846
|
if (success) return true;
|
|
789
847
|
tokens.reset(mark);
|
|
790
848
|
for (const role of captured.keys()) {
|
|
@@ -806,7 +864,12 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
806
864
|
"- skipping intervening tokens"
|
|
807
865
|
);
|
|
808
866
|
for (let s = 0; s < offset; s++) tokens.advance();
|
|
809
|
-
const retrySuccess = this.matchTokenSequence(
|
|
867
|
+
const retrySuccess = this.matchTokenSequence(
|
|
868
|
+
tokens,
|
|
869
|
+
patternToken.tokens,
|
|
870
|
+
captured,
|
|
871
|
+
parentStopMarkers
|
|
872
|
+
);
|
|
810
873
|
if (retrySuccess) return true;
|
|
811
874
|
tokens.reset(mark);
|
|
812
875
|
for (const role of captured.keys()) {
|
|
@@ -873,7 +936,7 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
873
936
|
break;
|
|
874
937
|
}
|
|
875
938
|
}
|
|
876
|
-
break;
|
|
939
|
+
if (!pt.optional) break;
|
|
877
940
|
}
|
|
878
941
|
}
|
|
879
942
|
return markers;
|
|
@@ -883,8 +946,9 @@ var _PatternMatcher = class _PatternMatcher {
|
|
|
883
946
|
*/
|
|
884
947
|
isStopMarker(token, stopMarkers) {
|
|
885
948
|
if (stopMarkers.size === 0) return false;
|
|
886
|
-
|
|
887
|
-
|
|
949
|
+
if (stopMarkers.has(token.value.toLowerCase())) return true;
|
|
950
|
+
if (token.normalized && stopMarkers.has(token.normalized.toLowerCase())) return true;
|
|
951
|
+
return false;
|
|
888
952
|
}
|
|
889
953
|
/**
|
|
890
954
|
* Convert a language token to a semantic value.
|