@lokascript/semantic 1.0.0 → 1.1.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 (162) hide show
  1. package/dist/browser-ar.ar.global.js +2 -2
  2. package/dist/browser-core.core.global.js +2 -2
  3. package/dist/browser-de.de.global.js +2 -2
  4. package/dist/browser-east-asian.east-asian.global.js +2 -2
  5. package/dist/browser-en-tr.en-tr.global.js +2 -2
  6. package/dist/browser-en.en.global.js +2 -2
  7. package/dist/browser-es-en.es-en.global.js +2 -2
  8. package/dist/browser-es.es.global.js +2 -2
  9. package/dist/browser-fr.fr.global.js +2 -2
  10. package/dist/browser-id.id.global.js +2 -2
  11. package/dist/browser-ja.ja.global.js +2 -2
  12. package/dist/browser-ko.ko.global.js +2 -2
  13. package/dist/browser-lazy.lazy.global.js +2 -2
  14. package/dist/browser-priority.priority.global.js +2 -2
  15. package/dist/browser-pt.pt.global.js +2 -2
  16. package/dist/browser-qu.qu.global.js +2 -2
  17. package/dist/browser-sw.sw.global.js +2 -2
  18. package/dist/browser-tr.tr.global.js +2 -2
  19. package/dist/browser-western.western.global.js +2 -2
  20. package/dist/browser-zh.zh.global.js +2 -2
  21. package/dist/browser.global.js +2 -2
  22. package/dist/browser.global.js.map +1 -1
  23. package/dist/index.cjs +13042 -17462
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +49 -5
  26. package/dist/index.d.ts +49 -5
  27. package/dist/index.js +14044 -18464
  28. package/dist/index.js.map +1 -1
  29. package/dist/languages/ar.d.ts +1 -1
  30. package/dist/languages/ar.js +31 -44
  31. package/dist/languages/ar.js.map +1 -1
  32. package/dist/languages/de.d.ts +1 -1
  33. package/dist/languages/de.js +14 -2
  34. package/dist/languages/de.js.map +1 -1
  35. package/dist/languages/en.d.ts +1 -1
  36. package/dist/languages/en.js +558 -12
  37. package/dist/languages/en.js.map +1 -1
  38. package/dist/languages/es.d.ts +1 -1
  39. package/dist/languages/es.js +16 -0
  40. package/dist/languages/es.js.map +1 -1
  41. package/dist/languages/fr.d.ts +1 -1
  42. package/dist/languages/fr.js +14 -2
  43. package/dist/languages/fr.js.map +1 -1
  44. package/dist/languages/id.d.ts +1 -1
  45. package/dist/languages/id.js +14 -2
  46. package/dist/languages/id.js.map +1 -1
  47. package/dist/languages/ja.d.ts +1 -1
  48. package/dist/languages/ja.js +18 -3
  49. package/dist/languages/ja.js.map +1 -1
  50. package/dist/languages/ko.d.ts +8 -1
  51. package/dist/languages/ko.js +75 -43
  52. package/dist/languages/ko.js.map +1 -1
  53. package/dist/languages/pt.d.ts +1 -1
  54. package/dist/languages/pt.js +17 -0
  55. package/dist/languages/pt.js.map +1 -1
  56. package/dist/languages/qu.d.ts +12 -1
  57. package/dist/languages/qu.js +77 -2
  58. package/dist/languages/qu.js.map +1 -1
  59. package/dist/languages/sw.d.ts +1 -1
  60. package/dist/languages/sw.js.map +1 -1
  61. package/dist/languages/tr.d.ts +9 -1
  62. package/dist/languages/tr.js +96 -72
  63. package/dist/languages/tr.js.map +1 -1
  64. package/dist/languages/zh.d.ts +1 -1
  65. package/dist/languages/zh.js +16 -0
  66. package/dist/languages/zh.js.map +1 -1
  67. package/dist/{types-C4dcj53L.d.ts → types-BY3Id07j.d.ts} +20 -5
  68. package/package.json +20 -29
  69. package/src/generators/command-schemas.ts +21 -10
  70. package/src/generators/event-handler-generator.ts +50 -44
  71. package/src/generators/language-profiles.ts +6 -0
  72. package/src/generators/pattern-generator.ts +883 -1
  73. package/src/generators/profiles/arabic.ts +19 -3
  74. package/src/generators/profiles/bengali.ts +12 -1
  75. package/src/generators/profiles/chinese.ts +15 -0
  76. package/src/generators/profiles/french.ts +12 -1
  77. package/src/generators/profiles/german.ts +12 -1
  78. package/src/generators/profiles/hebrew.ts +148 -0
  79. package/src/generators/profiles/hindi.ts +12 -1
  80. package/src/generators/profiles/index.ts +2 -0
  81. package/src/generators/profiles/indonesian.ts +12 -1
  82. package/src/generators/profiles/italian.ts +16 -0
  83. package/src/generators/profiles/japanese.ts +11 -2
  84. package/src/generators/profiles/korean.ts +15 -1
  85. package/src/generators/profiles/polish.ts +12 -0
  86. package/src/generators/profiles/portuguese.ts +16 -0
  87. package/src/generators/profiles/russian.ts +11 -0
  88. package/src/generators/profiles/spanish.ts +15 -0
  89. package/src/generators/profiles/spanishMexico.ts +176 -0
  90. package/src/generators/profiles/thai.ts +11 -0
  91. package/src/generators/profiles/turkish.ts +49 -7
  92. package/src/generators/profiles/types.ts +21 -5
  93. package/src/generators/profiles/ukrainian.ts +11 -0
  94. package/src/generators/profiles/vietnamese.ts +11 -0
  95. package/src/language-building-schema.ts +111 -0
  96. package/src/languages/_all.ts +5 -1
  97. package/src/languages/es-MX.ts +32 -0
  98. package/src/languages/he.ts +15 -0
  99. package/src/parser/pattern-matcher.ts +10 -1
  100. package/src/parser/semantic-parser.ts +3 -0
  101. package/src/patterns/add/ar.ts +3 -59
  102. package/src/patterns/add/index.ts +5 -1
  103. package/src/patterns/add/ja.ts +3 -81
  104. package/src/patterns/add/ko.ts +3 -62
  105. package/src/patterns/add/qu.ts +69 -0
  106. package/src/patterns/add/tr.ts +3 -59
  107. package/src/patterns/builders.ts +1 -0
  108. package/src/patterns/decrement/tr.ts +3 -36
  109. package/src/patterns/event-handler/ar.ts +3 -139
  110. package/src/patterns/event-handler/he.ts +15 -0
  111. package/src/patterns/event-handler/index.ts +5 -1
  112. package/src/patterns/event-handler/ja.ts +3 -106
  113. package/src/patterns/event-handler/ko.ts +3 -121
  114. package/src/patterns/event-handler/ms.ts +45 -20
  115. package/src/patterns/event-handler/tr.ts +3 -158
  116. package/src/patterns/get/ar.ts +3 -37
  117. package/src/patterns/get/ja.ts +3 -41
  118. package/src/patterns/get/ko.ts +3 -41
  119. package/src/patterns/grammar-transformed/ja.ts +3 -1701
  120. package/src/patterns/grammar-transformed/ko.ts +3 -1299
  121. package/src/patterns/grammar-transformed/tr.ts +3 -1055
  122. package/src/patterns/hide/ar.ts +3 -55
  123. package/src/patterns/hide/ja.ts +3 -57
  124. package/src/patterns/hide/ko.ts +3 -57
  125. package/src/patterns/hide/tr.ts +3 -53
  126. package/src/patterns/increment/tr.ts +3 -40
  127. package/src/patterns/put/ar.ts +3 -62
  128. package/src/patterns/put/ja.ts +3 -63
  129. package/src/patterns/put/ko.ts +3 -55
  130. package/src/patterns/put/tr.ts +3 -55
  131. package/src/patterns/remove/ar.ts +3 -59
  132. package/src/patterns/remove/index.ts +5 -1
  133. package/src/patterns/remove/ja.ts +3 -62
  134. package/src/patterns/remove/ko.ts +3 -66
  135. package/src/patterns/remove/qu.ts +69 -0
  136. package/src/patterns/remove/tr.ts +3 -66
  137. package/src/patterns/set/ar.ts +3 -72
  138. package/src/patterns/set/ja.ts +3 -74
  139. package/src/patterns/set/ko.ts +3 -73
  140. package/src/patterns/set/tr.ts +3 -95
  141. package/src/patterns/show/ar.ts +3 -55
  142. package/src/patterns/show/ja.ts +3 -57
  143. package/src/patterns/show/ko.ts +3 -61
  144. package/src/patterns/show/tr.ts +3 -53
  145. package/src/patterns/take/ar.ts +3 -39
  146. package/src/patterns/toggle/ar.ts +3 -49
  147. package/src/patterns/toggle/index.ts +5 -1
  148. package/src/patterns/toggle/ja.ts +3 -144
  149. package/src/patterns/toggle/ko.ts +3 -101
  150. package/src/patterns/toggle/qu.ts +90 -0
  151. package/src/patterns/toggle/tr.ts +3 -76
  152. package/src/registry.ts +179 -15
  153. package/src/tokenizers/arabic.ts +13 -46
  154. package/src/tokenizers/bengali.ts +2 -16
  155. package/src/tokenizers/he.ts +542 -0
  156. package/src/tokenizers/index.ts +1 -0
  157. package/src/tokenizers/japanese.ts +3 -1
  158. package/src/tokenizers/korean.ts +104 -48
  159. package/src/tokenizers/ms.ts +3 -0
  160. package/src/tokenizers/quechua.ts +101 -2
  161. package/src/tokenizers/turkish.ts +64 -69
  162. package/src/types.ts +13 -0
@@ -1,18 +1,8 @@
1
1
  /**
2
2
  * Turkish Grammar-Transformed Patterns
3
3
  *
4
- * These patterns match the hybrid output from GrammarTransformer where
5
- * event and command are combined in SOV order with attached suffixes:
6
- * English: "on click toggle .active"
7
- * Grammar output: ".activei tıklamade değiştir"
8
- *
9
- * Format: {patient}i tıklamade {action}
10
- * Note: Turkish uses agglutinative suffixes attached directly:
11
- * - -i/-ı/-u/-ü: accusative (patient)
12
- * - -de/-da: locative (event)
13
- * - -e/-a: dative (destination)
14
- *
15
- * Tree-shakeable: Only included when Turkish is imported.
4
+ * Strategy: Return empty array to rely on auto-generated patterns from profile.
5
+ * This follows the Tagalog model which achieves 100% pass rate with pure generation.
16
6
  */
17
7
 
18
8
  import type { LanguagePattern } from '../../types';
@@ -21,1047 +11,5 @@ import type { LanguagePattern } from '../../types';
21
11
  * Get Turkish grammar-transformed patterns.
22
12
  */
23
13
  export function getGrammarTransformedPatternsTr(): LanguagePattern[] {
24
- return [
25
- // ==========================================================================
26
- // Click + Toggle
27
- // ==========================================================================
28
- {
29
- id: 'grammar-tr-click-toggle',
30
- language: 'tr',
31
- command: 'on',
32
- priority: 75,
33
- template: {
34
- // Matches: ".activei tıklamade değiştir"
35
- format: '{patient} tıklamade değiştir',
36
- tokens: [
37
- { type: 'role', role: 'patient' }, // Captures ".activei" (with suffix)
38
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
39
- { type: 'literal', value: 'değiştir', alternatives: ['değiştirmek', 'aç/kapat'] },
40
- ],
41
- },
42
- extraction: {
43
- patient: { position: 0 },
44
- event: { default: { type: 'literal', value: 'click' } },
45
- action: { default: { type: 'literal', value: 'toggle' } },
46
- },
47
- },
48
-
49
- // ==========================================================================
50
- // Click + Add
51
- // ==========================================================================
52
- {
53
- id: 'grammar-tr-click-add',
54
- language: 'tr',
55
- command: 'on',
56
- priority: 75,
57
- template: {
58
- format: '{patient} tıklamade ekle',
59
- tokens: [
60
- { type: 'role', role: 'patient' },
61
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
62
- { type: 'literal', value: 'ekle', alternatives: ['eklemek', 'koy'] },
63
- ],
64
- },
65
- extraction: {
66
- patient: { position: 0 },
67
- event: { default: { type: 'literal', value: 'click' } },
68
- action: { default: { type: 'literal', value: 'add' } },
69
- },
70
- },
71
-
72
- // ==========================================================================
73
- // Click + Remove
74
- // ==========================================================================
75
- {
76
- id: 'grammar-tr-click-remove',
77
- language: 'tr',
78
- command: 'on',
79
- priority: 75,
80
- template: {
81
- format: '{patient} tıklamade kaldır',
82
- tokens: [
83
- { type: 'role', role: 'patient' },
84
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
85
- { type: 'literal', value: 'kaldır', alternatives: ['kaldırmak', 'sil', 'çıkar'] },
86
- ],
87
- },
88
- extraction: {
89
- patient: { position: 0 },
90
- event: { default: { type: 'literal', value: 'click' } },
91
- action: { default: { type: 'literal', value: 'remove' } },
92
- },
93
- },
94
-
95
- // ==========================================================================
96
- // Click + Increment
97
- // ==========================================================================
98
- {
99
- id: 'grammar-tr-click-increment',
100
- language: 'tr',
101
- command: 'on',
102
- priority: 75,
103
- template: {
104
- format: '{patient} tıklamade artır',
105
- tokens: [
106
- { type: 'role', role: 'patient' },
107
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
108
- { type: 'literal', value: 'artır', alternatives: ['artırmak', 'arttır'] },
109
- ],
110
- },
111
- extraction: {
112
- patient: { position: 0 },
113
- event: { default: { type: 'literal', value: 'click' } },
114
- action: { default: { type: 'literal', value: 'increment' } },
115
- },
116
- },
117
-
118
- // ==========================================================================
119
- // Click + Show
120
- // ==========================================================================
121
- {
122
- id: 'grammar-tr-click-show',
123
- language: 'tr',
124
- command: 'on',
125
- priority: 75,
126
- template: {
127
- format: '{patient} tıklamade göster',
128
- tokens: [
129
- { type: 'role', role: 'patient' },
130
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
131
- { type: 'literal', value: 'göster', alternatives: ['göstermek', 'görüntüle'] },
132
- ],
133
- },
134
- extraction: {
135
- patient: { position: 0 },
136
- event: { default: { type: 'literal', value: 'click' } },
137
- action: { default: { type: 'literal', value: 'show' } },
138
- },
139
- },
140
-
141
- // ==========================================================================
142
- // Click + Hide
143
- // ==========================================================================
144
- {
145
- id: 'grammar-tr-click-hide',
146
- language: 'tr',
147
- command: 'on',
148
- priority: 75,
149
- template: {
150
- format: '{patient} tıklamade gizle',
151
- tokens: [
152
- { type: 'role', role: 'patient' },
153
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
154
- { type: 'literal', value: 'gizle', alternatives: ['gizlemek', 'sakla'] },
155
- ],
156
- },
157
- extraction: {
158
- patient: { position: 0 },
159
- event: { default: { type: 'literal', value: 'click' } },
160
- action: { default: { type: 'literal', value: 'hide' } },
161
- },
162
- },
163
-
164
- // ==========================================================================
165
- // Click + Set
166
- // ==========================================================================
167
- {
168
- id: 'grammar-tr-click-set',
169
- language: 'tr',
170
- command: 'on',
171
- priority: 75,
172
- template: {
173
- format: '{patient} tıklamade ayarla',
174
- tokens: [
175
- { type: 'role', role: 'patient' },
176
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
177
- { type: 'literal', value: 'ayarla', alternatives: ['ayarlamak', 'belirle'] },
178
- ],
179
- },
180
- extraction: {
181
- patient: { position: 0 },
182
- event: { default: { type: 'literal', value: 'click' } },
183
- action: { default: { type: 'literal', value: 'set' } },
184
- },
185
- },
186
-
187
- // ==========================================================================
188
- // Click + Decrement
189
- // ==========================================================================
190
- {
191
- id: 'grammar-tr-click-decrement',
192
- language: 'tr',
193
- command: 'on',
194
- priority: 75,
195
- template: {
196
- format: '{patient} tıklamade azalt',
197
- tokens: [
198
- { type: 'role', role: 'patient' },
199
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
200
- { type: 'literal', value: 'azalt', alternatives: ['azaltmak', 'düşür'] },
201
- ],
202
- },
203
- extraction: {
204
- patient: { position: 0 },
205
- event: { default: { type: 'literal', value: 'click' } },
206
- action: { default: { type: 'literal', value: 'decrement' } },
207
- },
208
- },
209
-
210
- // ==========================================================================
211
- // THEN-CHAIN PATTERNS (with continuation marker)
212
- // Turkish uses "sonra" for "then"
213
- // ==========================================================================
214
-
215
- // Click + Wait then: "{duration} tıklamade bekle sonra"
216
- {
217
- id: 'grammar-tr-click-wait-then',
218
- language: 'tr',
219
- command: 'on',
220
- priority: 85,
221
- template: {
222
- format: '{duration} tıklamade bekle sonra',
223
- tokens: [
224
- { type: 'role', role: 'duration' },
225
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
226
- { type: 'literal', value: 'bekle', alternatives: ['beklemek'] },
227
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
228
- ],
229
- },
230
- extraction: {
231
- duration: { position: 0 },
232
- event: { default: { type: 'literal', value: 'click' } },
233
- action: { default: { type: 'literal', value: 'wait' } },
234
- continues: { default: { type: 'literal', value: 'then' } },
235
- },
236
- },
237
-
238
- // Click + Toggle then: "{patient} tıklamade değiştir sonra"
239
- {
240
- id: 'grammar-tr-click-toggle-then',
241
- language: 'tr',
242
- command: 'on',
243
- priority: 85,
244
- template: {
245
- format: '{patient} tıklamade değiştir sonra',
246
- tokens: [
247
- { type: 'role', role: 'patient' },
248
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
249
- { type: 'literal', value: 'değiştir', alternatives: ['değiştirmek'] },
250
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
251
- ],
252
- },
253
- extraction: {
254
- patient: { position: 0 },
255
- event: { default: { type: 'literal', value: 'click' } },
256
- action: { default: { type: 'literal', value: 'toggle' } },
257
- continues: { default: { type: 'literal', value: 'then' } },
258
- },
259
- },
260
-
261
- // Click + Add then: "{patient} tıklamade ekle sonra"
262
- {
263
- id: 'grammar-tr-click-add-then',
264
- language: 'tr',
265
- command: 'on',
266
- priority: 85,
267
- template: {
268
- format: '{patient} tıklamade ekle sonra',
269
- tokens: [
270
- { type: 'role', role: 'patient' },
271
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
272
- { type: 'literal', value: 'ekle', alternatives: ['eklemek'] },
273
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
274
- ],
275
- },
276
- extraction: {
277
- patient: { position: 0 },
278
- event: { default: { type: 'literal', value: 'click' } },
279
- action: { default: { type: 'literal', value: 'add' } },
280
- continues: { default: { type: 'literal', value: 'then' } },
281
- },
282
- },
283
-
284
- // Click + Remove then: "{patient} tıklamade kaldır sonra"
285
- {
286
- id: 'grammar-tr-click-remove-then',
287
- language: 'tr',
288
- command: 'on',
289
- priority: 85,
290
- template: {
291
- format: '{patient} tıklamade kaldır sonra',
292
- tokens: [
293
- { type: 'role', role: 'patient' },
294
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
295
- { type: 'literal', value: 'kaldır', alternatives: ['kaldırmak'] },
296
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
297
- ],
298
- },
299
- extraction: {
300
- patient: { position: 0 },
301
- event: { default: { type: 'literal', value: 'click' } },
302
- action: { default: { type: 'literal', value: 'remove' } },
303
- continues: { default: { type: 'literal', value: 'then' } },
304
- },
305
- },
306
-
307
- // Click + Show then: "{patient} tıklamade göster sonra"
308
- {
309
- id: 'grammar-tr-click-show-then',
310
- language: 'tr',
311
- command: 'on',
312
- priority: 85,
313
- template: {
314
- format: '{patient} tıklamade göster sonra',
315
- tokens: [
316
- { type: 'role', role: 'patient' },
317
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
318
- { type: 'literal', value: 'göster', alternatives: ['göstermek'] },
319
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
320
- ],
321
- },
322
- extraction: {
323
- patient: { position: 0 },
324
- event: { default: { type: 'literal', value: 'click' } },
325
- action: { default: { type: 'literal', value: 'show' } },
326
- continues: { default: { type: 'literal', value: 'then' } },
327
- },
328
- },
329
-
330
- // Click + Hide then: "{patient} tıklamade gizle sonra"
331
- {
332
- id: 'grammar-tr-click-hide-then',
333
- language: 'tr',
334
- command: 'on',
335
- priority: 85,
336
- template: {
337
- format: '{patient} tıklamade gizle sonra',
338
- tokens: [
339
- { type: 'role', role: 'patient' },
340
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
341
- { type: 'literal', value: 'gizle', alternatives: ['gizlemek'] },
342
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
343
- ],
344
- },
345
- extraction: {
346
- patient: { position: 0 },
347
- event: { default: { type: 'literal', value: 'click' } },
348
- action: { default: { type: 'literal', value: 'hide' } },
349
- continues: { default: { type: 'literal', value: 'then' } },
350
- },
351
- },
352
-
353
- // ==========================================================================
354
- // CONTINUATION PATTERNS (for body after then)
355
- // These match commands that follow the "sonra" keyword
356
- // ==========================================================================
357
-
358
- // Remove continuation: "{patient} kaldır"
359
- {
360
- id: 'grammar-tr-remove-continuation',
361
- language: 'tr',
362
- command: 'remove',
363
- priority: 70,
364
- template: {
365
- format: '{patient} kaldır',
366
- tokens: [
367
- { type: 'role', role: 'patient' },
368
- { type: 'literal', value: 'kaldır', alternatives: ['kaldırmak', 'sil', 'çıkar'] },
369
- ],
370
- },
371
- extraction: {
372
- patient: { position: 0 },
373
- action: { default: { type: 'literal', value: 'remove' } },
374
- },
375
- },
376
-
377
- // Toggle continuation: "{patient} değiştir"
378
- {
379
- id: 'grammar-tr-toggle-continuation',
380
- language: 'tr',
381
- command: 'toggle',
382
- priority: 70,
383
- template: {
384
- format: '{patient} değiştir',
385
- tokens: [
386
- { type: 'role', role: 'patient' },
387
- { type: 'literal', value: 'değiştir', alternatives: ['değiştirmek', 'aç/kapat'] },
388
- ],
389
- },
390
- extraction: {
391
- patient: { position: 0 },
392
- action: { default: { type: 'literal', value: 'toggle' } },
393
- },
394
- },
395
-
396
- // Add continuation: "{patient} ekle"
397
- {
398
- id: 'grammar-tr-add-continuation',
399
- language: 'tr',
400
- command: 'add',
401
- priority: 70,
402
- template: {
403
- format: '{patient} ekle',
404
- tokens: [
405
- { type: 'role', role: 'patient' },
406
- { type: 'literal', value: 'ekle', alternatives: ['eklemek', 'koy'] },
407
- ],
408
- },
409
- extraction: {
410
- patient: { position: 0 },
411
- action: { default: { type: 'literal', value: 'add' } },
412
- },
413
- },
414
-
415
- // Show continuation: "{patient} göster"
416
- {
417
- id: 'grammar-tr-show-continuation',
418
- language: 'tr',
419
- command: 'show',
420
- priority: 70,
421
- template: {
422
- format: '{patient} göster',
423
- tokens: [
424
- { type: 'role', role: 'patient' },
425
- { type: 'literal', value: 'göster', alternatives: ['göstermek', 'görüntüle'] },
426
- ],
427
- },
428
- extraction: {
429
- patient: { position: 0 },
430
- action: { default: { type: 'literal', value: 'show' } },
431
- },
432
- },
433
-
434
- // Hide continuation: "{patient} gizle"
435
- {
436
- id: 'grammar-tr-hide-continuation',
437
- language: 'tr',
438
- command: 'hide',
439
- priority: 70,
440
- template: {
441
- format: '{patient} gizle',
442
- tokens: [
443
- { type: 'role', role: 'patient' },
444
- { type: 'literal', value: 'gizle', alternatives: ['gizlemek', 'sakla'] },
445
- ],
446
- },
447
- extraction: {
448
- patient: { position: 0 },
449
- action: { default: { type: 'literal', value: 'hide' } },
450
- },
451
- },
452
-
453
- // Put continuation: "{patient} {destination} koy"
454
- {
455
- id: 'grammar-tr-put-continuation',
456
- language: 'tr',
457
- command: 'put',
458
- priority: 72,
459
- template: {
460
- format: '{patient} {destination} koy',
461
- tokens: [
462
- { type: 'role', role: 'patient' },
463
- { type: 'role', role: 'destination' },
464
- { type: 'literal', value: 'koy', alternatives: ['koymak', 'yerleştir'] },
465
- ],
466
- },
467
- extraction: {
468
- patient: { position: 0 },
469
- destination: { position: 1 },
470
- action: { default: { type: 'literal', value: 'put' } },
471
- },
472
- },
473
-
474
- // ==========================================================================
475
- // PUT BEFORE/AFTER PATTERNS
476
- // ==========================================================================
477
-
478
- // Click + Put before: "{value} önce {target}i tıklamade koy"
479
- {
480
- id: 'grammar-tr-click-put-before',
481
- language: 'tr',
482
- command: 'on',
483
- priority: 78,
484
- template: {
485
- format: '{patient} önce {destination} tıklamade koy',
486
- tokens: [
487
- { type: 'role', role: 'patient' },
488
- { type: 'literal', value: 'önce' },
489
- { type: 'role', role: 'destination' },
490
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
491
- { type: 'literal', value: 'koy', alternatives: ['koymak', 'yerleştir'] },
492
- ],
493
- },
494
- extraction: {
495
- patient: { position: 0 },
496
- destination: { position: 1 },
497
- event: { default: { type: 'literal', value: 'click' } },
498
- action: { default: { type: 'literal', value: 'put' } },
499
- position: { default: { type: 'literal', value: 'before' } },
500
- },
501
- },
502
-
503
- // Click + Put after: "{value} sonra {target}i tıklamade koy"
504
- {
505
- id: 'grammar-tr-click-put-after',
506
- language: 'tr',
507
- command: 'on',
508
- priority: 78,
509
- template: {
510
- format: '{patient} sonra {destination} tıklamade koy',
511
- tokens: [
512
- { type: 'role', role: 'patient' },
513
- { type: 'literal', value: 'sonra' },
514
- { type: 'role', role: 'destination' },
515
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
516
- { type: 'literal', value: 'koy', alternatives: ['koymak', 'yerleştir'] },
517
- ],
518
- },
519
- extraction: {
520
- patient: { position: 0 },
521
- destination: { position: 1 },
522
- event: { default: { type: 'literal', value: 'click' } },
523
- action: { default: { type: 'literal', value: 'put' } },
524
- position: { default: { type: 'literal', value: 'after' } },
525
- },
526
- },
527
-
528
- // ==========================================================================
529
- // FETCH PATTERNS
530
- // ==========================================================================
531
-
532
- // Click + Fetch: "{source}i tıklamade getir"
533
- {
534
- id: 'grammar-tr-click-fetch',
535
- language: 'tr',
536
- command: 'on',
537
- priority: 75,
538
- template: {
539
- format: '{source} tıklamade getir',
540
- tokens: [
541
- { type: 'role', role: 'source' },
542
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
543
- { type: 'literal', value: 'getir', alternatives: ['getirmek', 'al'] },
544
- ],
545
- },
546
- extraction: {
547
- source: { position: 0 },
548
- event: { default: { type: 'literal', value: 'click' } },
549
- action: { default: { type: 'literal', value: 'fetch' } },
550
- },
551
- },
552
-
553
- // Click + Fetch then: "{source}i tıklamade getir sonra"
554
- {
555
- id: 'grammar-tr-click-fetch-then',
556
- language: 'tr',
557
- command: 'on',
558
- priority: 85,
559
- template: {
560
- format: '{source} tıklamade getir sonra',
561
- tokens: [
562
- { type: 'role', role: 'source' },
563
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
564
- { type: 'literal', value: 'getir', alternatives: ['getirmek', 'al'] },
565
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
566
- ],
567
- },
568
- extraction: {
569
- source: { position: 0 },
570
- event: { default: { type: 'literal', value: 'click' } },
571
- action: { default: { type: 'literal', value: 'fetch' } },
572
- continues: { default: { type: 'literal', value: 'then' } },
573
- },
574
- },
575
-
576
- // ==========================================================================
577
- // TRANSITION PATTERNS
578
- // ==========================================================================
579
-
580
- // Click + Transition: "{property}i tıklamade geçiş {value}e {duration}"
581
- {
582
- id: 'grammar-tr-click-transition',
583
- language: 'tr',
584
- command: 'on',
585
- priority: 77,
586
- template: {
587
- format: '{patient} tıklamade geçiş {goal} {duration}',
588
- tokens: [
589
- { type: 'role', role: 'patient' },
590
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
591
- { type: 'literal', value: 'geçiş', alternatives: ['geçişyap', 'animasyon'] },
592
- { type: 'role', role: 'goal' },
593
- { type: 'role', role: 'duration' },
594
- ],
595
- },
596
- extraction: {
597
- patient: { position: 0 },
598
- goal: { position: 1 },
599
- duration: { position: 2 },
600
- event: { default: { type: 'literal', value: 'click' } },
601
- action: { default: { type: 'literal', value: 'transition' } },
602
- },
603
- },
604
-
605
- // Click + Transition then: "{property}i tıklamade geçiş {value}e {duration} sonra"
606
- {
607
- id: 'grammar-tr-click-transition-then',
608
- language: 'tr',
609
- command: 'on',
610
- priority: 87,
611
- template: {
612
- format: '{patient} tıklamade geçiş {goal} {duration} sonra',
613
- tokens: [
614
- { type: 'role', role: 'patient' },
615
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
616
- { type: 'literal', value: 'geçiş', alternatives: ['geçişyap', 'animasyon'] },
617
- { type: 'role', role: 'goal' },
618
- { type: 'role', role: 'duration' },
619
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
620
- ],
621
- },
622
- extraction: {
623
- patient: { position: 0 },
624
- goal: { position: 1 },
625
- duration: { position: 2 },
626
- event: { default: { type: 'literal', value: 'click' } },
627
- action: { default: { type: 'literal', value: 'transition' } },
628
- continues: { default: { type: 'literal', value: 'then' } },
629
- },
630
- },
631
-
632
- // ==========================================================================
633
- // SEND PATTERNS
634
- // ==========================================================================
635
-
636
- // Click + Send: "{message}i tıklamade gönder {target}e"
637
- {
638
- id: 'grammar-tr-click-send',
639
- language: 'tr',
640
- command: 'on',
641
- priority: 77,
642
- template: {
643
- format: '{patient} tıklamade gönder {destination}',
644
- tokens: [
645
- { type: 'role', role: 'patient' },
646
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
647
- { type: 'literal', value: 'gönder', alternatives: ['göndermek', 'yolla'] },
648
- { type: 'role', role: 'destination' },
649
- ],
650
- },
651
- extraction: {
652
- patient: { position: 0 },
653
- destination: { position: 1 },
654
- event: { default: { type: 'literal', value: 'click' } },
655
- action: { default: { type: 'literal', value: 'send' } },
656
- },
657
- },
658
-
659
- // ==========================================================================
660
- // TRIGGER PATTERNS
661
- // ==========================================================================
662
-
663
- // Load + Trigger: "{event}i yüklede tetikle"
664
- {
665
- id: 'grammar-tr-load-trigger',
666
- language: 'tr',
667
- command: 'on',
668
- priority: 75,
669
- template: {
670
- format: '{patient} yüklede tetikle',
671
- tokens: [
672
- { type: 'role', role: 'patient' },
673
- { type: 'literal', value: 'yüklede', alternatives: ['yüklemede', 'yükleme'] },
674
- { type: 'literal', value: 'tetikle', alternatives: ['tetiklemek', 'tetik'] },
675
- ],
676
- },
677
- extraction: {
678
- patient: { position: 0 },
679
- event: { default: { type: 'literal', value: 'load' } },
680
- action: { default: { type: 'literal', value: 'trigger' } },
681
- },
682
- },
683
-
684
- // ==========================================================================
685
- // FOCUS PATTERNS
686
- // ==========================================================================
687
-
688
- // Click + Focus: "{target}i tıklamade odaklan"
689
- {
690
- id: 'grammar-tr-click-focus',
691
- language: 'tr',
692
- command: 'on',
693
- priority: 75,
694
- template: {
695
- format: '{patient} tıklamade odaklan',
696
- tokens: [
697
- { type: 'role', role: 'patient' },
698
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
699
- { type: 'literal', value: 'odaklan', alternatives: ['odakla', 'fokus', 'odak'] },
700
- ],
701
- },
702
- extraction: {
703
- patient: { position: 0 },
704
- event: { default: { type: 'literal', value: 'click' } },
705
- action: { default: { type: 'literal', value: 'focus' } },
706
- },
707
- },
708
-
709
- // ==========================================================================
710
- // LOG PATTERNS
711
- // ==========================================================================
712
-
713
- // Click + Log: "{message}i tıklamade günlükle"
714
- {
715
- id: 'grammar-tr-click-log',
716
- language: 'tr',
717
- command: 'on',
718
- priority: 75,
719
- template: {
720
- format: '{patient} tıklamade günlükle',
721
- tokens: [
722
- { type: 'role', role: 'patient' },
723
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
724
- { type: 'literal', value: 'günlükle', alternatives: ['günlük', 'kayıt', 'kaydet'] },
725
- ],
726
- },
727
- extraction: {
728
- patient: { position: 0 },
729
- event: { default: { type: 'literal', value: 'click' } },
730
- action: { default: { type: 'literal', value: 'log' } },
731
- },
732
- },
733
-
734
- // ==========================================================================
735
- // GO/NAVIGATE PATTERNS
736
- // ==========================================================================
737
-
738
- // Click + Go back: "backi tıklamade git"
739
- {
740
- id: 'grammar-tr-click-go-back',
741
- language: 'tr',
742
- command: 'on',
743
- priority: 75,
744
- template: {
745
- format: 'backi tıklamade git',
746
- tokens: [
747
- { type: 'literal', value: 'backi', alternatives: ['back'] },
748
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
749
- { type: 'literal', value: 'git', alternatives: ['gitmek', 'geç'] },
750
- ],
751
- },
752
- extraction: {
753
- destination: { default: { type: 'literal', value: 'back' } },
754
- event: { default: { type: 'literal', value: 'click' } },
755
- action: { default: { type: 'literal', value: 'go' } },
756
- },
757
- },
758
-
759
- // ==========================================================================
760
- // CALL PATTERNS
761
- // ==========================================================================
762
-
763
- // Click + Call: "{function}i tıklamade çağır"
764
- {
765
- id: 'grammar-tr-click-call',
766
- language: 'tr',
767
- command: 'on',
768
- priority: 75,
769
- template: {
770
- format: '{patient} tıklamade çağır',
771
- tokens: [
772
- { type: 'role', role: 'patient' },
773
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
774
- { type: 'literal', value: 'çağır', alternatives: ['çağırmak', 'ara'] },
775
- ],
776
- },
777
- extraction: {
778
- patient: { position: 0 },
779
- event: { default: { type: 'literal', value: 'click' } },
780
- action: { default: { type: 'literal', value: 'call' } },
781
- },
782
- },
783
-
784
- // ==========================================================================
785
- // GET PATTERNS
786
- // ==========================================================================
787
-
788
- // Click + Get: "{target}i tıklamade al"
789
- {
790
- id: 'grammar-tr-click-get',
791
- language: 'tr',
792
- command: 'on',
793
- priority: 75,
794
- template: {
795
- format: '{patient} tıklamade al',
796
- tokens: [
797
- { type: 'role', role: 'patient' },
798
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
799
- { type: 'literal', value: 'al', alternatives: ['almak', 'elde et'] },
800
- ],
801
- },
802
- extraction: {
803
- patient: { position: 0 },
804
- event: { default: { type: 'literal', value: 'click' } },
805
- action: { default: { type: 'literal', value: 'get' } },
806
- },
807
- },
808
-
809
- // Click + Get then: "{target}i tıklamade al sonra"
810
- {
811
- id: 'grammar-tr-click-get-then',
812
- language: 'tr',
813
- command: 'on',
814
- priority: 85,
815
- template: {
816
- format: '{patient} tıklamade al sonra',
817
- tokens: [
818
- { type: 'role', role: 'patient' },
819
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
820
- { type: 'literal', value: 'al', alternatives: ['almak', 'elde et'] },
821
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
822
- ],
823
- },
824
- extraction: {
825
- patient: { position: 0 },
826
- event: { default: { type: 'literal', value: 'click' } },
827
- action: { default: { type: 'literal', value: 'get' } },
828
- continues: { default: { type: 'literal', value: 'then' } },
829
- },
830
- },
831
-
832
- // ==========================================================================
833
- // DEFAULT PATTERNS (load event)
834
- // ==========================================================================
835
-
836
- // Load + Default: "{patient}i yüklede varsayılan {goal}e"
837
- {
838
- id: 'grammar-tr-load-default',
839
- language: 'tr',
840
- command: 'on',
841
- priority: 75,
842
- template: {
843
- format: '{patient} yüklede varsayılan {goal}',
844
- tokens: [
845
- { type: 'role', role: 'patient' },
846
- { type: 'literal', value: 'yüklede', alternatives: ['yüklemede', 'yükleme'] },
847
- { type: 'literal', value: 'varsayılan', alternatives: ['varsayılı', 'default'] },
848
- { type: 'role', role: 'goal' },
849
- ],
850
- },
851
- extraction: {
852
- patient: { position: 0 },
853
- goal: { position: 1 },
854
- event: { default: { type: 'literal', value: 'load' } },
855
- action: { default: { type: 'literal', value: 'default' } },
856
- },
857
- },
858
-
859
- // ==========================================================================
860
- // WAIT PATTERNS
861
- // ==========================================================================
862
-
863
- // Click + Wait then: "{duration}i tıklamade bekle sonra"
864
- {
865
- id: 'grammar-tr-click-wait-duration-then',
866
- language: 'tr',
867
- command: 'on',
868
- priority: 85,
869
- template: {
870
- format: '{duration} tıklamade bekle sonra',
871
- tokens: [
872
- { type: 'role', role: 'duration' },
873
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
874
- { type: 'literal', value: 'bekle', alternatives: ['beklemek'] },
875
- { type: 'literal', value: 'sonra', alternatives: ['ardından'] },
876
- ],
877
- },
878
- extraction: {
879
- duration: { position: 0 },
880
- event: { default: { type: 'literal', value: 'click' } },
881
- action: { default: { type: 'literal', value: 'wait' } },
882
- continues: { default: { type: 'literal', value: 'then' } },
883
- },
884
- },
885
-
886
- // ==========================================================================
887
- // PUT INTO PATTERNS
888
- // ==========================================================================
889
-
890
- // Click + Put into: "{content}i tıklamade koy {target}e"
891
- {
892
- id: 'grammar-tr-click-put-into',
893
- language: 'tr',
894
- command: 'on',
895
- priority: 76,
896
- template: {
897
- format: '{patient} tıklamade koy {destination}',
898
- tokens: [
899
- { type: 'role', role: 'patient' },
900
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
901
- { type: 'literal', value: 'koy', alternatives: ['koymak', 'yerleştir'] },
902
- { type: 'role', role: 'destination' },
903
- ],
904
- },
905
- extraction: {
906
- patient: { position: 0 },
907
- destination: { position: 1 },
908
- event: { default: { type: 'literal', value: 'click' } },
909
- action: { default: { type: 'literal', value: 'put' } },
910
- },
911
- },
912
-
913
- // Click + Put into me: "{content}i tıklamade koy bene"
914
- {
915
- id: 'grammar-tr-click-put-into-me',
916
- language: 'tr',
917
- command: 'on',
918
- priority: 77,
919
- template: {
920
- format: '{patient} tıklamade koy bene',
921
- tokens: [
922
- { type: 'role', role: 'patient' },
923
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
924
- { type: 'literal', value: 'koy', alternatives: ['koymak', 'yerleştir'] },
925
- { type: 'literal', value: 'bene', alternatives: ['bana'] },
926
- ],
927
- },
928
- extraction: {
929
- patient: { position: 0 },
930
- destination: { default: { type: 'literal', value: 'me' } },
931
- event: { default: { type: 'literal', value: 'click' } },
932
- action: { default: { type: 'literal', value: 'put' } },
933
- },
934
- },
935
-
936
- // ==========================================================================
937
- // EXCHANGE/SWAP PATTERNS
938
- // ==========================================================================
939
-
940
- // Click + Exchange: "{source}i tıklamade takas {target} ile"
941
- {
942
- id: 'grammar-tr-click-exchange',
943
- language: 'tr',
944
- command: 'on',
945
- priority: 76,
946
- template: {
947
- format: '{patient} tıklamade takas {destination} ile',
948
- tokens: [
949
- { type: 'role', role: 'patient' },
950
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
951
- { type: 'literal', value: 'takas', alternatives: ['değiştir', 'swap'] },
952
- { type: 'role', role: 'destination' },
953
- { type: 'literal', value: 'ile' },
954
- ],
955
- },
956
- extraction: {
957
- patient: { position: 0 },
958
- destination: { position: 1 },
959
- event: { default: { type: 'literal', value: 'click' } },
960
- action: { default: { type: 'literal', value: 'swap' } },
961
- },
962
- },
963
-
964
- // ==========================================================================
965
- // APPEND PATTERNS
966
- // ==========================================================================
967
-
968
- // Click + Append: "{content}i tıklamade ekle {target}"
969
- {
970
- id: 'grammar-tr-click-append-to',
971
- language: 'tr',
972
- command: 'on',
973
- priority: 76,
974
- template: {
975
- format: '{patient} tıklamade ekle {destination}',
976
- tokens: [
977
- { type: 'role', role: 'patient' },
978
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
979
- { type: 'literal', value: 'ekle', alternatives: ['eklemek', 'koy'] },
980
- { type: 'role', role: 'destination' },
981
- ],
982
- },
983
- extraction: {
984
- patient: { position: 0 },
985
- destination: { position: 1 },
986
- event: { default: { type: 'literal', value: 'click' } },
987
- action: { default: { type: 'literal', value: 'append' } },
988
- },
989
- },
990
-
991
- // ==========================================================================
992
- // BLUR PATTERNS
993
- // ==========================================================================
994
-
995
- // Keydown + Blur: "beni keydown[key=="Escape"]de bulanık"
996
- {
997
- id: 'grammar-tr-keydown-blur',
998
- language: 'tr',
999
- command: 'on',
1000
- priority: 76,
1001
- template: {
1002
- format: '{patient} {event} bulanık',
1003
- tokens: [
1004
- { type: 'role', role: 'patient' },
1005
- { type: 'role', role: 'event' },
1006
- { type: 'literal', value: 'bulanık', alternatives: ['bulanıklaş', 'blur'] },
1007
- ],
1008
- },
1009
- extraction: {
1010
- patient: { position: 0 },
1011
- event: { position: 1 },
1012
- action: { default: { type: 'literal', value: 'blur' } },
1013
- },
1014
- },
1015
-
1016
- // ==========================================================================
1017
- // WAIT FOR EVENT PATTERNS
1018
- // ==========================================================================
1019
-
1020
- // Click + Wait event: "tıklamade bekle {event}"
1021
- {
1022
- id: 'grammar-tr-click-wait-event',
1023
- language: 'tr',
1024
- command: 'on',
1025
- priority: 75,
1026
- template: {
1027
- format: 'tıklamade bekle {duration}',
1028
- tokens: [
1029
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
1030
- { type: 'literal', value: 'bekle', alternatives: ['beklemek'] },
1031
- { type: 'role', role: 'duration' },
1032
- ],
1033
- },
1034
- extraction: {
1035
- duration: { position: 0 },
1036
- event: { default: { type: 'literal', value: 'click' } },
1037
- action: { default: { type: 'literal', value: 'wait' } },
1038
- },
1039
- },
1040
-
1041
- // ==========================================================================
1042
- // GO URL PATTERNS
1043
- // ==========================================================================
1044
-
1045
- // Click + Go url: "tıklamade git url {destination}e"
1046
- {
1047
- id: 'grammar-tr-click-go-url',
1048
- language: 'tr',
1049
- command: 'on',
1050
- priority: 76,
1051
- template: {
1052
- format: 'tıklamade git url {destination}',
1053
- tokens: [
1054
- { type: 'literal', value: 'tıklamade', alternatives: ['tıklamada'] },
1055
- { type: 'literal', value: 'git', alternatives: ['gitmek', 'geç'] },
1056
- { type: 'literal', value: 'url', alternatives: ['yol'] },
1057
- { type: 'role', role: 'destination' },
1058
- ],
1059
- },
1060
- extraction: {
1061
- destination: { position: 0 },
1062
- event: { default: { type: 'literal', value: 'click' } },
1063
- action: { default: { type: 'literal', value: 'go' } },
1064
- },
1065
- },
1066
- ];
14
+ return [];
1067
15
  }