@lokascript/semantic 1.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 (435) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +686 -0
  3. package/dist/browser-ar.ar.global.js +2 -0
  4. package/dist/browser-core.core.global.js +2 -0
  5. package/dist/browser-de.de.global.js +2 -0
  6. package/dist/browser-east-asian.east-asian.global.js +2 -0
  7. package/dist/browser-en-tr.en-tr.global.js +2 -0
  8. package/dist/browser-en.en.global.js +2 -0
  9. package/dist/browser-es-en.es-en.global.js +2 -0
  10. package/dist/browser-es.es.global.js +2 -0
  11. package/dist/browser-fr.fr.global.js +2 -0
  12. package/dist/browser-id.id.global.js +2 -0
  13. package/dist/browser-ja.ja.global.js +2 -0
  14. package/dist/browser-ko.ko.global.js +2 -0
  15. package/dist/browser-lazy.lazy.global.js +2 -0
  16. package/dist/browser-priority.priority.global.js +2 -0
  17. package/dist/browser-pt.pt.global.js +2 -0
  18. package/dist/browser-qu.qu.global.js +2 -0
  19. package/dist/browser-sw.sw.global.js +2 -0
  20. package/dist/browser-tr.tr.global.js +2 -0
  21. package/dist/browser-western.western.global.js +2 -0
  22. package/dist/browser-zh.zh.global.js +2 -0
  23. package/dist/browser.global.js +3 -0
  24. package/dist/browser.global.js.map +1 -0
  25. package/dist/index.cjs +35051 -0
  26. package/dist/index.cjs.map +1 -0
  27. package/dist/index.d.cts +3426 -0
  28. package/dist/index.d.ts +3426 -0
  29. package/dist/index.js +34890 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/languages/ar.d.ts +78 -0
  32. package/dist/languages/ar.js +1622 -0
  33. package/dist/languages/ar.js.map +1 -0
  34. package/dist/languages/de.d.ts +38 -0
  35. package/dist/languages/de.js +1168 -0
  36. package/dist/languages/de.js.map +1 -0
  37. package/dist/languages/en.d.ts +44 -0
  38. package/dist/languages/en.js +3491 -0
  39. package/dist/languages/en.js.map +1 -0
  40. package/dist/languages/es.d.ts +52 -0
  41. package/dist/languages/es.js +1493 -0
  42. package/dist/languages/es.js.map +1 -0
  43. package/dist/languages/fr.d.ts +37 -0
  44. package/dist/languages/fr.js +1159 -0
  45. package/dist/languages/fr.js.map +1 -0
  46. package/dist/languages/id.d.ts +35 -0
  47. package/dist/languages/id.js +1152 -0
  48. package/dist/languages/id.js.map +1 -0
  49. package/dist/languages/ja.d.ts +53 -0
  50. package/dist/languages/ja.js +1430 -0
  51. package/dist/languages/ja.js.map +1 -0
  52. package/dist/languages/ko.d.ts +51 -0
  53. package/dist/languages/ko.js +1729 -0
  54. package/dist/languages/ko.js.map +1 -0
  55. package/dist/languages/pt.d.ts +37 -0
  56. package/dist/languages/pt.js +1127 -0
  57. package/dist/languages/pt.js.map +1 -0
  58. package/dist/languages/qu.d.ts +36 -0
  59. package/dist/languages/qu.js +1143 -0
  60. package/dist/languages/qu.js.map +1 -0
  61. package/dist/languages/sw.d.ts +35 -0
  62. package/dist/languages/sw.js +1147 -0
  63. package/dist/languages/sw.js.map +1 -0
  64. package/dist/languages/tr.d.ts +45 -0
  65. package/dist/languages/tr.js +1529 -0
  66. package/dist/languages/tr.js.map +1 -0
  67. package/dist/languages/zh.d.ts +58 -0
  68. package/dist/languages/zh.js +1257 -0
  69. package/dist/languages/zh.js.map +1 -0
  70. package/dist/types-C4dcj53L.d.ts +600 -0
  71. package/package.json +202 -0
  72. package/src/__test-utils__/index.ts +7 -0
  73. package/src/__test-utils__/test-helpers.ts +8 -0
  74. package/src/__types__/test-helpers.ts +122 -0
  75. package/src/analysis/index.ts +479 -0
  76. package/src/ast-builder/command-mappers.ts +1133 -0
  77. package/src/ast-builder/expression-parser/index.ts +41 -0
  78. package/src/ast-builder/expression-parser/parser.ts +563 -0
  79. package/src/ast-builder/expression-parser/tokenizer.ts +394 -0
  80. package/src/ast-builder/expression-parser/types.ts +208 -0
  81. package/src/ast-builder/index.ts +536 -0
  82. package/src/ast-builder/value-converters.ts +172 -0
  83. package/src/bridge.ts +275 -0
  84. package/src/browser-ar.ts +162 -0
  85. package/src/browser-core.ts +231 -0
  86. package/src/browser-de.ts +162 -0
  87. package/src/browser-east-asian.ts +173 -0
  88. package/src/browser-en-tr.ts +165 -0
  89. package/src/browser-en.ts +157 -0
  90. package/src/browser-es-en.ts +200 -0
  91. package/src/browser-es.ts +170 -0
  92. package/src/browser-fr.ts +162 -0
  93. package/src/browser-id.ts +162 -0
  94. package/src/browser-ja.ts +162 -0
  95. package/src/browser-ko.ts +162 -0
  96. package/src/browser-lazy.ts +189 -0
  97. package/src/browser-priority.ts +214 -0
  98. package/src/browser-pt.ts +162 -0
  99. package/src/browser-qu.ts +162 -0
  100. package/src/browser-sw.ts +162 -0
  101. package/src/browser-tr.ts +162 -0
  102. package/src/browser-western.ts +181 -0
  103. package/src/browser-zh.ts +162 -0
  104. package/src/browser.ts +268 -0
  105. package/src/cache/index.ts +14 -0
  106. package/src/cache/semantic-cache.ts +344 -0
  107. package/src/core-bridge.ts +372 -0
  108. package/src/explicit/converter.ts +258 -0
  109. package/src/explicit/index.ts +18 -0
  110. package/src/explicit/parser.ts +236 -0
  111. package/src/explicit/renderer.ts +424 -0
  112. package/src/generators/command-schemas.ts +1636 -0
  113. package/src/generators/event-handler-generator.ts +109 -0
  114. package/src/generators/index.ts +117 -0
  115. package/src/generators/language-profiles.ts +139 -0
  116. package/src/generators/pattern-generator.ts +537 -0
  117. package/src/generators/profiles/arabic.ts +131 -0
  118. package/src/generators/profiles/bengali.ts +132 -0
  119. package/src/generators/profiles/chinese.ts +124 -0
  120. package/src/generators/profiles/english.ts +113 -0
  121. package/src/generators/profiles/french.ts +125 -0
  122. package/src/generators/profiles/german.ts +126 -0
  123. package/src/generators/profiles/hindi.ts +146 -0
  124. package/src/generators/profiles/index.ts +46 -0
  125. package/src/generators/profiles/indonesian.ts +125 -0
  126. package/src/generators/profiles/italian.ts +139 -0
  127. package/src/generators/profiles/japanese.ts +149 -0
  128. package/src/generators/profiles/korean.ts +127 -0
  129. package/src/generators/profiles/marker-templates.ts +288 -0
  130. package/src/generators/profiles/ms.ts +130 -0
  131. package/src/generators/profiles/polish.ts +249 -0
  132. package/src/generators/profiles/portuguese.ts +115 -0
  133. package/src/generators/profiles/quechua.ts +113 -0
  134. package/src/generators/profiles/russian.ts +260 -0
  135. package/src/generators/profiles/spanish.ts +130 -0
  136. package/src/generators/profiles/swahili.ts +129 -0
  137. package/src/generators/profiles/thai.ts +132 -0
  138. package/src/generators/profiles/tl.ts +128 -0
  139. package/src/generators/profiles/turkish.ts +124 -0
  140. package/src/generators/profiles/types.ts +165 -0
  141. package/src/generators/profiles/ukrainian.ts +270 -0
  142. package/src/generators/profiles/vietnamese.ts +133 -0
  143. package/src/generators/schema-error-codes.ts +160 -0
  144. package/src/generators/schema-validator.ts +391 -0
  145. package/src/index.ts +429 -0
  146. package/src/language-building-schema.ts +3170 -0
  147. package/src/language-loader.ts +394 -0
  148. package/src/languages/_all.ts +65 -0
  149. package/src/languages/ar.ts +15 -0
  150. package/src/languages/bn.ts +16 -0
  151. package/src/languages/de.ts +15 -0
  152. package/src/languages/en.ts +29 -0
  153. package/src/languages/es.ts +15 -0
  154. package/src/languages/fr.ts +15 -0
  155. package/src/languages/hi.ts +26 -0
  156. package/src/languages/id.ts +15 -0
  157. package/src/languages/index.ts +18 -0
  158. package/src/languages/it.ts +15 -0
  159. package/src/languages/ja.ts +15 -0
  160. package/src/languages/ko.ts +15 -0
  161. package/src/languages/ms.ts +16 -0
  162. package/src/languages/pl.ts +18 -0
  163. package/src/languages/pt.ts +15 -0
  164. package/src/languages/qu.ts +15 -0
  165. package/src/languages/ru.ts +26 -0
  166. package/src/languages/sw.ts +15 -0
  167. package/src/languages/th.ts +16 -0
  168. package/src/languages/tl.ts +16 -0
  169. package/src/languages/tr.ts +15 -0
  170. package/src/languages/uk.ts +26 -0
  171. package/src/languages/vi.ts +16 -0
  172. package/src/languages/zh.ts +15 -0
  173. package/src/parser/index.ts +15 -0
  174. package/src/parser/pattern-matcher.ts +1181 -0
  175. package/src/parser/semantic-parser.ts +573 -0
  176. package/src/parser/utils/index.ts +35 -0
  177. package/src/parser/utils/marker-resolution.ts +111 -0
  178. package/src/parser/utils/possessive-keywords.ts +43 -0
  179. package/src/parser/utils/role-positioning.ts +70 -0
  180. package/src/parser/utils/type-validation.ts +134 -0
  181. package/src/patterns/add/ar.ts +71 -0
  182. package/src/patterns/add/bn.ts +70 -0
  183. package/src/patterns/add/hi.ts +69 -0
  184. package/src/patterns/add/index.ts +87 -0
  185. package/src/patterns/add/it.ts +61 -0
  186. package/src/patterns/add/ja.ts +93 -0
  187. package/src/patterns/add/ko.ts +74 -0
  188. package/src/patterns/add/ms.ts +30 -0
  189. package/src/patterns/add/pl.ts +62 -0
  190. package/src/patterns/add/ru.ts +62 -0
  191. package/src/patterns/add/th.ts +49 -0
  192. package/src/patterns/add/tl.ts +30 -0
  193. package/src/patterns/add/tr.ts +71 -0
  194. package/src/patterns/add/uk.ts +62 -0
  195. package/src/patterns/add/vi.ts +61 -0
  196. package/src/patterns/add/zh.ts +71 -0
  197. package/src/patterns/builders.ts +207 -0
  198. package/src/patterns/decrement/bn.ts +70 -0
  199. package/src/patterns/decrement/de.ts +42 -0
  200. package/src/patterns/decrement/hi.ts +68 -0
  201. package/src/patterns/decrement/index.ts +79 -0
  202. package/src/patterns/decrement/it.ts +69 -0
  203. package/src/patterns/decrement/ms.ts +30 -0
  204. package/src/patterns/decrement/pl.ts +58 -0
  205. package/src/patterns/decrement/ru.ts +58 -0
  206. package/src/patterns/decrement/th.ts +49 -0
  207. package/src/patterns/decrement/tl.ts +30 -0
  208. package/src/patterns/decrement/tr.ts +48 -0
  209. package/src/patterns/decrement/uk.ts +58 -0
  210. package/src/patterns/decrement/vi.ts +61 -0
  211. package/src/patterns/decrement/zh.ts +32 -0
  212. package/src/patterns/en.ts +302 -0
  213. package/src/patterns/event-handler/ar.ts +151 -0
  214. package/src/patterns/event-handler/bn.ts +72 -0
  215. package/src/patterns/event-handler/de.ts +117 -0
  216. package/src/patterns/event-handler/en.ts +117 -0
  217. package/src/patterns/event-handler/es.ts +136 -0
  218. package/src/patterns/event-handler/fr.ts +117 -0
  219. package/src/patterns/event-handler/hi.ts +64 -0
  220. package/src/patterns/event-handler/id.ts +117 -0
  221. package/src/patterns/event-handler/index.ts +119 -0
  222. package/src/patterns/event-handler/it.ts +54 -0
  223. package/src/patterns/event-handler/ja.ts +118 -0
  224. package/src/patterns/event-handler/ko.ts +133 -0
  225. package/src/patterns/event-handler/ms.ts +30 -0
  226. package/src/patterns/event-handler/pl.ts +62 -0
  227. package/src/patterns/event-handler/pt.ts +117 -0
  228. package/src/patterns/event-handler/qu.ts +66 -0
  229. package/src/patterns/event-handler/ru.ts +62 -0
  230. package/src/patterns/event-handler/shared.ts +270 -0
  231. package/src/patterns/event-handler/sw.ts +117 -0
  232. package/src/patterns/event-handler/th.ts +53 -0
  233. package/src/patterns/event-handler/tl.ts +30 -0
  234. package/src/patterns/event-handler/tr.ts +170 -0
  235. package/src/patterns/event-handler/uk.ts +62 -0
  236. package/src/patterns/event-handler/vi.ts +61 -0
  237. package/src/patterns/event-handler/zh.ts +150 -0
  238. package/src/patterns/get/ar.ts +49 -0
  239. package/src/patterns/get/bn.ts +47 -0
  240. package/src/patterns/get/de.ts +32 -0
  241. package/src/patterns/get/hi.ts +52 -0
  242. package/src/patterns/get/index.ts +83 -0
  243. package/src/patterns/get/it.ts +56 -0
  244. package/src/patterns/get/ja.ts +53 -0
  245. package/src/patterns/get/ko.ts +53 -0
  246. package/src/patterns/get/ms.ts +30 -0
  247. package/src/patterns/get/pl.ts +57 -0
  248. package/src/patterns/get/ru.ts +57 -0
  249. package/src/patterns/get/th.ts +29 -0
  250. package/src/patterns/get/tl.ts +30 -0
  251. package/src/patterns/get/uk.ts +57 -0
  252. package/src/patterns/get/vi.ts +48 -0
  253. package/src/patterns/grammar-transformed/index.ts +39 -0
  254. package/src/patterns/grammar-transformed/ja.ts +1713 -0
  255. package/src/patterns/grammar-transformed/ko.ts +1311 -0
  256. package/src/patterns/grammar-transformed/tr.ts +1067 -0
  257. package/src/patterns/hide/ar.ts +67 -0
  258. package/src/patterns/hide/bn.ts +47 -0
  259. package/src/patterns/hide/de.ts +36 -0
  260. package/src/patterns/hide/hi.ts +61 -0
  261. package/src/patterns/hide/index.ts +91 -0
  262. package/src/patterns/hide/it.ts +56 -0
  263. package/src/patterns/hide/ja.ts +69 -0
  264. package/src/patterns/hide/ko.ts +69 -0
  265. package/src/patterns/hide/ms.ts +30 -0
  266. package/src/patterns/hide/pl.ts +57 -0
  267. package/src/patterns/hide/ru.ts +57 -0
  268. package/src/patterns/hide/th.ts +29 -0
  269. package/src/patterns/hide/tl.ts +30 -0
  270. package/src/patterns/hide/tr.ts +65 -0
  271. package/src/patterns/hide/uk.ts +57 -0
  272. package/src/patterns/hide/vi.ts +56 -0
  273. package/src/patterns/hide/zh.ts +68 -0
  274. package/src/patterns/increment/bn.ts +70 -0
  275. package/src/patterns/increment/de.ts +36 -0
  276. package/src/patterns/increment/hi.ts +68 -0
  277. package/src/patterns/increment/index.ts +79 -0
  278. package/src/patterns/increment/it.ts +69 -0
  279. package/src/patterns/increment/ms.ts +30 -0
  280. package/src/patterns/increment/pl.ts +58 -0
  281. package/src/patterns/increment/ru.ts +58 -0
  282. package/src/patterns/increment/th.ts +49 -0
  283. package/src/patterns/increment/tl.ts +30 -0
  284. package/src/patterns/increment/tr.ts +52 -0
  285. package/src/patterns/increment/uk.ts +58 -0
  286. package/src/patterns/increment/vi.ts +61 -0
  287. package/src/patterns/increment/zh.ts +32 -0
  288. package/src/patterns/index.ts +84 -0
  289. package/src/patterns/languages/en/control-flow.ts +93 -0
  290. package/src/patterns/languages/en/fetch.ts +62 -0
  291. package/src/patterns/languages/en/index.ts +42 -0
  292. package/src/patterns/languages/en/repeat.ts +67 -0
  293. package/src/patterns/languages/en/set.ts +48 -0
  294. package/src/patterns/languages/en/swap.ts +38 -0
  295. package/src/patterns/languages/en/temporal.ts +57 -0
  296. package/src/patterns/put/ar.ts +74 -0
  297. package/src/patterns/put/bn.ts +53 -0
  298. package/src/patterns/put/en.ts +74 -0
  299. package/src/patterns/put/es.ts +74 -0
  300. package/src/patterns/put/hi.ts +69 -0
  301. package/src/patterns/put/id.ts +96 -0
  302. package/src/patterns/put/index.ts +99 -0
  303. package/src/patterns/put/it.ts +56 -0
  304. package/src/patterns/put/ja.ts +75 -0
  305. package/src/patterns/put/ko.ts +67 -0
  306. package/src/patterns/put/ms.ts +30 -0
  307. package/src/patterns/put/pl.ts +81 -0
  308. package/src/patterns/put/ru.ts +85 -0
  309. package/src/patterns/put/th.ts +32 -0
  310. package/src/patterns/put/tl.ts +30 -0
  311. package/src/patterns/put/tr.ts +67 -0
  312. package/src/patterns/put/uk.ts +85 -0
  313. package/src/patterns/put/vi.ts +72 -0
  314. package/src/patterns/put/zh.ts +62 -0
  315. package/src/patterns/registry.ts +163 -0
  316. package/src/patterns/remove/ar.ts +71 -0
  317. package/src/patterns/remove/bn.ts +68 -0
  318. package/src/patterns/remove/hi.ts +69 -0
  319. package/src/patterns/remove/index.ts +87 -0
  320. package/src/patterns/remove/it.ts +69 -0
  321. package/src/patterns/remove/ja.ts +74 -0
  322. package/src/patterns/remove/ko.ts +78 -0
  323. package/src/patterns/remove/ms.ts +30 -0
  324. package/src/patterns/remove/pl.ts +62 -0
  325. package/src/patterns/remove/ru.ts +62 -0
  326. package/src/patterns/remove/th.ts +49 -0
  327. package/src/patterns/remove/tl.ts +30 -0
  328. package/src/patterns/remove/tr.ts +78 -0
  329. package/src/patterns/remove/uk.ts +62 -0
  330. package/src/patterns/remove/vi.ts +61 -0
  331. package/src/patterns/remove/zh.ts +72 -0
  332. package/src/patterns/set/ar.ts +84 -0
  333. package/src/patterns/set/bn.ts +53 -0
  334. package/src/patterns/set/de.ts +84 -0
  335. package/src/patterns/set/es.ts +92 -0
  336. package/src/patterns/set/fr.ts +88 -0
  337. package/src/patterns/set/hi.ts +56 -0
  338. package/src/patterns/set/id.ts +84 -0
  339. package/src/patterns/set/index.ts +107 -0
  340. package/src/patterns/set/it.ts +56 -0
  341. package/src/patterns/set/ja.ts +86 -0
  342. package/src/patterns/set/ko.ts +85 -0
  343. package/src/patterns/set/ms.ts +30 -0
  344. package/src/patterns/set/pl.ts +57 -0
  345. package/src/patterns/set/pt.ts +84 -0
  346. package/src/patterns/set/ru.ts +57 -0
  347. package/src/patterns/set/th.ts +31 -0
  348. package/src/patterns/set/tl.ts +30 -0
  349. package/src/patterns/set/tr.ts +107 -0
  350. package/src/patterns/set/uk.ts +57 -0
  351. package/src/patterns/set/vi.ts +53 -0
  352. package/src/patterns/set/zh.ts +84 -0
  353. package/src/patterns/show/ar.ts +67 -0
  354. package/src/patterns/show/bn.ts +47 -0
  355. package/src/patterns/show/de.ts +32 -0
  356. package/src/patterns/show/fr.ts +32 -0
  357. package/src/patterns/show/hi.ts +61 -0
  358. package/src/patterns/show/index.ts +95 -0
  359. package/src/patterns/show/it.ts +56 -0
  360. package/src/patterns/show/ja.ts +69 -0
  361. package/src/patterns/show/ko.ts +73 -0
  362. package/src/patterns/show/ms.ts +30 -0
  363. package/src/patterns/show/pl.ts +57 -0
  364. package/src/patterns/show/ru.ts +57 -0
  365. package/src/patterns/show/th.ts +29 -0
  366. package/src/patterns/show/tl.ts +30 -0
  367. package/src/patterns/show/tr.ts +65 -0
  368. package/src/patterns/show/uk.ts +57 -0
  369. package/src/patterns/show/vi.ts +56 -0
  370. package/src/patterns/show/zh.ts +68 -0
  371. package/src/patterns/take/ar.ts +51 -0
  372. package/src/patterns/take/index.ts +31 -0
  373. package/src/patterns/toggle/ar.ts +61 -0
  374. package/src/patterns/toggle/bn.ts +70 -0
  375. package/src/patterns/toggle/en.ts +61 -0
  376. package/src/patterns/toggle/es.ts +61 -0
  377. package/src/patterns/toggle/hi.ts +80 -0
  378. package/src/patterns/toggle/index.ts +95 -0
  379. package/src/patterns/toggle/it.ts +69 -0
  380. package/src/patterns/toggle/ja.ts +156 -0
  381. package/src/patterns/toggle/ko.ts +113 -0
  382. package/src/patterns/toggle/ms.ts +30 -0
  383. package/src/patterns/toggle/pl.ts +62 -0
  384. package/src/patterns/toggle/ru.ts +62 -0
  385. package/src/patterns/toggle/th.ts +50 -0
  386. package/src/patterns/toggle/tl.ts +30 -0
  387. package/src/patterns/toggle/tr.ts +88 -0
  388. package/src/patterns/toggle/uk.ts +62 -0
  389. package/src/patterns/toggle/vi.ts +61 -0
  390. package/src/patterns/toggle/zh.ts +99 -0
  391. package/src/public-api.ts +286 -0
  392. package/src/registry.ts +441 -0
  393. package/src/tokenizers/arabic.ts +723 -0
  394. package/src/tokenizers/base.ts +1300 -0
  395. package/src/tokenizers/bengali.ts +289 -0
  396. package/src/tokenizers/chinese.ts +481 -0
  397. package/src/tokenizers/english.ts +416 -0
  398. package/src/tokenizers/french.ts +326 -0
  399. package/src/tokenizers/german.ts +324 -0
  400. package/src/tokenizers/hindi.ts +319 -0
  401. package/src/tokenizers/index.ts +127 -0
  402. package/src/tokenizers/indonesian.ts +306 -0
  403. package/src/tokenizers/italian.ts +458 -0
  404. package/src/tokenizers/japanese.ts +447 -0
  405. package/src/tokenizers/korean.ts +642 -0
  406. package/src/tokenizers/morphology/arabic-normalizer.ts +242 -0
  407. package/src/tokenizers/morphology/french-normalizer.ts +268 -0
  408. package/src/tokenizers/morphology/german-normalizer.ts +256 -0
  409. package/src/tokenizers/morphology/index.ts +46 -0
  410. package/src/tokenizers/morphology/italian-normalizer.ts +329 -0
  411. package/src/tokenizers/morphology/japanese-normalizer.ts +288 -0
  412. package/src/tokenizers/morphology/korean-normalizer.ts +428 -0
  413. package/src/tokenizers/morphology/polish-normalizer.ts +264 -0
  414. package/src/tokenizers/morphology/portuguese-normalizer.ts +310 -0
  415. package/src/tokenizers/morphology/spanish-normalizer.ts +327 -0
  416. package/src/tokenizers/morphology/turkish-normalizer.ts +412 -0
  417. package/src/tokenizers/morphology/types.ts +211 -0
  418. package/src/tokenizers/ms.ts +198 -0
  419. package/src/tokenizers/polish.ts +354 -0
  420. package/src/tokenizers/portuguese.ts +304 -0
  421. package/src/tokenizers/quechua.ts +339 -0
  422. package/src/tokenizers/russian.ts +375 -0
  423. package/src/tokenizers/spanish.ts +403 -0
  424. package/src/tokenizers/swahili.ts +303 -0
  425. package/src/tokenizers/thai.ts +236 -0
  426. package/src/tokenizers/tl.ts +198 -0
  427. package/src/tokenizers/turkish.ts +411 -0
  428. package/src/tokenizers/ukrainian.ts +369 -0
  429. package/src/tokenizers/vietnamese.ts +410 -0
  430. package/src/types/grammar-types.ts +617 -0
  431. package/src/types/unified-profile.ts +267 -0
  432. package/src/types.ts +709 -0
  433. package/src/utils/confidence-calculator.ts +147 -0
  434. package/src/validators/command-validator.ts +380 -0
  435. package/src/validators/index.ts +15 -0
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Marker Resolution Utility
3
+ *
4
+ * Shared utilities for resolving role markers from language profiles.
5
+ * Used by pattern-generator to build tokens and extraction rules.
6
+ */
7
+
8
+ import type { SemanticRole } from '../../types';
9
+ import type { LanguageProfile, RoleMarker } from '../../generators/language-profiles';
10
+
11
+ /**
12
+ * Minimum interface for role specs that can have marker resolution.
13
+ * Compatible with the RoleSpec type from command-schemas.
14
+ */
15
+ export interface RoleSpecWithMarker {
16
+ role: SemanticRole;
17
+ markerOverride?: Record<string, string | undefined>;
18
+ }
19
+
20
+ /**
21
+ * Resolved marker information for a role.
22
+ */
23
+ export interface ResolvedMarker {
24
+ /** Primary marker string (may be empty string for no marker) */
25
+ primary: string;
26
+ /** Alternative markers */
27
+ alternatives?: string[];
28
+ /** Position relative to role value */
29
+ position: 'before' | 'after';
30
+ /** Whether this is an override marker */
31
+ isOverride: boolean;
32
+ }
33
+
34
+ /**
35
+ * Resolve the marker for a role in a specific language.
36
+ *
37
+ * Checks for command-specific marker overrides first,
38
+ * then falls back to the default marker from the language profile.
39
+ *
40
+ * @param roleSpec Role specification with optional override
41
+ * @param profile Language profile with role markers
42
+ * @returns Resolved marker info, or null if no marker
43
+ */
44
+ export function resolveMarkerForRole(
45
+ roleSpec: RoleSpecWithMarker,
46
+ profile: LanguageProfile
47
+ ): ResolvedMarker | null {
48
+ // Check for command-specific marker override first
49
+ const overrideMarker = roleSpec.markerOverride?.[profile.code];
50
+ const defaultMarker = profile.roleMarkers[roleSpec.role];
51
+
52
+ if (overrideMarker !== undefined) {
53
+ // Use override marker (can be empty string to suppress default marker)
54
+ return {
55
+ primary: overrideMarker,
56
+ position: defaultMarker?.position ?? 'before',
57
+ isOverride: true,
58
+ };
59
+ }
60
+
61
+ if (defaultMarker && defaultMarker.primary) {
62
+ const result: ResolvedMarker = {
63
+ primary: defaultMarker.primary,
64
+ position: defaultMarker.position,
65
+ isOverride: false,
66
+ };
67
+ if (defaultMarker.alternatives) {
68
+ result.alternatives = defaultMarker.alternatives;
69
+ }
70
+ return result;
71
+ }
72
+
73
+ return null;
74
+ }
75
+
76
+ /**
77
+ * Get all markers (primary + alternatives) for a role.
78
+ *
79
+ * @param roleSpec Role specification
80
+ * @param profile Language profile
81
+ * @returns Array of marker strings, or empty array if no markers
82
+ */
83
+ export function getAllMarkersForRole(
84
+ roleSpec: RoleSpecWithMarker,
85
+ profile: LanguageProfile
86
+ ): string[] {
87
+ const resolved = resolveMarkerForRole(roleSpec, profile);
88
+ if (!resolved || !resolved.primary) {
89
+ return [];
90
+ }
91
+
92
+ const markers = [resolved.primary];
93
+ if (resolved.alternatives) {
94
+ markers.push(...resolved.alternatives);
95
+ }
96
+ return markers;
97
+ }
98
+
99
+ /**
100
+ * Get the default role marker from a language profile.
101
+ *
102
+ * @param profile Language profile
103
+ * @param role Semantic role
104
+ * @returns Role marker or undefined
105
+ */
106
+ export function getDefaultRoleMarker(
107
+ profile: LanguageProfile,
108
+ role: SemanticRole
109
+ ): RoleMarker | undefined {
110
+ return profile.roleMarkers[role];
111
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Possessive Keywords Utility
3
+ *
4
+ * Provides functions to look up possessive keywords from language profiles.
5
+ * Used by pattern-matcher to recognize possessive expressions like "my value".
6
+ */
7
+
8
+ import type { LanguageProfile } from '../../generators/profiles/types';
9
+
10
+ /**
11
+ * Get the reference for a possessive keyword from a language profile.
12
+ *
13
+ * @param profile Language profile
14
+ * @param keyword Possessive keyword (e.g., 'my', 'your', 'its')
15
+ * @returns The reference (e.g., 'me', 'you', 'it') or undefined if not found
16
+ */
17
+ export function getPossessiveReference(
18
+ profile: LanguageProfile,
19
+ keyword: string
20
+ ): string | undefined {
21
+ return profile.possessive?.keywords?.[keyword];
22
+ }
23
+
24
+ /**
25
+ * Check if a keyword is a possessive keyword in the given profile.
26
+ *
27
+ * @param profile Language profile
28
+ * @param keyword Keyword to check
29
+ * @returns True if the keyword is a possessive keyword
30
+ */
31
+ export function isPossessiveKeyword(profile: LanguageProfile, keyword: string): boolean {
32
+ return profile.possessive?.keywords?.[keyword] !== undefined;
33
+ }
34
+
35
+ /**
36
+ * Get all possessive keywords from a language profile.
37
+ *
38
+ * @param profile Language profile
39
+ * @returns Record of possessive keywords to references, or empty object
40
+ */
41
+ export function getAllPossessiveKeywords(profile: LanguageProfile): Record<string, string> {
42
+ return profile.possessive?.keywords ?? {};
43
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Role Positioning Utility
3
+ *
4
+ * Shared utilities for sorting and positioning semantic roles based on word order.
5
+ * Used by pattern-generator and pattern-matcher to ensure consistent behavior.
6
+ */
7
+
8
+ import type { SemanticRole } from '../../types';
9
+ import type { WordOrder } from '../../generators/profiles/types';
10
+
11
+ /**
12
+ * Priority order for semantic roles used in pattern matching.
13
+ * Lower number = higher priority (comes first in pattern).
14
+ * Only includes roles commonly used in patterns.
15
+ */
16
+ export const ROLE_PRIORITY: Partial<Record<SemanticRole, number>> = {
17
+ patient: 1,
18
+ destination: 2,
19
+ source: 3,
20
+ style: 4,
21
+ manner: 5,
22
+ goal: 6,
23
+ };
24
+
25
+ /**
26
+ * Get the priority of a semantic role.
27
+ * Returns 99 for unknown/unlisted roles.
28
+ */
29
+ export function getRolePriority(role: SemanticRole): number {
30
+ return ROLE_PRIORITY[role] ?? 99;
31
+ }
32
+
33
+ /**
34
+ * Sort semantic roles by their priority.
35
+ * Patient comes first, then destination, source, etc.
36
+ */
37
+ export function sortRolesByPriority(roles: SemanticRole[]): SemanticRole[] {
38
+ return [...roles].sort((a, b) => getRolePriority(a) - getRolePriority(b));
39
+ }
40
+
41
+ // Re-export for convenience
42
+ export type { WordOrder };
43
+
44
+ /**
45
+ * Minimum interface for roles that can be sorted by position.
46
+ */
47
+ export interface RoleWithPosition {
48
+ role: SemanticRole;
49
+ sovPosition?: number;
50
+ svoPosition?: number;
51
+ }
52
+
53
+ /**
54
+ * Sort roles by their position for a given word order.
55
+ *
56
+ * @param roles Array of role specs with position info
57
+ * @param wordOrder The word order to use (SVO, SOV, VSO)
58
+ * @returns Sorted array of roles
59
+ */
60
+ export function sortRolesByWordOrder<T extends RoleWithPosition>(
61
+ roles: readonly T[],
62
+ wordOrder: WordOrder
63
+ ): T[] {
64
+ const sortKey = wordOrder === 'SOV' ? 'sovPosition' : 'svoPosition';
65
+ return [...roles].sort((a, b) => {
66
+ const aPos = a[sortKey] ?? 99;
67
+ const bPos = b[sortKey] ?? 99;
68
+ return aPos - bPos;
69
+ });
70
+ }
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Type Validation Utility
3
+ *
4
+ * Shared utilities for validating semantic value types against expected types.
5
+ * Used by pattern-matcher to validate captured role values.
6
+ */
7
+
8
+ import type { SemanticValue } from '../../types';
9
+
10
+ /**
11
+ * Semantic value type strings.
12
+ */
13
+ export type SemanticValueType = SemanticValue['type'];
14
+
15
+ /**
16
+ * Check if a value type matches any of the expected types.
17
+ *
18
+ * The 'expression' type is treated as a wildcard that matches any value.
19
+ * The 'property-path' type is compatible with selector, reference, and expression.
20
+ *
21
+ * @param actualType The actual type of the value
22
+ * @param expectedTypes Array of expected types
23
+ * @returns True if the type is compatible
24
+ */
25
+ export function isTypeCompatible(
26
+ actualType: SemanticValueType | string,
27
+ expectedTypes: (SemanticValueType | string)[]
28
+ ): boolean {
29
+ // Empty expected types means any type is valid
30
+ if (!expectedTypes || expectedTypes.length === 0) {
31
+ return true;
32
+ }
33
+
34
+ // Direct match
35
+ if (expectedTypes.includes(actualType)) {
36
+ return true;
37
+ }
38
+
39
+ // 'expression' is always compatible (wildcard)
40
+ if (expectedTypes.includes('expression')) {
41
+ return true;
42
+ }
43
+
44
+ // 'property-path' is compatible with selector, reference, and expression
45
+ if (actualType === 'property-path') {
46
+ return expectedTypes.some(t => ['selector', 'reference', 'expression'].includes(t));
47
+ }
48
+
49
+ return false;
50
+ }
51
+
52
+ /**
53
+ * Validate a semantic value against expected types.
54
+ *
55
+ * @param value The semantic value to validate
56
+ * @param expectedTypes Array of expected types (empty means any type is valid)
57
+ * @returns True if the value type is valid
58
+ */
59
+ export function validateValueType(
60
+ value: SemanticValue,
61
+ expectedTypes?: (SemanticValueType | string)[]
62
+ ): boolean {
63
+ if (!expectedTypes || expectedTypes.length === 0) {
64
+ return true;
65
+ }
66
+
67
+ return isTypeCompatible(value.type, expectedTypes);
68
+ }
69
+
70
+ /**
71
+ * Check if a value is a CSS selector.
72
+ */
73
+ export function isCSSSelector(value: string): boolean {
74
+ return value.startsWith('.') || value.startsWith('#') || value.startsWith('<');
75
+ }
76
+
77
+ /**
78
+ * Check if a value is a class name (starts with .).
79
+ */
80
+ export function isClassName(value: string): boolean {
81
+ return value.startsWith('.');
82
+ }
83
+
84
+ /**
85
+ * Check if a value is an ID selector (starts with #).
86
+ */
87
+ export function isIdSelector(value: string): boolean {
88
+ return value.startsWith('#');
89
+ }
90
+
91
+ /**
92
+ * Check if a value is a CSS property reference (starts with *).
93
+ */
94
+ export function isCSSPropertyRef(value: string): boolean {
95
+ return value.startsWith('*');
96
+ }
97
+
98
+ /**
99
+ * Check if a value is a numeric value.
100
+ */
101
+ export function isNumericValue(value: string): boolean {
102
+ // Handle duration values (e.g., "100ms", "2s")
103
+ const durationMatch = value.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);
104
+ if (durationMatch) {
105
+ return true;
106
+ }
107
+
108
+ // Plain number
109
+ const num = parseFloat(value);
110
+ return !isNaN(num) && isFinite(num);
111
+ }
112
+
113
+ /**
114
+ * Check if a value is a property name (identifier-like).
115
+ */
116
+ export function isPropertyName(value: string): boolean {
117
+ // Property names are identifiers (start with letter or _, contain alphanumeric)
118
+ return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(value);
119
+ }
120
+
121
+ /**
122
+ * Check if a value is a variable reference (starts with :).
123
+ */
124
+ export function isVariableRef(value: string): boolean {
125
+ return value.startsWith(':');
126
+ }
127
+
128
+ /**
129
+ * Check if a value is a built-in reference (me, you, it, etc.).
130
+ */
131
+ export function isBuiltInReference(value: string): boolean {
132
+ const builtIns = new Set(['me', 'you', 'it', 'result', 'event', 'target', 'body']);
133
+ return builtIns.has(value.toLowerCase());
134
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Arabic Add Patterns
3
+ *
4
+ * Hand-crafted patterns for "add" command.
5
+ * Arabic uses VSO order: أضف {patient} إلى {target}
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Arabic add patterns.
12
+ */
13
+ export function getAddPatternsAr(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'add-ar-full',
17
+ language: 'ar',
18
+ command: 'add',
19
+ priority: 100,
20
+ template: {
21
+ format: 'أضف {patient} إلى {destination}',
22
+ tokens: [
23
+ { type: 'literal', value: 'أضف', alternatives: ['اضف', 'أضيف', 'اضافة'] },
24
+ { type: 'role', role: 'patient' },
25
+ { type: 'literal', value: 'إلى', alternatives: ['الى', 'ل', 'لـ'] },
26
+ { type: 'role', role: 'destination' },
27
+ ],
28
+ },
29
+ extraction: {
30
+ patient: { position: 1 },
31
+ destination: { marker: 'إلى', markerAlternatives: ['الى', 'ل', 'لـ'] },
32
+ },
33
+ },
34
+ {
35
+ id: 'add-ar-simple',
36
+ language: 'ar',
37
+ command: 'add',
38
+ priority: 90,
39
+ template: {
40
+ format: 'أضف {patient}',
41
+ tokens: [
42
+ { type: 'literal', value: 'أضف', alternatives: ['اضف', 'أضيف'] },
43
+ { type: 'role', role: 'patient' },
44
+ ],
45
+ },
46
+ extraction: {
47
+ patient: { position: 1 },
48
+ destination: { default: { type: 'reference', value: 'me' } },
49
+ },
50
+ },
51
+ {
52
+ id: 'add-ar-with-على',
53
+ language: 'ar',
54
+ command: 'add',
55
+ priority: 95,
56
+ template: {
57
+ format: 'أضف {patient} على {destination}',
58
+ tokens: [
59
+ { type: 'literal', value: 'أضف', alternatives: ['اضف'] },
60
+ { type: 'role', role: 'patient' },
61
+ { type: 'literal', value: 'على' },
62
+ { type: 'role', role: 'destination' },
63
+ ],
64
+ },
65
+ extraction: {
66
+ patient: { position: 1 },
67
+ destination: { marker: 'على' },
68
+ },
69
+ },
70
+ ];
71
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Bengali Add Patterns
3
+ *
4
+ * Patterns for parsing "add" command in Bengali.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getAddPatternsBn(): LanguagePattern[] {
10
+ return [
11
+ // Full pattern: .active কে যোগ করুন
12
+ {
13
+ id: 'add-bn-full',
14
+ language: 'bn',
15
+ command: 'add',
16
+ priority: 100,
17
+ template: {
18
+ format: '{patient} কে যোগ করুন',
19
+ tokens: [
20
+ { type: 'role', role: 'patient' },
21
+ { type: 'literal', value: 'কে' },
22
+ { type: 'literal', value: 'যোগ' },
23
+ { type: 'literal', value: 'করুন' },
24
+ ],
25
+ },
26
+ extraction: {
27
+ patient: { position: 0 },
28
+ },
29
+ },
30
+ // Simple pattern: যোগ .active
31
+ {
32
+ id: 'add-bn-simple',
33
+ language: 'bn',
34
+ command: 'add',
35
+ priority: 90,
36
+ template: {
37
+ format: 'যোগ {patient}',
38
+ tokens: [
39
+ { type: 'literal', value: 'যোগ' },
40
+ { type: 'role', role: 'patient' },
41
+ ],
42
+ },
43
+ extraction: {
44
+ patient: { position: 1 },
45
+ },
46
+ },
47
+ // With destination: #button এ .active কে যোগ করুন
48
+ {
49
+ id: 'add-bn-with-dest',
50
+ language: 'bn',
51
+ command: 'add',
52
+ priority: 95,
53
+ template: {
54
+ format: '{destination} এ {patient} কে যোগ করুন',
55
+ tokens: [
56
+ { type: 'role', role: 'destination' },
57
+ { type: 'literal', value: 'এ', alternatives: ['তে'] },
58
+ { type: 'role', role: 'patient' },
59
+ { type: 'literal', value: 'কে' },
60
+ { type: 'literal', value: 'যোগ' },
61
+ { type: 'literal', value: 'করুন' },
62
+ ],
63
+ },
64
+ extraction: {
65
+ destination: { position: 0 },
66
+ patient: { position: 2 },
67
+ },
68
+ },
69
+ ];
70
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Hindi Add Patterns
3
+ *
4
+ * Patterns for parsing "add" command in Hindi.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getAddPatternsHi(): LanguagePattern[] {
10
+ return [
11
+ // Full pattern: .class को #element में जोड़ें
12
+ {
13
+ id: 'add-hi-full',
14
+ language: 'hi',
15
+ command: 'add',
16
+ priority: 100,
17
+ template: {
18
+ format: '{patient} को {destination} में जोड़ें',
19
+ tokens: [
20
+ { type: 'role', role: 'patient' },
21
+ { type: 'literal', value: 'को' },
22
+ { type: 'role', role: 'destination' },
23
+ { type: 'literal', value: 'में' },
24
+ { type: 'literal', value: 'जोड़ें', alternatives: ['जोड़'] },
25
+ ],
26
+ },
27
+ extraction: {
28
+ patient: { position: 0 },
29
+ destination: { marker: 'में', position: 3 },
30
+ },
31
+ },
32
+ // Simple pattern: .class जोड़ें
33
+ {
34
+ id: 'add-hi-simple',
35
+ language: 'hi',
36
+ command: 'add',
37
+ priority: 90,
38
+ template: {
39
+ format: '{patient} जोड़ें',
40
+ tokens: [
41
+ { type: 'role', role: 'patient' },
42
+ { type: 'literal', value: 'जोड़ें', alternatives: ['जोड़'] },
43
+ ],
44
+ },
45
+ extraction: {
46
+ patient: { position: 0 },
47
+ destination: { default: { type: 'reference', value: 'me' } },
48
+ },
49
+ },
50
+ // Bare pattern: जोड़ें .class
51
+ {
52
+ id: 'add-hi-bare',
53
+ language: 'hi',
54
+ command: 'add',
55
+ priority: 80,
56
+ template: {
57
+ format: 'जोड़ें {patient}',
58
+ tokens: [
59
+ { type: 'literal', value: 'जोड़ें', alternatives: ['जोड़'] },
60
+ { type: 'role', role: 'patient' },
61
+ ],
62
+ },
63
+ extraction: {
64
+ patient: { position: 1 },
65
+ destination: { default: { type: 'reference', value: 'me' } },
66
+ },
67
+ },
68
+ ];
69
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Add Command Patterns
3
+ *
4
+ * Hand-crafted patterns for "add" command across languages.
5
+ *
6
+ * @generated This file is auto-generated. Do not edit manually.
7
+ */
8
+
9
+ import type { LanguagePattern } from '../../types';
10
+
11
+ import { getAddPatternsAr } from './ar';
12
+ import { getAddPatternsBn } from './bn';
13
+ import { getAddPatternsHi } from './hi';
14
+ import { getAddPatternsIt } from './it';
15
+ import { getAddPatternsJa } from './ja';
16
+ import { getAddPatternsKo } from './ko';
17
+ import { getAddPatternsMs } from './ms';
18
+ import { getAddPatternsPl } from './pl';
19
+ import { getAddPatternsRu } from './ru';
20
+ import { getAddPatternsTh } from './th';
21
+ import { getAddPatternsTl } from './tl';
22
+ import { getAddPatternsTr } from './tr';
23
+ import { getAddPatternsUk } from './uk';
24
+ import { getAddPatternsVi } from './vi';
25
+ import { getAddPatternsZh } from './zh';
26
+
27
+ /**
28
+ * Get add patterns for a specific language.
29
+ */
30
+ export function getAddPatternsForLanguage(language: string): LanguagePattern[] {
31
+ switch (language) {
32
+ case 'ar':
33
+ return getAddPatternsAr();
34
+ case 'bn':
35
+ return getAddPatternsBn();
36
+ case 'hi':
37
+ return getAddPatternsHi();
38
+ case 'it':
39
+ return getAddPatternsIt();
40
+ case 'ja':
41
+ return getAddPatternsJa();
42
+ case 'ko':
43
+ return getAddPatternsKo();
44
+ case 'ms':
45
+ return getAddPatternsMs();
46
+ case 'pl':
47
+ return getAddPatternsPl();
48
+ case 'ru':
49
+ return getAddPatternsRu();
50
+ case 'th':
51
+ return getAddPatternsTh();
52
+ case 'tl':
53
+ return getAddPatternsTl();
54
+ case 'tr':
55
+ return getAddPatternsTr();
56
+ case 'uk':
57
+ return getAddPatternsUk();
58
+ case 'vi':
59
+ return getAddPatternsVi();
60
+ case 'zh':
61
+ return getAddPatternsZh();
62
+ default:
63
+ return [];
64
+ }
65
+ }
66
+
67
+ // Re-export language-specific getters for tree-shaking
68
+ export { getAddPatternsAr } from './ar';
69
+ export { getAddPatternsBn } from './bn';
70
+ export { getAddPatternsHi } from './hi';
71
+ export { getAddPatternsIt } from './it';
72
+ export { getAddPatternsJa } from './ja';
73
+ export { getAddPatternsKo } from './ko';
74
+ export { getAddPatternsMs } from './ms';
75
+ export { getAddPatternsPl } from './pl';
76
+ export { getAddPatternsRu } from './ru';
77
+ export { getAddPatternsTh } from './th';
78
+ export { getAddPatternsTl } from './tl';
79
+ export { getAddPatternsTr } from './tr';
80
+ export { getAddPatternsUk } from './uk';
81
+ export { getAddPatternsVi } from './vi';
82
+ export { getAddPatternsZh } from './zh';
83
+
84
+ /**
85
+ * Languages that have hand-crafted add patterns.
86
+ */
87
+ export const addPatternLanguages = ['ar', 'bn', 'hi', 'it', 'ja', 'ko', 'ms', 'pl', 'ru', 'th', 'tl', 'tr', 'uk', 'vi', 'zh'];