@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,71 @@
1
+ /**
2
+ * Chinese Add Patterns
3
+ *
4
+ * Hand-crafted patterns for "add" command.
5
+ * Chinese uses SVO order: 给 {target} 添加 {patient}
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Chinese add patterns.
12
+ */
13
+ export function getAddPatternsZh(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'add-zh-full',
17
+ language: 'zh',
18
+ command: 'add',
19
+ priority: 100,
20
+ template: {
21
+ format: '给 {destination} 添加 {patient}',
22
+ tokens: [
23
+ { type: 'literal', value: '给', alternatives: ['為', '为'] },
24
+ { type: 'role', role: 'destination' },
25
+ { type: 'literal', value: '添加', alternatives: ['加', '增加', '加上'] },
26
+ { type: 'role', role: 'patient' },
27
+ ],
28
+ },
29
+ extraction: {
30
+ destination: { position: 1 },
31
+ patient: { position: 3 },
32
+ },
33
+ },
34
+ {
35
+ id: 'add-zh-simple',
36
+ language: 'zh',
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-zh-ba',
53
+ language: 'zh',
54
+ command: 'add',
55
+ priority: 95,
56
+ template: {
57
+ format: '把 {patient} 添加到 {destination}',
58
+ tokens: [
59
+ { type: 'literal', value: '把' },
60
+ { type: 'role', role: 'patient' },
61
+ { type: 'literal', value: '添加到', alternatives: ['加到', '增加到'] },
62
+ { type: 'role', role: 'destination' },
63
+ ],
64
+ },
65
+ extraction: {
66
+ patient: { position: 1 },
67
+ destination: { marker: '添加到', markerAlternatives: ['加到', '增加到'] },
68
+ },
69
+ },
70
+ ];
71
+ }
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Pattern Builders
3
+ *
4
+ * Functions for building and generating patterns for specific languages.
5
+ * Uses a registry-based approach for maintainability and extensibility.
6
+ */
7
+
8
+ import type { LanguagePattern } from '../types';
9
+
10
+ // Import from subdirectories for tree-shaking
11
+ import { getTogglePatternsForLanguage } from './toggle/index';
12
+ import { getTakePatternsForLanguage } from './take/index';
13
+ import { getPutPatternsForLanguage } from './put/index';
14
+ import { getEventHandlerPatternsForLanguage } from './event-handler/index';
15
+ import { getGrammarTransformedPatternsForLanguage } from './grammar-transformed/index';
16
+
17
+ // Import multilingual command patterns
18
+ import { getAddPatternsForLanguage } from './add/index';
19
+ import { getRemovePatternsForLanguage } from './remove/index';
20
+ import { getShowPatternsForLanguage } from './show/index';
21
+ import { getHidePatternsForLanguage } from './hide/index';
22
+ import { getSetPatternsForLanguage } from './set/index';
23
+ import { getGetPatternsForLanguage } from './get/index';
24
+ import { getIncrementPatternsForLanguage } from './increment/index';
25
+ import { getDecrementPatternsForLanguage } from './decrement/index';
26
+
27
+ // Import English-only patterns
28
+ import { getEnglishOnlyPatterns } from './languages/en';
29
+
30
+ // Import generator directly (not from barrel)
31
+ import { generatePatternsForLanguage } from '../generators/pattern-generator';
32
+
33
+ // Import registry functions for lazy loading support
34
+ import { getRegisteredLanguages, tryGetProfile } from '../registry';
35
+
36
+ // =============================================================================
37
+ // Pattern Loader Registry
38
+ // =============================================================================
39
+
40
+ /**
41
+ * Type for pattern loader functions.
42
+ * Each loader returns patterns for a specific command/category for a given language.
43
+ */
44
+ type PatternLoader = (language: string) => LanguagePattern[];
45
+
46
+ /**
47
+ * Registry of all pattern loaders.
48
+ * This replaces individual push() calls with a unified registry approach.
49
+ * Order matters: hand-crafted patterns should come before generated patterns.
50
+ */
51
+ const PATTERN_LOADERS: PatternLoader[] = [
52
+ // Hand-crafted core patterns
53
+ getTogglePatternsForLanguage,
54
+ getTakePatternsForLanguage,
55
+ getPutPatternsForLanguage,
56
+ getEventHandlerPatternsForLanguage,
57
+
58
+ // Multilingual command patterns
59
+ getAddPatternsForLanguage,
60
+ getRemovePatternsForLanguage,
61
+ getShowPatternsForLanguage,
62
+ getHidePatternsForLanguage,
63
+ getSetPatternsForLanguage,
64
+ getGetPatternsForLanguage,
65
+ getIncrementPatternsForLanguage,
66
+ getDecrementPatternsForLanguage,
67
+
68
+ // Grammar-transformed patterns (for SOV/VSO grammar output)
69
+ getGrammarTransformedPatternsForLanguage,
70
+ ];
71
+
72
+ /**
73
+ * Register a custom pattern loader.
74
+ * Useful for plugins or extensions that add new command patterns.
75
+ */
76
+ export function registerPatternLoader(loader: PatternLoader): void {
77
+ PATTERN_LOADERS.push(loader);
78
+ }
79
+
80
+ /**
81
+ * Get the current pattern loaders (for testing/introspection).
82
+ */
83
+ export function getPatternLoaders(): readonly PatternLoader[] {
84
+ return PATTERN_LOADERS;
85
+ }
86
+
87
+ // Lazy cache for generated patterns PER LANGUAGE
88
+ // Using per-language cache instead of global cache to support lazy loading
89
+ // where languages are registered one at a time
90
+ const _generatedPatternsPerLanguage = new Map<string, LanguagePattern[]>();
91
+
92
+ /**
93
+ * Get all generated patterns (lazy loaded).
94
+ * @deprecated Use getGeneratedPatternsForLanguage() for lazy loading support.
95
+ */
96
+ export function getGeneratedPatterns(): LanguagePattern[] {
97
+ // For backwards compatibility, generate for all currently registered languages
98
+ const allPatterns: LanguagePattern[] = [];
99
+ for (const lang of getRegisteredLanguages()) {
100
+ allPatterns.push(...getGeneratedPatternsForLanguage(lang));
101
+ }
102
+ return allPatterns;
103
+ }
104
+
105
+ /**
106
+ * Get generated patterns for a specific language.
107
+ * This supports lazy loading scenarios where languages are registered one at a time.
108
+ */
109
+ export function getGeneratedPatternsForLanguage(language: string): LanguagePattern[] {
110
+ // Check per-language cache first
111
+ const cached = _generatedPatternsPerLanguage.get(language);
112
+ if (cached) {
113
+ return cached;
114
+ }
115
+
116
+ // Get profile from registry
117
+ const profile = tryGetProfile(language);
118
+ if (!profile) {
119
+ return [];
120
+ }
121
+
122
+ // Generate patterns for this language
123
+ const patterns = generatePatternsForLanguage(profile);
124
+ _generatedPatternsPerLanguage.set(language, patterns);
125
+ return patterns;
126
+ }
127
+
128
+ /**
129
+ * Clear the generated patterns cache for a language (useful for testing).
130
+ */
131
+ export function clearGeneratedPatternsCache(language?: string): void {
132
+ if (language) {
133
+ _generatedPatternsPerLanguage.delete(language);
134
+ } else {
135
+ _generatedPatternsPerLanguage.clear();
136
+ }
137
+ }
138
+
139
+ // =============================================================================
140
+ // Lazy Pattern Building
141
+ // =============================================================================
142
+
143
+ /**
144
+ * Build patterns for a specific language.
145
+ * This is the core function for tree-shakeable pattern loading.
146
+ * Uses the PATTERN_LOADERS registry for maintainability.
147
+ */
148
+ export function buildPatternsForLanguage(language: string): LanguagePattern[] {
149
+ // Collect patterns from all registered loaders
150
+ const patterns = PATTERN_LOADERS.flatMap(loader => loader(language));
151
+
152
+ // Add English-only hand-crafted patterns
153
+ if (language === 'en') {
154
+ patterns.push(...getEnglishOnlyPatterns());
155
+ }
156
+
157
+ // Add generated patterns for this language (per-language cache supports lazy loading)
158
+ patterns.push(...getGeneratedPatternsForLanguage(language));
159
+
160
+ return patterns;
161
+ }
162
+
163
+ // Languages with hand-crafted patterns
164
+ const handcraftedLanguages = [
165
+ 'en',
166
+ 'ja',
167
+ 'ar',
168
+ 'es',
169
+ 'ko',
170
+ 'zh',
171
+ 'tr',
172
+ 'pt',
173
+ 'fr',
174
+ 'de',
175
+ 'id',
176
+ 'qu',
177
+ 'sw',
178
+ 'it',
179
+ 'vi',
180
+ 'pl',
181
+ 'ru',
182
+ 'uk',
183
+ 'hi',
184
+ 'bn',
185
+ 'th',
186
+ 'ms',
187
+ 'tl',
188
+ ];
189
+
190
+ /**
191
+ * Build patterns for all languages.
192
+ * @deprecated Use getPatternsForLanguage() for tree-shaking.
193
+ */
194
+ export function buildAllPatterns(): LanguagePattern[] {
195
+ const all: LanguagePattern[] = [];
196
+ for (const lang of handcraftedLanguages) {
197
+ all.push(...buildPatternsForLanguage(lang));
198
+ }
199
+ return all;
200
+ }
201
+
202
+ /**
203
+ * Get list of all supported languages.
204
+ */
205
+ export function getHandcraftedLanguages(): readonly string[] {
206
+ return handcraftedLanguages;
207
+ }
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Bengali Decrement Patterns
3
+ *
4
+ * Patterns for parsing "decrement" command in Bengali.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getDecrementPatternsBn(): LanguagePattern[] {
10
+ return [
11
+ // Full pattern: :counter কে হ্রাস করুন
12
+ {
13
+ id: 'decrement-bn-full',
14
+ language: 'bn',
15
+ command: 'decrement',
16
+ priority: 100,
17
+ template: {
18
+ format: '{patient} কে হ্রাস করুন',
19
+ tokens: [
20
+ { type: 'role', role: 'patient' },
21
+ { type: 'literal', value: 'কে' },
22
+ { type: 'literal', value: 'হ্রাস', alternatives: ['কমান'] },
23
+ { type: 'literal', value: 'করুন' },
24
+ ],
25
+ },
26
+ extraction: {
27
+ patient: { position: 0 },
28
+ },
29
+ },
30
+ // With quantity: :counter কে 5 দিয়ে হ্রাস করুন
31
+ {
32
+ id: 'decrement-bn-with-quantity',
33
+ language: 'bn',
34
+ command: 'decrement',
35
+ priority: 95,
36
+ template: {
37
+ format: '{patient} কে {quantity} দিয়ে হ্রাস করুন',
38
+ tokens: [
39
+ { type: 'role', role: 'patient' },
40
+ { type: 'literal', value: 'কে' },
41
+ { type: 'role', role: 'quantity' },
42
+ { type: 'literal', value: 'দিয়ে' },
43
+ { type: 'literal', value: 'হ্রাস', alternatives: ['কমান'] },
44
+ { type: 'literal', value: 'করুন' },
45
+ ],
46
+ },
47
+ extraction: {
48
+ patient: { position: 0 },
49
+ quantity: { marker: 'দিয়ে', position: 2 },
50
+ },
51
+ },
52
+ // Simple pattern: হ্রাস :counter
53
+ {
54
+ id: 'decrement-bn-simple',
55
+ language: 'bn',
56
+ command: 'decrement',
57
+ priority: 90,
58
+ template: {
59
+ format: 'হ্রাস {patient}',
60
+ tokens: [
61
+ { type: 'literal', value: 'হ্রাস', alternatives: ['কমান'] },
62
+ { type: 'role', role: 'patient' },
63
+ ],
64
+ },
65
+ extraction: {
66
+ patient: { position: 1 },
67
+ },
68
+ },
69
+ ];
70
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * German Decrement Patterns
3
+ *
4
+ * Hand-crafted patterns for "decrement" command.
5
+ * German: verringere zähler
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get German decrement patterns.
12
+ */
13
+ export function getDecrementPatternsDe(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'decrement-de-full',
17
+ language: 'de',
18
+ command: 'decrement',
19
+ priority: 100,
20
+ template: {
21
+ format: 'verringere {patient}',
22
+ tokens: [
23
+ {
24
+ type: 'literal',
25
+ value: 'verringere',
26
+ alternatives: [
27
+ 'verringern',
28
+ 'dekrementiere',
29
+ 'dekrementieren',
30
+ 'reduziere',
31
+ 'decrement',
32
+ ],
33
+ },
34
+ { type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
35
+ ],
36
+ },
37
+ extraction: {
38
+ patient: { position: 1 },
39
+ },
40
+ },
41
+ ];
42
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Hindi Decrement Patterns
3
+ *
4
+ * Patterns for parsing "decrement" command in Hindi.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getDecrementPatternsHi(): LanguagePattern[] {
10
+ return [
11
+ // Full pattern: :counter को घटाएं
12
+ {
13
+ id: 'decrement-hi-full',
14
+ language: 'hi',
15
+ command: 'decrement',
16
+ priority: 100,
17
+ template: {
18
+ format: '{patient} को घटाएं',
19
+ tokens: [
20
+ { type: 'role', role: 'patient' },
21
+ { type: 'literal', value: 'को' },
22
+ { type: 'literal', value: 'घटाएं', alternatives: ['घटा'] },
23
+ ],
24
+ },
25
+ extraction: {
26
+ patient: { position: 0 },
27
+ },
28
+ },
29
+ // With quantity: :counter को 5 से घटाएं
30
+ {
31
+ id: 'decrement-hi-with-quantity',
32
+ language: 'hi',
33
+ command: 'decrement',
34
+ priority: 95,
35
+ template: {
36
+ format: '{patient} को {quantity} से घटाएं',
37
+ tokens: [
38
+ { type: 'role', role: 'patient' },
39
+ { type: 'literal', value: 'को' },
40
+ { type: 'role', role: 'quantity' },
41
+ { type: 'literal', value: 'से' },
42
+ { type: 'literal', value: 'घटाएं', alternatives: ['घटा'] },
43
+ ],
44
+ },
45
+ extraction: {
46
+ patient: { position: 0 },
47
+ quantity: { marker: 'से', position: 2 },
48
+ },
49
+ },
50
+ // Simple pattern: घटाएं :counter
51
+ {
52
+ id: 'decrement-hi-simple',
53
+ language: 'hi',
54
+ command: 'decrement',
55
+ priority: 90,
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
+ },
66
+ },
67
+ ];
68
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Decrement Command Patterns
3
+ *
4
+ * Hand-crafted patterns for "decrement" 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 { getDecrementPatternsBn } from './bn';
12
+ import { getDecrementPatternsDe } from './de';
13
+ import { getDecrementPatternsHi } from './hi';
14
+ import { getDecrementPatternsIt } from './it';
15
+ import { getDecrementPatternsMs } from './ms';
16
+ import { getDecrementPatternsPl } from './pl';
17
+ import { getDecrementPatternsRu } from './ru';
18
+ import { getDecrementPatternsTh } from './th';
19
+ import { getDecrementPatternsTl } from './tl';
20
+ import { getDecrementPatternsTr } from './tr';
21
+ import { getDecrementPatternsUk } from './uk';
22
+ import { getDecrementPatternsVi } from './vi';
23
+ import { getDecrementPatternsZh } from './zh';
24
+
25
+ /**
26
+ * Get decrement patterns for a specific language.
27
+ */
28
+ export function getDecrementPatternsForLanguage(language: string): LanguagePattern[] {
29
+ switch (language) {
30
+ case 'bn':
31
+ return getDecrementPatternsBn();
32
+ case 'de':
33
+ return getDecrementPatternsDe();
34
+ case 'hi':
35
+ return getDecrementPatternsHi();
36
+ case 'it':
37
+ return getDecrementPatternsIt();
38
+ case 'ms':
39
+ return getDecrementPatternsMs();
40
+ case 'pl':
41
+ return getDecrementPatternsPl();
42
+ case 'ru':
43
+ return getDecrementPatternsRu();
44
+ case 'th':
45
+ return getDecrementPatternsTh();
46
+ case 'tl':
47
+ return getDecrementPatternsTl();
48
+ case 'tr':
49
+ return getDecrementPatternsTr();
50
+ case 'uk':
51
+ return getDecrementPatternsUk();
52
+ case 'vi':
53
+ return getDecrementPatternsVi();
54
+ case 'zh':
55
+ return getDecrementPatternsZh();
56
+ default:
57
+ return [];
58
+ }
59
+ }
60
+
61
+ // Re-export language-specific getters for tree-shaking
62
+ export { getDecrementPatternsBn } from './bn';
63
+ export { getDecrementPatternsDe } from './de';
64
+ export { getDecrementPatternsHi } from './hi';
65
+ export { getDecrementPatternsIt } from './it';
66
+ export { getDecrementPatternsMs } from './ms';
67
+ export { getDecrementPatternsPl } from './pl';
68
+ export { getDecrementPatternsRu } from './ru';
69
+ export { getDecrementPatternsTh } from './th';
70
+ export { getDecrementPatternsTl } from './tl';
71
+ export { getDecrementPatternsTr } from './tr';
72
+ export { getDecrementPatternsUk } from './uk';
73
+ export { getDecrementPatternsVi } from './vi';
74
+ export { getDecrementPatternsZh } from './zh';
75
+
76
+ /**
77
+ * Languages that have hand-crafted decrement patterns.
78
+ */
79
+ export const decrementPatternLanguages = ['bn', 'de', 'hi', 'it', 'ms', 'pl', 'ru', 'th', 'tl', 'tr', 'uk', 'vi', 'zh'];
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Italian Decrement Patterns
3
+ *
4
+ * Tree-shakeable: Only included when Italian is imported.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ /**
10
+ * Get Italian decrement patterns.
11
+ */
12
+ export function getDecrementPatternsIt(): LanguagePattern[] {
13
+ return [
14
+ {
15
+ id: 'decrement-it-full',
16
+ language: 'it',
17
+ command: 'decrement',
18
+ priority: 100,
19
+ template: {
20
+ format: 'decrementare {patient} di {quantity}',
21
+ tokens: [
22
+ {
23
+ type: 'literal',
24
+ value: 'decrementare',
25
+ alternatives: ['decrementa', 'diminuire', 'decrement'],
26
+ },
27
+ { type: 'role', role: 'patient' },
28
+ {
29
+ type: 'group',
30
+ optional: true,
31
+ tokens: [
32
+ { type: 'literal', value: 'di', alternatives: ['per'] },
33
+ { type: 'role', role: 'quantity' },
34
+ ],
35
+ },
36
+ ],
37
+ },
38
+ extraction: {
39
+ patient: { position: 1 },
40
+ quantity: {
41
+ marker: 'di',
42
+ markerAlternatives: ['per'],
43
+ default: { type: 'literal', value: '1' },
44
+ },
45
+ },
46
+ },
47
+ {
48
+ id: 'decrement-it-simple',
49
+ language: 'it',
50
+ command: 'decrement',
51
+ priority: 90,
52
+ template: {
53
+ format: 'decrementare {patient}',
54
+ tokens: [
55
+ {
56
+ type: 'literal',
57
+ value: 'decrementare',
58
+ alternatives: ['decrementa', 'diminuire', 'decrement'],
59
+ },
60
+ { type: 'role', role: 'patient' },
61
+ ],
62
+ },
63
+ extraction: {
64
+ patient: { position: 1 },
65
+ quantity: { default: { type: 'literal', value: '1' } },
66
+ },
67
+ },
68
+ ];
69
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Malay Decrement Patterns
3
+ *
4
+ * Patterns for parsing "decrement" command in Malay.
5
+ */
6
+
7
+ import type { LanguagePattern } from '../../types';
8
+
9
+ export function getDecrementPatternsMs(): LanguagePattern[] {
10
+ return [
11
+ // TODO: Add patterns for decrement
12
+ // Example:
13
+ // {
14
+ // id: 'decrement-ms-simple',
15
+ // language: 'ms',
16
+ // command: 'decrement',
17
+ // priority: 100,
18
+ // template: {
19
+ // format: 'TODO {patient}',
20
+ // tokens: [
21
+ // { type: 'literal', value: 'TODO' },
22
+ // { type: 'role', role: 'patient' },
23
+ // ],
24
+ // },
25
+ // extraction: {
26
+ // patient: { position: 1 },
27
+ // },
28
+ // },
29
+ ];
30
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Polish Decrement Patterns
3
+ *
4
+ * Tree-shakeable: Only included when Polish is imported.
5
+ * Polish uses imperative verb forms for commands.
6
+ */
7
+
8
+ import type { LanguagePattern } from '../../types';
9
+
10
+ /**
11
+ * Get Polish decrement patterns.
12
+ */
13
+ export function getDecrementPatternsPl(): LanguagePattern[] {
14
+ return [
15
+ {
16
+ id: 'decrement-pl-full',
17
+ language: 'pl',
18
+ command: 'decrement',
19
+ priority: 100,
20
+ template: {
21
+ format: 'zmniejsz {patient} o {quantity}',
22
+ tokens: [
23
+ { type: 'literal', value: 'zmniejsz', alternatives: ['obniż', 'obniz'] },
24
+ { type: 'role', role: 'patient' },
25
+ {
26
+ type: 'group',
27
+ optional: true,
28
+ tokens: [
29
+ { type: 'literal', value: 'o' },
30
+ { type: 'role', role: 'quantity' },
31
+ ],
32
+ },
33
+ ],
34
+ },
35
+ extraction: {
36
+ patient: { position: 1 },
37
+ quantity: { marker: 'o', default: { type: 'literal', value: 1 } },
38
+ },
39
+ },
40
+ {
41
+ id: 'decrement-pl-simple',
42
+ language: 'pl',
43
+ command: 'decrement',
44
+ priority: 90,
45
+ template: {
46
+ format: 'zmniejsz {patient}',
47
+ tokens: [
48
+ { type: 'literal', value: 'zmniejsz', alternatives: ['obniż', 'obniz'] },
49
+ { type: 'role', role: 'patient' },
50
+ ],
51
+ },
52
+ extraction: {
53
+ patient: { position: 1 },
54
+ quantity: { default: { type: 'literal', value: 1 } },
55
+ },
56
+ },
57
+ ];
58
+ }