@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
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Explicit Syntax Parser
3
+ *
4
+ * Parses the universal [command role:value ...] bracket syntax.
5
+ * Domain-agnostic — schema validation is injectable via ParseExplicitOptions.
6
+ *
7
+ * Three parsing levels matching the ABNF grammar:
8
+ * parseDocument() → parseCompound() → parseExplicit()
9
+ * (multi-line) (chain ops) (single bracket)
10
+ *
11
+ * Syntax:
12
+ * [command role1:value1 role2:value2 ...]
13
+ * [cmd1 ...] then [cmd2 ...]
14
+ * @annotation(value) [command ...]
15
+ * #!lse 1.2\n[cmd1 ...]\n[cmd2 ...]
16
+ */
17
+ import type { SemanticNode, LSEEnvelope } from '../core/types';
18
+ import type { ParseExplicitOptions } from './types';
19
+ /** Structural role names whose bracket-enclosed values may be nested commands. */
20
+ export declare const STRUCTURAL_ROLES: Set<string>;
21
+ /**
22
+ * Parse explicit bracket syntax into a semantic node.
23
+ *
24
+ * When `options.schemaLookup` is provided, validates roles against the
25
+ * command's schema. When omitted, accepts any role names.
26
+ */
27
+ export declare function parseExplicit(input: string, options?: ParseExplicitOptions): SemanticNode;
28
+ /**
29
+ * Check if input is explicit bracket syntax.
30
+ */
31
+ export declare function isExplicitSyntax(input: string): boolean;
32
+ /**
33
+ * Parse a compound statement (one or more bracket commands chained with operators).
34
+ *
35
+ * ABNF: compound-stmt = bracket-cmd *( chain-op bracket-cmd )
36
+ *
37
+ * Single commands pass through to parseExplicit(). Multiple commands produce
38
+ * a CompoundSemanticNode.
39
+ *
40
+ * Also handles annotations (@name or @name(value)) before the first bracket.
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // Single command — passthrough
45
+ * parseCompound('[toggle patient:.active]')
46
+ *
47
+ * // Compound statement
48
+ * parseCompound('[add patient:.loading] then [fetch source:/api/data]')
49
+ *
50
+ * // With annotation
51
+ * parseCompound('@timeout(5s) [fetch source:/api/users]')
52
+ * ```
53
+ */
54
+ export declare function parseCompound(input: string, options?: ParseExplicitOptions): SemanticNode;
55
+ /**
56
+ * Parse a multi-line LSE document into an LSEEnvelope.
57
+ *
58
+ * ABNF: document = [ version-header LF ] *( line LF ) [ line ]
59
+ *
60
+ * Handles version headers (#!lse 1.2), comments (// or #), blank lines,
61
+ * and statement lines (one compound statement per line).
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const envelope = parseDocument(`
66
+ * #!lse 1.2
67
+ * // Toggle active state
68
+ * [toggle patient:.active]
69
+ * [add patient:.highlight]
70
+ * `);
71
+ * // envelope.lseVersion === '1.2'
72
+ * // envelope.nodes.length === 2
73
+ * ```
74
+ */
75
+ export declare function parseDocument(input: string, options?: ParseExplicitOptions): LSEEnvelope;
76
+ /**
77
+ * Check if input contains compound chaining (multiple bracket commands
78
+ * with chain operators at bracket-depth 0).
79
+ */
80
+ export declare function isCompoundSyntax(input: string): boolean;
81
+ /**
82
+ * Check if input is a multi-line LSE document (contains newlines,
83
+ * version header, or comment lines).
84
+ */
85
+ export declare function isDocumentSyntax(input: string): boolean;
86
+ //# sourceMappingURL=explicit-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-parser.d.ts","sourceRoot":"","sources":["../../src/ir/explicit-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,YAAY,EAMZ,WAAW,EAEZ,MAAM,eAAe,CAAC;AAavB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGpD,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,aAS3B,CAAC;AAsBH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,YAAY,CAkQ7F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGvD;AAuFD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAuBzF;AA0ED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,WAAW,CAmCxF;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQvD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Explicit Syntax Renderer
3
+ *
4
+ * Serializes SemanticNode to the universal [command role:value ...] bracket syntax.
5
+ * Zero dependencies beyond core types — no language-specific logic.
6
+ *
7
+ * Also renders annotations (@name(value)) and multi-line documents.
8
+ */
9
+ import type { SemanticNode, LSEEnvelope } from '../core/types';
10
+ /**
11
+ * Render a semantic node as explicit bracket syntax.
12
+ *
13
+ * Handles annotations (v1.2) — if the node has annotations, they are
14
+ * prepended as @name or @name(value) before the bracket output.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * renderExplicit(node) // "[toggle patient:.active destination:#button]"
19
+ * // With annotations:
20
+ * renderExplicit(annotatedNode) // "@timeout(5s) [fetch source:\"/api/users\"]"
21
+ * ```
22
+ */
23
+ export declare function renderExplicit(node: SemanticNode): string;
24
+ /**
25
+ * Render an LSEEnvelope as a multi-line document string.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * renderDocument(envelope)
30
+ * // "#!lse 1.2\n[toggle patient:.active]\n[add patient:.highlight]"
31
+ * ```
32
+ */
33
+ export declare function renderDocument(envelope: LSEEnvelope): string;
34
+ //# sourceMappingURL=explicit-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explicit-renderer.d.ts","sourceRoot":"","sources":["../../src/ir/explicit-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAOZ,WAAW,EACZ,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAqBzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAc5D"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * InterchangeNode → SemanticNode Converter
3
+ *
4
+ * Converts the expression-level InterchangeNode AST (from core/semantic parsers)
5
+ * into the command-level SemanticNode IR used by LSE, MCP tools, and domain DSLs.
6
+ *
7
+ * This bridges the two IR pipelines in the monorepo:
8
+ * - Pipeline A (InterchangeNode): full expression trees, 16 node types
9
+ * - Pipeline B (SemanticNode): command-level semantics, opaque expression values
10
+ *
11
+ * Expression subtrees are intentionally collapsed to ExpressionValue { raw: string }
12
+ * — LSE deliberately abstracts away expression-level detail.
13
+ *
14
+ * Uses structural typing for the input to avoid a dependency on the core package.
15
+ */
16
+ import type { SemanticNode, SemanticValue } from '../core/types';
17
+ /**
18
+ * Minimal interface matching InterchangeNode's structural shape.
19
+ * Uses the `type` discriminant for dispatch. Additional fields are
20
+ * accessed dynamically — this keeps the framework free of core imports.
21
+ */
22
+ interface INode {
23
+ readonly type: string;
24
+ readonly [key: string]: unknown;
25
+ }
26
+ /**
27
+ * Convert an InterchangeNode (expression-level AST) to a SemanticNode (command-level IR).
28
+ *
29
+ * Handles all 16 InterchangeNode types:
30
+ * - Command/event nodes map to corresponding SemanticNode kinds
31
+ * - Control flow nodes (if, repeat, foreach, while) map to conditional/loop kinds
32
+ * - Expression nodes are wrapped as `get` commands with the value as patient role
33
+ *
34
+ * @param node - An InterchangeNode (or structurally compatible object)
35
+ * @returns A SemanticNode suitable for LSE rendering, protocol JSON, or MCP tools
36
+ */
37
+ export declare function fromInterchangeNode(node: INode): SemanticNode;
38
+ /**
39
+ * Convert an InterchangeNode to a SemanticValue.
40
+ *
41
+ * Simple nodes map directly to typed SemanticValue variants.
42
+ * Complex expression nodes are collapsed to ExpressionValue { raw: string }.
43
+ */
44
+ export declare function convertValue(node: INode): SemanticValue;
45
+ /**
46
+ * Recursively render an InterchangeNode expression tree to a string.
47
+ * Used to collapse complex expressions into ExpressionValue.raw.
48
+ */
49
+ export declare function renderExpr(node: INode): string;
50
+ export {};
51
+ //# sourceMappingURL=from-interchange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-interchange.d.ts","sourceRoot":"","sources":["../../src/ir/from-interchange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAId,MAAM,eAAe,CAAC;AAkBvB;;;;GAIG;AACH,UAAU,KAAK;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,CA4B7D;AAsKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,aAAa,CAmCvD;AA0CD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CA8E9C"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * IR (Intermediate Representation)
3
+ *
4
+ * Universal explicit bracket syntax for semantic DSL interchange.
5
+ * Domain-agnostic — works for any DSL built on the framework.
6
+ *
7
+ * Three input formats converge on SemanticNode:
8
+ * 1. Bracket syntax: [toggle patient:.active destination:#button]
9
+ * 2. LLM JSON: { action: "toggle", roles: { patient: { type: "selector", value: ".active" } } }
10
+ * 3. Natural language: (handled by language-specific parsers, not this module)
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { parseExplicit, renderExplicit, jsonToSemanticNode } from '@lokascript/framework/ir';
15
+ *
16
+ * const node = parseExplicit('[toggle patient:.active]');
17
+ * const bracket = renderExplicit(node); // "[toggle patient:.active]"
18
+ * const json = semanticNodeToJSON(node); // { action: "toggle", roles: { ... } }
19
+ * ```
20
+ */
21
+ export type { SemanticJSON, SemanticJSONValue, SchemaLookup, ParseExplicitOptions, IRDiagnostic, } from './types';
22
+ export { DEFAULT_REFERENCES, isValidReference } from './references';
23
+ export { parseExplicit, parseCompound, parseDocument, isExplicitSyntax, isCompoundSyntax, isDocumentSyntax, } from './explicit-parser';
24
+ export { renderExplicit, renderDocument } from './explicit-renderer';
25
+ export { jsonToSemanticNode, validateSemanticJSON, semanticNodeToJSON } from './json-schema';
26
+ export type { ProtocolNodeJSON, ProtocolValueJSON, ProtocolNodeKind, ProtocolChainType, ProtocolDiagnosticJSON, AnnotationJSON, MatchArmJSON, LSEEnvelopeJSON, } from './types';
27
+ export { toProtocolJSON, fromProtocolJSON, validateProtocolJSON, toEnvelopeJSON, fromEnvelopeJSON, isEnvelope, } from './protocol-json';
28
+ export { fromInterchangeNode, convertValue, renderExpr } from './from-interchange';
29
+ export { semanticNodeToRuntimeAST, semanticValueToAST } from './to-runtime-ast';
30
+ export type { RuntimeASTNode, RuntimeCommandNode, RuntimeEventNode } from './to-runtime-ast';
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ir/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG7F,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EAEjB,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EAEpB,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}