@lokascript/framework 2.0.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 (181) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +142 -0
  3. package/dist/aot/aot-orchestrator.d.ts +75 -0
  4. package/dist/aot/aot-orchestrator.d.ts.map +1 -0
  5. package/dist/aot/domain-scanner.d.ts +27 -0
  6. package/dist/aot/domain-scanner.d.ts.map +1 -0
  7. package/dist/aot/index.d.ts +8 -0
  8. package/dist/aot/index.d.ts.map +1 -0
  9. package/dist/aot/types.d.ts +103 -0
  10. package/dist/aot/types.d.ts.map +1 -0
  11. package/dist/api/create-dsl.d.ts +91 -0
  12. package/dist/api/create-dsl.d.ts.map +1 -0
  13. package/dist/api/dispatcher.d.ts +108 -0
  14. package/dist/api/dispatcher.d.ts.map +1 -0
  15. package/dist/api/domain-registry.d.ts +152 -0
  16. package/dist/api/domain-registry.d.ts.map +1 -0
  17. package/dist/api/index.d.ts +7 -0
  18. package/dist/api/index.d.ts.map +1 -0
  19. package/dist/api/index.js +2082 -0
  20. package/dist/api/index.js.map +1 -0
  21. package/dist/core/index.d.ts +7 -0
  22. package/dist/core/index.d.ts.map +1 -0
  23. package/dist/core/index.js +2674 -0
  24. package/dist/core/index.js.map +1 -0
  25. package/dist/core/logger.d.ts +32 -0
  26. package/dist/core/logger.d.ts.map +1 -0
  27. package/dist/core/pattern-matching/index.d.ts +6 -0
  28. package/dist/core/pattern-matching/index.d.ts.map +1 -0
  29. package/dist/core/pattern-matching/index.js +1239 -0
  30. package/dist/core/pattern-matching/index.js.map +1 -0
  31. package/dist/core/pattern-matching/pattern-matcher.d.ts +239 -0
  32. package/dist/core/pattern-matching/pattern-matcher.d.ts.map +1 -0
  33. package/dist/core/pattern-matching/utils/index.d.ts +6 -0
  34. package/dist/core/pattern-matching/utils/index.d.ts.map +1 -0
  35. package/dist/core/pattern-matching/utils/possessive-keywords.d.ts +38 -0
  36. package/dist/core/pattern-matching/utils/possessive-keywords.d.ts.map +1 -0
  37. package/dist/core/pattern-matching/utils/type-validation.d.ts +63 -0
  38. package/dist/core/pattern-matching/utils/type-validation.d.ts.map +1 -0
  39. package/dist/core/tokenization/base-tokenizer.d.ts +344 -0
  40. package/dist/core/tokenization/base-tokenizer.d.ts.map +1 -0
  41. package/dist/core/tokenization/char-classifiers.d.ts +56 -0
  42. package/dist/core/tokenization/char-classifiers.d.ts.map +1 -0
  43. package/dist/core/tokenization/default-extractors.d.ts +48 -0
  44. package/dist/core/tokenization/default-extractors.d.ts.map +1 -0
  45. package/dist/core/tokenization/extractors/index.d.ts +9 -0
  46. package/dist/core/tokenization/extractors/index.d.ts.map +1 -0
  47. package/dist/core/tokenization/extractors/operator.d.ts +23 -0
  48. package/dist/core/tokenization/extractors/operator.d.ts.map +1 -0
  49. package/dist/core/tokenization/extractors/punctuation.d.ts +22 -0
  50. package/dist/core/tokenization/extractors/punctuation.d.ts.map +1 -0
  51. package/dist/core/tokenization/extractors.d.ts +61 -0
  52. package/dist/core/tokenization/extractors.d.ts.map +1 -0
  53. package/dist/core/tokenization/index.d.ts +11 -0
  54. package/dist/core/tokenization/index.d.ts.map +1 -0
  55. package/dist/core/tokenization/index.js +1345 -0
  56. package/dist/core/tokenization/index.js.map +1 -0
  57. package/dist/core/tokenization/morphology/index.d.ts +5 -0
  58. package/dist/core/tokenization/morphology/index.d.ts.map +1 -0
  59. package/dist/core/tokenization/morphology/types.d.ts +110 -0
  60. package/dist/core/tokenization/morphology/types.d.ts.map +1 -0
  61. package/dist/core/tokenization/token-utils.d.ts +111 -0
  62. package/dist/core/tokenization/token-utils.d.ts.map +1 -0
  63. package/dist/core/types.d.ts +382 -0
  64. package/dist/core/types.d.ts.map +1 -0
  65. package/dist/core/types.js +108 -0
  66. package/dist/core/types.js.map +1 -0
  67. package/dist/generation/diagnostics.d.ts +120 -0
  68. package/dist/generation/diagnostics.d.ts.map +1 -0
  69. package/dist/generation/index.d.ts +7 -0
  70. package/dist/generation/index.d.ts.map +1 -0
  71. package/dist/generation/index.js +339 -0
  72. package/dist/generation/index.js.map +1 -0
  73. package/dist/generation/pattern-generator.d.ts +48 -0
  74. package/dist/generation/pattern-generator.d.ts.map +1 -0
  75. package/dist/generation/renderer.d.ts +115 -0
  76. package/dist/generation/renderer.d.ts.map +1 -0
  77. package/dist/grammar/index.d.ts +10 -0
  78. package/dist/grammar/index.d.ts.map +1 -0
  79. package/dist/grammar/index.js +391 -0
  80. package/dist/grammar/index.js.map +1 -0
  81. package/dist/grammar/transformer.d.ts +56 -0
  82. package/dist/grammar/transformer.d.ts.map +1 -0
  83. package/dist/grammar/types.d.ts +236 -0
  84. package/dist/grammar/types.d.ts.map +1 -0
  85. package/dist/index.cjs +4454 -0
  86. package/dist/index.cjs.map +1 -0
  87. package/dist/index.d.ts +46 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +4336 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/interfaces/dictionary.d.ts +82 -0
  92. package/dist/interfaces/dictionary.d.ts.map +1 -0
  93. package/dist/interfaces/index.d.ts +10 -0
  94. package/dist/interfaces/index.d.ts.map +1 -0
  95. package/dist/interfaces/profile-provider.d.ts +67 -0
  96. package/dist/interfaces/profile-provider.d.ts.map +1 -0
  97. package/dist/interfaces/value-extractor.d.ts +168 -0
  98. package/dist/interfaces/value-extractor.d.ts.map +1 -0
  99. package/dist/multilingual/index.d.ts +8 -0
  100. package/dist/multilingual/index.d.ts.map +1 -0
  101. package/dist/multilingual/index.js +1 -0
  102. package/dist/multilingual/index.js.map +1 -0
  103. package/dist/parsing/index.d.ts +8 -0
  104. package/dist/parsing/index.d.ts.map +1 -0
  105. package/dist/parsing/index.js +1415 -0
  106. package/dist/parsing/index.js.map +1 -0
  107. package/dist/parsing/multi-statement.d.ts +265 -0
  108. package/dist/parsing/multi-statement.d.ts.map +1 -0
  109. package/dist/schema/command-schema.d.ts +78 -0
  110. package/dist/schema/command-schema.d.ts.map +1 -0
  111. package/dist/schema/index.d.ts +5 -0
  112. package/dist/schema/index.d.ts.map +1 -0
  113. package/dist/schema/index.js +25 -0
  114. package/dist/schema/index.js.map +1 -0
  115. package/dist/test-setup.d.ts +9 -0
  116. package/dist/test-setup.d.ts.map +1 -0
  117. package/dist/testing/index.d.ts +50 -0
  118. package/dist/testing/index.d.ts.map +1 -0
  119. package/dist/testing/index.js +16969 -0
  120. package/dist/testing/index.js.map +1 -0
  121. package/package.json +122 -0
  122. package/src/__test__/fixtures/sql-dsl.ts +232 -0
  123. package/src/__test__/sql-integration.test.ts +189 -0
  124. package/src/__test__/test-utils.ts +260 -0
  125. package/src/aot/aot-orchestrator.test.ts +413 -0
  126. package/src/aot/aot-orchestrator.ts +238 -0
  127. package/src/aot/domain-scanner.ts +178 -0
  128. package/src/aot/index.ts +8 -0
  129. package/src/aot/types.ts +124 -0
  130. package/src/api/create-dsl.ts +367 -0
  131. package/src/api/dispatcher.test.ts +336 -0
  132. package/src/api/dispatcher.ts +222 -0
  133. package/src/api/domain-registry.test.ts +336 -0
  134. package/src/api/domain-registry.ts +500 -0
  135. package/src/api/index.ts +7 -0
  136. package/src/core/index.ts +7 -0
  137. package/src/core/logger.ts +130 -0
  138. package/src/core/pattern-matching/index.ts +6 -0
  139. package/src/core/pattern-matching/pattern-matcher.test.ts +900 -0
  140. package/src/core/pattern-matching/pattern-matcher.ts +1548 -0
  141. package/src/core/pattern-matching/pattern-matcher.ts.backup +1267 -0
  142. package/src/core/pattern-matching/utils/index.ts +6 -0
  143. package/src/core/pattern-matching/utils/possessive-keywords.ts +55 -0
  144. package/src/core/pattern-matching/utils/type-validation.test.ts +316 -0
  145. package/src/core/pattern-matching/utils/type-validation.ts +134 -0
  146. package/src/core/tokenization/base-tokenizer.ts +916 -0
  147. package/src/core/tokenization/char-classifiers.ts +79 -0
  148. package/src/core/tokenization/create-simple-tokenizer.test.ts +260 -0
  149. package/src/core/tokenization/default-extractors.ts +69 -0
  150. package/src/core/tokenization/extractors/index.ts +9 -0
  151. package/src/core/tokenization/extractors/operator.ts +75 -0
  152. package/src/core/tokenization/extractors/punctuation.ts +39 -0
  153. package/src/core/tokenization/extractors.ts +452 -0
  154. package/src/core/tokenization/index.ts +11 -0
  155. package/src/core/tokenization/morphology/index.ts +5 -0
  156. package/src/core/tokenization/morphology/types.ts +211 -0
  157. package/src/core/tokenization/token-utils.ts +252 -0
  158. package/src/core/types.ts +589 -0
  159. package/src/generation/diagnostics.test.ts +171 -0
  160. package/src/generation/diagnostics.ts +239 -0
  161. package/src/generation/index.ts +7 -0
  162. package/src/generation/pattern-generator.test.ts +430 -0
  163. package/src/generation/pattern-generator.ts +315 -0
  164. package/src/generation/renderer.test.ts +266 -0
  165. package/src/generation/renderer.ts +244 -0
  166. package/src/grammar/index.ts +12 -0
  167. package/src/grammar/transformer.ts +159 -0
  168. package/src/grammar/types.ts +630 -0
  169. package/src/index.ts +157 -0
  170. package/src/interfaces/dictionary.ts +123 -0
  171. package/src/interfaces/index.ts +10 -0
  172. package/src/interfaces/profile-provider.ts +88 -0
  173. package/src/interfaces/value-extractor.ts +435 -0
  174. package/src/multilingual/index.ts +9 -0
  175. package/src/parsing/index.ts +27 -0
  176. package/src/parsing/multi-statement.test.ts +480 -0
  177. package/src/parsing/multi-statement.ts +648 -0
  178. package/src/schema/command-schema.ts +118 -0
  179. package/src/schema/index.ts +5 -0
  180. package/src/test-setup.ts +45 -0
  181. package/src/testing/index.ts +137 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Domain Registry
3
+ *
4
+ * Provides auto-discovery and registration of framework domains for MCP servers.
5
+ * Instead of hardcoding tool definitions and dispatch logic per domain, domains
6
+ * export a `DomainDescriptor` and the registry generates everything automatically.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { DomainRegistry } from '@lokascript/framework';
11
+ *
12
+ * const registry = new DomainRegistry();
13
+ *
14
+ * // Register domains (each provides a descriptor)
15
+ * registry.register({
16
+ * name: 'sql',
17
+ * description: 'Natural language SQL',
18
+ * languages: ['en', 'es', 'ja', 'ar'],
19
+ * inputLabel: 'query',
20
+ * inputDescription: 'SQL query in natural language',
21
+ * getDSL: () => import('@lokascript/domain-sql').then(m => m.createSQLDSL()),
22
+ * getRenderer: () => import('@lokascript/domain-sql').then(m => m.renderSQL),
23
+ * });
24
+ *
25
+ * // Auto-generate MCP tool definitions
26
+ * const tools = registry.getToolDefinitions();
27
+ *
28
+ * // Dispatch a tool call
29
+ * const result = await registry.handleToolCall('parse_sql', { query: 'select name from users' });
30
+ * ```
31
+ */
32
+ import type { SemanticNode } from '../core/types';
33
+ import type { MultilingualDSL } from './create-dsl';
34
+ import type { NaturalLanguageRenderer } from '../generation/renderer';
35
+ /**
36
+ * Describes a domain for auto-registration in MCP servers.
37
+ *
38
+ * Domains provide this descriptor to the registry, which generates
39
+ * tool definitions and handles dispatch automatically.
40
+ */
41
+ export interface DomainDescriptor {
42
+ /** Short identifier (used in tool names: parse_{name}, compile_{name}, etc.) */
43
+ readonly name: string;
44
+ /** Human-readable description */
45
+ readonly description: string;
46
+ /** Supported language codes */
47
+ readonly languages: readonly string[];
48
+ /** Label for the primary input parameter (e.g., 'query', 'scenario', 'code') */
49
+ readonly inputLabel: string;
50
+ /** Description of the primary input parameter */
51
+ readonly inputDescription: string;
52
+ /**
53
+ * Factory to lazily create the DSL instance.
54
+ * Called once on first tool use. The result is cached.
55
+ */
56
+ readonly getDSL: () => MultilingualDSL | Promise<MultilingualDSL>;
57
+ /**
58
+ * Factory to lazily create the renderer.
59
+ * Required for translate_{name} tool. Called once on first use.
60
+ */
61
+ readonly getRenderer?: () => NaturalLanguageRenderer | ((node: SemanticNode, language: string) => string) | Promise<NaturalLanguageRenderer | ((node: SemanticNode, language: string) => string)>;
62
+ /**
63
+ * Which standard tools to generate. Default: all four.
64
+ */
65
+ readonly tools?: readonly ('parse' | 'compile' | 'validate' | 'translate')[];
66
+ /**
67
+ * Optional scan configuration for AOT compilation and Vite plugin.
68
+ * Declares which HTML attributes/script types this domain uses.
69
+ */
70
+ readonly scanConfig?: {
71
+ /** Attribute names to scan for (e.g., ['data-sql', '_sql']) */
72
+ readonly attributes: readonly string[];
73
+ /** Script tag types to scan for (e.g., ['text/sql-dsl']) */
74
+ readonly scriptTypes?: readonly string[];
75
+ /** Default language when not specified on element */
76
+ readonly defaultLanguage?: string;
77
+ /** Keywords for detection, keyed by language code */
78
+ readonly keywords?: Readonly<Record<string, readonly string[]>>;
79
+ };
80
+ }
81
+ /**
82
+ * MCP tool definition. Compatible with the MCP SDK's tool schema.
83
+ */
84
+ export interface MCPToolDefinition {
85
+ readonly name: string;
86
+ readonly description: string;
87
+ readonly inputSchema: {
88
+ readonly type: 'object';
89
+ readonly properties: Record<string, unknown>;
90
+ readonly required: readonly string[];
91
+ };
92
+ }
93
+ /**
94
+ * MCP tool response. Compatible with the MCP SDK's response format.
95
+ */
96
+ export interface MCPToolResponse {
97
+ readonly content: ReadonlyArray<{
98
+ readonly type: string;
99
+ readonly text: string;
100
+ }>;
101
+ readonly isError?: boolean;
102
+ }
103
+ /**
104
+ * Registry for framework domains.
105
+ *
106
+ * Manages domain descriptors, generates MCP tool definitions,
107
+ * and dispatches tool calls to the appropriate domain.
108
+ */
109
+ export declare class DomainRegistry {
110
+ private descriptors;
111
+ private dslCache;
112
+ private rendererCache;
113
+ /**
114
+ * Register a domain.
115
+ * @throws if a domain with the same name is already registered
116
+ */
117
+ register(descriptor: DomainDescriptor): void;
118
+ /**
119
+ * Get all registered domain names.
120
+ */
121
+ getDomainNames(): string[];
122
+ /**
123
+ * Get a specific domain descriptor.
124
+ */
125
+ getDescriptor(name: string): DomainDescriptor | undefined;
126
+ /**
127
+ * Generate MCP tool definitions for all registered domains.
128
+ */
129
+ getToolDefinitions(): MCPToolDefinition[];
130
+ /**
131
+ * Check if a tool name belongs to a registered domain.
132
+ */
133
+ canHandle(toolName: string): boolean;
134
+ /**
135
+ * Handle a tool call by dispatching to the appropriate domain.
136
+ * Returns null if the tool name doesn't match any registered domain.
137
+ */
138
+ handleToolCall(toolName: string, args: Record<string, unknown>): Promise<MCPToolResponse | null>;
139
+ /**
140
+ * Get the DSL instance for a named domain.
141
+ * Returns null if the domain is not registered.
142
+ * The DSL is lazily created and cached.
143
+ */
144
+ getDSLForDomain(name: string): Promise<MultilingualDSL | null>;
145
+ private getDSL;
146
+ private getRenderer;
147
+ private handleParse;
148
+ private handleCompile;
149
+ private handleValidate;
150
+ private handleTranslate;
151
+ }
152
+ //# sourceMappingURL=domain-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-registry.d.ts","sourceRoot":"","sources":["../../src/api/domain-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAmC,MAAM,cAAc,CAAC;AACrF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAMtE;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,iDAAiD;IACjD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAElE;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MACnB,uBAAuB,GACvB,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAClD,OAAO,CAAC,uBAAuB,GAAG,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC;IAE1F;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC;IAE7E;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,+DAA+D;QAC/D,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;QACvC,4DAA4D;QAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,qDAAqD;QACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAClC,qDAAqD;QACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;KACjE,CAAC;CACH;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;KACtC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAMD;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,aAAa,CAGjB;IAEJ;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAO5C;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIzD;;OAEG;IACH,kBAAkB,IAAI,iBAAiB,EAAE;IAQzC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMpC;;;OAGG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA4BlC;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAUtD,MAAM;YASN,WAAW;YAiBX,WAAW;YAwBX,aAAa;YAoBb,cAAc;YAmBd,eAAe;CAyC9B"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Main API exports for @lokascript/framework
3
+ */
4
+ export * from './create-dsl';
5
+ export * from './domain-registry';
6
+ export * from './dispatcher';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}