@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,128 @@
1
+ /**
2
+ * Tagalog Language Profile
3
+ *
4
+ * VSO word order, prepositions, space-separated.
5
+ */
6
+
7
+ import type { LanguageProfile } from './types';
8
+
9
+ export const tagalogProfile: LanguageProfile = {
10
+ code: 'tl',
11
+ name: 'Tagalog',
12
+ nativeName: 'Tagalog',
13
+ direction: 'ltr',
14
+ wordOrder: 'VSO',
15
+ markingStrategy: 'preposition',
16
+ usesSpaces: true,
17
+ defaultVerbForm: 'base',
18
+ verb: {
19
+ position: 'start',
20
+ subjectDrop: true,
21
+ },
22
+ references: {
23
+ me: 'ako', // "I/me"
24
+ it: 'ito', // "it"
25
+ you: 'ikaw', // "you"
26
+ result: 'resulta', // "result"
27
+ event: 'pangyayari', // "event"
28
+ target: 'target', // "target"
29
+ body: 'body',
30
+ },
31
+ possessive: {
32
+ marker: 'ng', // Linker used in possessive constructions
33
+ markerPosition: 'between',
34
+ keywords: {
35
+ // Tagalog uses postposed possessive pronouns
36
+ // "my" - ko (clitic), akin (emphatic)
37
+ ko: 'me',
38
+ akin: 'me',
39
+ // "your" - mo (clitic), iyo (emphatic)
40
+ mo: 'you',
41
+ iyo: 'you',
42
+ // "its/his/her" - niya (clitic), kaniya (emphatic)
43
+ niya: 'it',
44
+ kaniya: 'it',
45
+ },
46
+ },
47
+ roleMarkers: {
48
+ destination: { primary: 'sa', position: 'before' }, // "to/into"
49
+ source: { primary: 'mula_sa', position: 'before' }, // "from"
50
+ patient: { primary: '', position: 'before' },
51
+ style: { primary: 'nang', position: 'before' }, // manner marker
52
+ },
53
+ keywords: {
54
+ // Class/Attribute operations
55
+ toggle: { primary: 'palitan', alternatives: ['itoggle'], normalized: 'toggle' },
56
+ add: { primary: 'idagdag', alternatives: ['magdagdag'], normalized: 'add' },
57
+ remove: { primary: 'alisin', alternatives: ['tanggalin'], normalized: 'remove' },
58
+ // Content operations
59
+ put: { primary: 'ilagay', alternatives: ['maglagay'], normalized: 'put' },
60
+ append: { primary: 'idagdag_sa_dulo', normalized: 'append' },
61
+ prepend: { primary: 'idagdag_sa_simula', normalized: 'prepend' },
62
+ take: { primary: 'kumuha', normalized: 'take' },
63
+ make: { primary: 'gumawa', alternatives: ['lumikha'], normalized: 'make' },
64
+ clone: { primary: 'kopyahin', normalized: 'clone' },
65
+ swap: { primary: 'magpalit', normalized: 'swap' },
66
+ morph: { primary: 'baguhin', normalized: 'morph' },
67
+ // Variable operations
68
+ set: { primary: 'itakda', alternatives: ['magtakda'], normalized: 'set' },
69
+ get: { primary: 'kumuha', alternatives: ['kunin'], normalized: 'get' },
70
+ increment: { primary: 'dagdagan', alternatives: ['taasan'], normalized: 'increment' },
71
+ decrement: { primary: 'bawasan', alternatives: ['ibaba'], normalized: 'decrement' },
72
+ log: { primary: 'itala', normalized: 'log' },
73
+ // Visibility
74
+ show: { primary: 'ipakita', alternatives: ['magpakita'], normalized: 'show' },
75
+ hide: { primary: 'itago', alternatives: ['magtago'], normalized: 'hide' },
76
+ transition: { primary: 'lumipat', normalized: 'transition' },
77
+ // Events
78
+ on: { primary: 'kapag', alternatives: ['kung', 'sa'], normalized: 'on' },
79
+ trigger: { primary: 'magpatugtog', normalized: 'trigger' },
80
+ send: { primary: 'ipadala', alternatives: ['magpadala'], normalized: 'send' },
81
+ // DOM focus
82
+ focus: { primary: 'ituon', normalized: 'focus' },
83
+ blur: { primary: 'alisin_tuon', normalized: 'blur' },
84
+ // Navigation
85
+ go: { primary: 'pumunta', alternatives: ['punta'], normalized: 'go' },
86
+ // Async
87
+ wait: { primary: 'maghintay', alternatives: ['hintay'], normalized: 'wait' },
88
+ fetch: { primary: 'kunin', normalized: 'fetch' },
89
+ settle: { primary: 'magpatahimik', normalized: 'settle' },
90
+ // Control flow
91
+ if: { primary: 'kung', alternatives: ['kapag'], normalized: 'if' },
92
+ when: { primary: 'kapag', normalized: 'when' },
93
+ where: { primary: 'kung_saan', normalized: 'where' },
94
+ else: { primary: 'kung_hindi', alternatives: ['kundi'], normalized: 'else' },
95
+ repeat: { primary: 'ulitin', alternatives: ['paulit-ulit'], normalized: 'repeat' },
96
+ for: { primary: 'para_sa', normalized: 'for' },
97
+ while: { primary: 'habang', normalized: 'while' },
98
+ continue: { primary: 'magpatuloy', normalized: 'continue' },
99
+ halt: { primary: 'itigil', alternatives: ['huminto'], normalized: 'halt' },
100
+ throw: { primary: 'ihagis', alternatives: ['itapon'], normalized: 'throw' },
101
+ call: { primary: 'tawagan', alternatives: ['tumawag'], normalized: 'call' },
102
+ return: { primary: 'ibalik', alternatives: ['bumalik'], normalized: 'return' },
103
+ then: { primary: 'pagkatapos', alternatives: ['saka'], normalized: 'then' },
104
+ and: { primary: 'at', normalized: 'and' },
105
+ end: { primary: 'wakas', alternatives: ['tapos'], normalized: 'end' },
106
+ // Advanced
107
+ js: { primary: 'js', normalized: 'js' },
108
+ async: { primary: 'async', normalized: 'async' },
109
+ tell: { primary: 'sabihin', alternatives: ['magsabi'], normalized: 'tell' },
110
+ default: { primary: 'default', alternatives: ['unang_halaga'], normalized: 'default' },
111
+ init: { primary: 'simulan', alternatives: ['magsimula'], normalized: 'init' },
112
+ behavior: { primary: 'ugali', alternatives: ['kilos'], normalized: 'behavior' },
113
+ install: { primary: 'ikabit', alternatives: ['mag-install'], normalized: 'install' },
114
+ measure: { primary: 'sukatin', normalized: 'measure' },
115
+ // Modifiers
116
+ into: { primary: 'sa', normalized: 'into' },
117
+ before: { primary: 'bago', normalized: 'before' },
118
+ after: { primary: 'matapos', alternatives: ['pagkatapos'], normalized: 'after' },
119
+ // Event modifiers
120
+ until: { primary: 'hanggang', normalized: 'until' },
121
+ event: { primary: 'pangyayari', normalized: 'event' },
122
+ from: { primary: 'mula', alternatives: ['galing'], normalized: 'from' },
123
+ },
124
+ eventHandler: {
125
+ keyword: { primary: 'kapag', normalized: 'on' },
126
+ sourceMarker: { primary: 'mula_sa', alternatives: ['galing_sa'], position: 'before' },
127
+ },
128
+ };
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Turkish Language Profile
3
+ *
4
+ * SOV word order, case suffixes (agglutinative), space-separated.
5
+ * Features vowel harmony and extensive suffixation.
6
+ */
7
+
8
+ import type { LanguageProfile } from './types';
9
+
10
+ export const turkishProfile: LanguageProfile = {
11
+ code: 'tr',
12
+ name: 'Turkish',
13
+ nativeName: 'Türkçe',
14
+ direction: 'ltr',
15
+ wordOrder: 'SOV',
16
+ markingStrategy: 'case-suffix',
17
+ usesSpaces: true,
18
+ verb: {
19
+ position: 'end',
20
+ suffixes: ['mek', 'mak', 'yor', 'di', 'miş'],
21
+ subjectDrop: true,
22
+ },
23
+ references: {
24
+ me: 'ben', // "I/me"
25
+ it: 'o', // "it"
26
+ you: 'sen', // "you"
27
+ result: 'sonuç',
28
+ event: 'olay',
29
+ target: 'hedef',
30
+ body: 'gövde',
31
+ },
32
+ possessive: {
33
+ marker: '', // Turkish uses genitive suffix -in/-ın + possessive suffix
34
+ markerPosition: 'after-object',
35
+ usePossessiveAdjectives: true,
36
+ specialForms: {
37
+ me: 'benim', // "my" (genitive of "ben")
38
+ it: 'onun', // "its"
39
+ you: 'senin', // "your"
40
+ },
41
+ keywords: {
42
+ benim: 'me', // my
43
+ senin: 'you', // your
44
+ onun: 'it', // its
45
+ },
46
+ },
47
+ roleMarkers: {
48
+ patient: { primary: 'i', alternatives: ['ı', 'u', 'ü'], position: 'after' }, // Accusative
49
+ destination: { primary: 'e', alternatives: ['a', 'de', 'da', 'te', 'ta'], position: 'after' }, // Dative/Locative
50
+ source: { primary: 'den', alternatives: ['dan', 'ten', 'tan'], position: 'after' }, // Ablative
51
+ style: { primary: 'le', alternatives: ['la', 'yle', 'yla'], position: 'after' }, // Instrumental
52
+ event: { primary: 'i', alternatives: ['ı', 'u', 'ü'], position: 'after' }, // Event as accusative
53
+ },
54
+ keywords: {
55
+ // Class/Attribute operations
56
+ toggle: { primary: 'değiştir', alternatives: ['aç/kapat'], normalized: 'toggle' },
57
+ add: { primary: 'ekle', normalized: 'add' },
58
+ remove: { primary: 'kaldır', alternatives: ['sil'], normalized: 'remove' },
59
+ // Content operations
60
+ put: { primary: 'koy', normalized: 'put' },
61
+ append: { primary: 'ekle', normalized: 'append' },
62
+ take: { primary: 'al', normalized: 'take' },
63
+ make: { primary: 'yap', normalized: 'make' },
64
+ clone: { primary: 'kopyala', normalized: 'clone' },
65
+ swap: { primary: 'değiştir', alternatives: ['takas'], normalized: 'swap' },
66
+ morph: { primary: 'dönüştür', alternatives: ['şekil değiştir'], normalized: 'morph' },
67
+ // Variable operations
68
+ set: { primary: 'ayarla', alternatives: ['yap', 'belirle'], normalized: 'set' },
69
+ get: { primary: 'al', normalized: 'get' },
70
+ increment: { primary: 'artır', normalized: 'increment' },
71
+ decrement: { primary: 'azalt', normalized: 'decrement' },
72
+ log: { primary: 'kaydet', normalized: 'log' },
73
+ // Visibility
74
+ show: { primary: 'göster', normalized: 'show' },
75
+ hide: { primary: 'gizle', normalized: 'hide' },
76
+ transition: { primary: 'geçiş', normalized: 'transition' },
77
+ // Events
78
+ on: { primary: 'üzerinde', alternatives: ['olduğunda', 'zaman'], normalized: 'on' },
79
+ trigger: { primary: 'tetikle', normalized: 'trigger' },
80
+ send: { primary: 'gönder', normalized: 'send' },
81
+ // DOM focus
82
+ focus: { primary: 'odak', normalized: 'focus' },
83
+ blur: { primary: 'bulanık', normalized: 'blur' },
84
+ // Navigation
85
+ go: { primary: 'git', normalized: 'go' },
86
+ // Async
87
+ wait: { primary: 'bekle', normalized: 'wait' },
88
+ fetch: { primary: 'getir', normalized: 'fetch' },
89
+ settle: { primary: 'sabitlen', normalized: 'settle' },
90
+ // Control flow
91
+ if: { primary: 'eğer', normalized: 'if' },
92
+ when: { primary: 'iken', alternatives: ['durumunda', 'olduğunda'], normalized: 'when' },
93
+ where: { primary: 'nerede', normalized: 'where' },
94
+ else: { primary: 'yoksa', normalized: 'else' },
95
+ repeat: { primary: 'tekrarla', normalized: 'repeat' },
96
+ for: { primary: 'için', normalized: 'for' },
97
+ while: { primary: 'iken', normalized: 'while' },
98
+ continue: { primary: 'devam', normalized: 'continue' },
99
+ halt: { primary: 'durdur', normalized: 'halt' },
100
+ throw: { primary: 'fırlat', normalized: 'throw' },
101
+ call: { primary: 'çağır', normalized: 'call' },
102
+ return: { primary: 'dön', normalized: 'return' },
103
+ then: { primary: 'sonra', alternatives: ['ardından', 'daha sonra'], normalized: 'then' },
104
+ and: { primary: 've', alternatives: ['ayrıca', 'hem de'], normalized: 'and' },
105
+ end: { primary: 'son', alternatives: ['bitiş', 'bitti'], normalized: 'end' },
106
+ // Advanced
107
+ js: { primary: 'js', normalized: 'js' },
108
+ async: { primary: 'asenkron', normalized: 'async' },
109
+ tell: { primary: 'söyle', normalized: 'tell' },
110
+ default: { primary: 'varsayılan', normalized: 'default' },
111
+ init: { primary: 'başlat', normalized: 'init' },
112
+ behavior: { primary: 'davranış', normalized: 'behavior' },
113
+ install: { primary: 'yükle', normalized: 'install' },
114
+ measure: { primary: 'ölç', normalized: 'measure' },
115
+ // Modifiers
116
+ into: { primary: 'içine', normalized: 'into' },
117
+ before: { primary: 'önce', normalized: 'before' },
118
+ after: { primary: 'sonra', normalized: 'after' },
119
+ // Event modifiers (for repeat until event)
120
+ until: { primary: 'kadar', normalized: 'until' },
121
+ event: { primary: 'olay', normalized: 'event' },
122
+ from: { primary: '-den', alternatives: ['-dan'], normalized: 'from' },
123
+ },
124
+ };
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Language Profile Types
3
+ *
4
+ * Type definitions for language profiles, separated for tree-shaking.
5
+ */
6
+
7
+ import type { SemanticRole } from '../../types';
8
+
9
+ /**
10
+ * Word order in a language (for declarative statements).
11
+ */
12
+ export type WordOrder = 'SVO' | 'SOV' | 'VSO' | 'VOS' | 'OSV' | 'OVS';
13
+
14
+ /**
15
+ * How grammatical relationships are marked.
16
+ */
17
+ export type MarkingStrategy = 'preposition' | 'postposition' | 'particle' | 'case-suffix';
18
+
19
+ /**
20
+ * A grammatical marker (preposition, particle, etc.) for a semantic role.
21
+ */
22
+ export interface RoleMarker {
23
+ /** Primary marker for this role */
24
+ readonly primary: string;
25
+ /** Alternative markers that also work */
26
+ readonly alternatives?: string[];
27
+ /** Position relative to the role value */
28
+ readonly position: 'before' | 'after';
29
+ }
30
+
31
+ /**
32
+ * Verb form configuration for a language.
33
+ */
34
+ export interface VerbConfig {
35
+ /** Position of verb in the sentence */
36
+ readonly position: 'start' | 'end' | 'second';
37
+ /** Common verb suffixes/conjugations to recognize */
38
+ readonly suffixes?: string[];
39
+ /** Whether the language commonly drops subjects */
40
+ readonly subjectDrop?: boolean;
41
+ }
42
+
43
+ /**
44
+ * Configuration for possessive expression construction.
45
+ * Defines how "X's property" is expressed in a language.
46
+ */
47
+ export interface PossessiveConfig {
48
+ /** Possessive marker (e.g., "'s" in English, "の" in Japanese) */
49
+ readonly marker: string;
50
+ /** Position of marker: 'after-object' (X's Y), 'between' (X の Y), 'before-property' */
51
+ readonly markerPosition: 'after-object' | 'between' | 'before-property';
52
+ /** Special possessive forms (e.g., 'me' → 'my' in English) */
53
+ readonly specialForms?: Record<string, string>;
54
+ /** Whether to use possessive adjectives instead of marker (e.g., Spanish mi/tu/su) */
55
+ readonly usePossessiveAdjectives?: boolean;
56
+ /**
57
+ * Possessive keywords mapped to their corresponding reference.
58
+ * Used by pattern-matcher to recognize possessive expressions.
59
+ * Example: { my: 'me', your: 'you', its: 'it' }
60
+ */
61
+ readonly keywords?: Record<string, string>;
62
+ }
63
+
64
+ /**
65
+ * Complete language profile for pattern generation.
66
+ */
67
+ export interface LanguageProfile {
68
+ /** ISO 639-1 language code */
69
+ readonly code: string;
70
+ /** Human-readable language name */
71
+ readonly name: string;
72
+ /** Native name */
73
+ readonly nativeName: string;
74
+ /** Text direction */
75
+ readonly direction: 'ltr' | 'rtl';
76
+ /** Primary word order */
77
+ readonly wordOrder: WordOrder;
78
+ /** How this language marks grammatical roles */
79
+ readonly markingStrategy: MarkingStrategy;
80
+ /** Markers for each semantic role */
81
+ readonly roleMarkers: Partial<Record<SemanticRole, RoleMarker>>;
82
+ /** Verb configuration */
83
+ readonly verb: VerbConfig;
84
+ /** Command keyword translations */
85
+ readonly keywords: Record<string, KeywordTranslation>;
86
+ /** Whether the language uses spaces between words */
87
+ readonly usesSpaces: boolean;
88
+ /** Special tokenization notes */
89
+ readonly tokenization?: TokenizationConfig;
90
+ /** Reference translations (me, it, you, etc.) */
91
+ readonly references?: Record<string, string>;
92
+ /** Possessive expression configuration */
93
+ readonly possessive?: PossessiveConfig;
94
+ /** Event handler pattern configuration (for simple SVO languages) */
95
+ readonly eventHandler?: EventHandlerConfig;
96
+ /**
97
+ * Default verb form for command keywords. Defaults to 'infinitive'.
98
+ *
99
+ * Based on software UI localization research:
100
+ * - 'infinitive': Spanish, French, German, Portuguese, Russian (industry standard)
101
+ * - 'imperative': Polish
102
+ * - 'base': English, Japanese, Korean (no distinction or same form)
103
+ *
104
+ * Individual keywords can override this via KeywordTranslation.form
105
+ */
106
+ readonly defaultVerbForm?: VerbForm;
107
+ }
108
+
109
+ /**
110
+ * Configuration for event handler pattern generation.
111
+ * Used by simple SVO languages that don't need hand-crafted patterns.
112
+ */
113
+ export interface EventHandlerConfig {
114
+ /** Primary event keyword (e.g., 'on', 'bei', 'sur') */
115
+ readonly keyword: KeywordTranslation;
116
+ /** Source filter marker (e.g., 'from', 'von', 'de') */
117
+ readonly sourceMarker: RoleMarker;
118
+ /** Conditional keyword (e.g., 'when', 'wenn', 'quand') */
119
+ readonly conditionalKeyword?: KeywordTranslation;
120
+ }
121
+
122
+ /**
123
+ * Verb form used for command keywords.
124
+ *
125
+ * Based on software localization research:
126
+ * - 'infinitive': Standard for most languages (Spanish, French, German, Russian)
127
+ * Example: "Guardar", "Enregistrer", "Speichern"
128
+ * - 'imperative': Used by some languages (Polish)
129
+ * Example: "Zapisz", "Otwórz"
130
+ * - 'base': For languages where forms are identical (English, Japanese, Korean)
131
+ * or where the distinction doesn't apply
132
+ */
133
+ export type VerbForm = 'infinitive' | 'imperative' | 'base';
134
+
135
+ /**
136
+ * Translation of a command keyword.
137
+ */
138
+ export interface KeywordTranslation {
139
+ /** Primary translation (used for output/rendering) */
140
+ readonly primary: string;
141
+ /** Alternative forms for parsing (conjugations, synonyms, informal variants) */
142
+ readonly alternatives?: string[];
143
+ /** Normalized English form for internal matching */
144
+ readonly normalized?: string;
145
+ /**
146
+ * The grammatical form of 'primary'. Defaults to 'infinitive'.
147
+ * This documents the form used and enables future form-switching features.
148
+ * - 'infinitive': Dictionary form (alternar, basculer) - industry standard
149
+ * - 'imperative': Command form (alterna, bascule) - for Polish, etc.
150
+ * - 'base': Same form for both (toggle, トグル) - English, Japanese, Korean
151
+ */
152
+ readonly form?: VerbForm;
153
+ }
154
+
155
+ /**
156
+ * Special tokenization configuration.
157
+ */
158
+ export interface TokenizationConfig {
159
+ /** Particles to recognize (for particle languages) */
160
+ readonly particles?: string[];
161
+ /** Prefixes to recognize (for prefixing languages) */
162
+ readonly prefixes?: string[];
163
+ /** Word boundary detection strategy */
164
+ readonly boundaryStrategy?: 'space' | 'particle' | 'character';
165
+ }