@willwade/aac-processors 0.2.19 → 0.3.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 (37) hide show
  1. package/README.md +1 -0
  2. package/dist/browser/core/treeStructure.js +17 -0
  3. package/dist/browser/index.browser.js +17 -1
  4. package/dist/browser/processors/gotalkNow/nsKeyed.js +101 -0
  5. package/dist/browser/processors/gotalkNowProcessor.js +463 -0
  6. package/dist/browser/processors/gridset/cellHelpers.js +13 -3
  7. package/dist/browser/processors/gridset/commands.js +771 -0
  8. package/dist/browser/processors/gridset/pluginTypes.js +19 -1
  9. package/dist/browser/processors/gridsetProcessor.js +874 -17
  10. package/dist/browser/processors/obfProcessor.js +6 -2
  11. package/dist/browser/validation/gridsetValidator.js +54 -198
  12. package/dist/cli/index.js +3 -0
  13. package/dist/core/analyze.js +5 -0
  14. package/dist/core/treeStructure.d.ts +20 -0
  15. package/dist/core/treeStructure.js +17 -0
  16. package/dist/gotalkNow.d.ts +6 -0
  17. package/dist/gotalkNow.js +11 -0
  18. package/dist/index.browser.d.ts +1 -0
  19. package/dist/index.browser.js +19 -2
  20. package/dist/index.node.d.ts +1 -0
  21. package/dist/index.node.js +6 -1
  22. package/dist/processors/gotalkNow/nsKeyed.d.ts +27 -0
  23. package/dist/processors/gotalkNow/nsKeyed.js +105 -0
  24. package/dist/processors/gotalkNowProcessor.d.ts +51 -0
  25. package/dist/processors/gotalkNowProcessor.js +469 -0
  26. package/dist/processors/gridset/cellHelpers.js +13 -3
  27. package/dist/processors/gridset/commands.d.ts +2 -0
  28. package/dist/processors/gridset/commands.js +771 -0
  29. package/dist/processors/gridset/pluginTypes.d.ts +7 -0
  30. package/dist/processors/gridset/pluginTypes.js +19 -1
  31. package/dist/processors/gridsetProcessor.js +874 -17
  32. package/dist/processors/index.d.ts +1 -0
  33. package/dist/processors/index.js +3 -1
  34. package/dist/processors/obfProcessor.js +6 -2
  35. package/dist/validation/gridsetValidator.d.ts +8 -15
  36. package/dist/validation/gridsetValidator.js +54 -198
  37. package/package.json +5 -1
@@ -32,6 +32,8 @@ export var Grid3CommandCategory;
32
32
  Grid3CommandCategory["MOUSE"] = "mouse";
33
33
  Grid3CommandCategory["WINDOW"] = "window";
34
34
  Grid3CommandCategory["MEDIA"] = "media";
35
+ Grid3CommandCategory["PHOTOS"] = "photos";
36
+ Grid3CommandCategory["COMMAND_EXECUTION"] = "command_execution";
35
37
  Grid3CommandCategory["CUSTOM"] = "custom";
36
38
  })(Grid3CommandCategory || (Grid3CommandCategory = {}));
37
39
  /**
@@ -89,6 +91,28 @@ export const GRID3_COMMANDS = {
89
91
  },
90
92
  ],
91
93
  },
94
+ 'Jump.SetBookmark': {
95
+ id: 'Jump.SetBookmark',
96
+ category: Grid3CommandCategory.NAVIGATION,
97
+ pluginId: 'navigation',
98
+ displayName: 'Set Bookmark',
99
+ description: 'Set, clear, or toggle a navigation bookmark',
100
+ parameters: [
101
+ {
102
+ key: 'indicatorenabled',
103
+ type: 'boolean',
104
+ required: false,
105
+ description: 'Show indicator when bookmark is set',
106
+ },
107
+ {
108
+ key: 'action',
109
+ type: 'string',
110
+ required: false,
111
+ description: 'Action to perform: Toggle, Set, Clear',
112
+ },
113
+ ],
114
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
115
+ },
92
116
  // ========================================
93
117
  // COMMUNICATION COMMANDS
94
118
  // ========================================
@@ -145,6 +169,70 @@ export const GRID3_COMMANDS = {
145
169
  },
146
170
  ],
147
171
  },
172
+ 'Action.Enter': {
173
+ id: 'Action.Enter',
174
+ category: Grid3CommandCategory.COMMUNICATION,
175
+ pluginId: 'core',
176
+ displayName: 'Enter',
177
+ description: 'Press Enter key',
178
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
179
+ },
180
+ 'Action.Number': {
181
+ id: 'Action.Number',
182
+ category: Grid3CommandCategory.COMMUNICATION,
183
+ pluginId: 'core',
184
+ displayName: 'Insert Number',
185
+ description: 'Insert a number character',
186
+ parameters: [
187
+ {
188
+ key: 'letter',
189
+ type: 'string',
190
+ required: true,
191
+ description: 'Number to insert',
192
+ },
193
+ ],
194
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
195
+ },
196
+ 'Action.Punctuation': {
197
+ id: 'Action.Punctuation',
198
+ category: Grid3CommandCategory.COMMUNICATION,
199
+ pluginId: 'core',
200
+ displayName: 'Insert Punctuation',
201
+ description: 'Insert a punctuation character',
202
+ parameters: [
203
+ {
204
+ key: 'letter',
205
+ type: 'string',
206
+ required: true,
207
+ description: 'Punctuation character to insert',
208
+ },
209
+ ],
210
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
211
+ },
212
+ 'Action.Copy': {
213
+ id: 'Action.Copy',
214
+ category: Grid3CommandCategory.COMMUNICATION,
215
+ pluginId: 'core',
216
+ displayName: 'Copy',
217
+ description: 'Copy selected text to clipboard',
218
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
219
+ },
220
+ 'Action.Paste': {
221
+ id: 'Action.Paste',
222
+ category: Grid3CommandCategory.COMMUNICATION,
223
+ pluginId: 'core',
224
+ displayName: 'Paste',
225
+ description: 'Paste text from clipboard',
226
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
227
+ },
228
+ 'Action.SelectAll': {
229
+ id: 'Action.SelectAll',
230
+ category: Grid3CommandCategory.COMMUNICATION,
231
+ pluginId: 'core',
232
+ displayName: 'Select All',
233
+ description: 'Select all text in the workspace',
234
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
235
+ },
148
236
  // ========================================
149
237
  // TEXT EDITING COMMANDS
150
238
  // ========================================
@@ -203,6 +291,78 @@ export const GRID3_COMMANDS = {
203
291
  description: 'Delete character before cursor',
204
292
  platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
205
293
  },
294
+ 'Action.NextLetter': {
295
+ id: 'Action.NextLetter',
296
+ category: Grid3CommandCategory.TEXT_EDITING,
297
+ pluginId: 'core',
298
+ displayName: 'Next Letter',
299
+ description: 'Move cursor to next letter',
300
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
301
+ },
302
+ 'Action.PreviousLetter': {
303
+ id: 'Action.PreviousLetter',
304
+ category: Grid3CommandCategory.TEXT_EDITING,
305
+ pluginId: 'core',
306
+ displayName: 'Previous Letter',
307
+ description: 'Move cursor to previous letter',
308
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
309
+ },
310
+ 'Action.NextWord': {
311
+ id: 'Action.NextWord',
312
+ category: Grid3CommandCategory.TEXT_EDITING,
313
+ pluginId: 'core',
314
+ displayName: 'Next Word',
315
+ description: 'Move cursor to next word',
316
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
317
+ },
318
+ 'Action.PreviousWord': {
319
+ id: 'Action.PreviousWord',
320
+ category: Grid3CommandCategory.TEXT_EDITING,
321
+ pluginId: 'core',
322
+ displayName: 'Previous Word',
323
+ description: 'Move cursor to previous word',
324
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
325
+ },
326
+ 'Action.DocumentStart': {
327
+ id: 'Action.DocumentStart',
328
+ category: Grid3CommandCategory.TEXT_EDITING,
329
+ pluginId: 'core',
330
+ displayName: 'Document Start',
331
+ description: 'Jump cursor to the start of the document',
332
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
333
+ },
334
+ 'Action.DocumentEnd': {
335
+ id: 'Action.DocumentEnd',
336
+ category: Grid3CommandCategory.TEXT_EDITING,
337
+ pluginId: 'core',
338
+ displayName: 'Document End',
339
+ description: 'Jump cursor to the end of the document',
340
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
341
+ },
342
+ 'Action.UndoWorkspaceEdit': {
343
+ id: 'Action.UndoWorkspaceEdit',
344
+ category: Grid3CommandCategory.TEXT_EDITING,
345
+ pluginId: 'core',
346
+ displayName: 'Undo Workspace Edit',
347
+ description: 'Undo the last workspace edit',
348
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
349
+ },
350
+ 'Action.UndoClear': {
351
+ id: 'Action.UndoClear',
352
+ category: Grid3CommandCategory.TEXT_EDITING,
353
+ pluginId: 'core',
354
+ displayName: 'Undo Clear',
355
+ description: 'Undo a clear text action',
356
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
357
+ },
358
+ 'Action.Print': {
359
+ id: 'Action.Print',
360
+ category: Grid3CommandCategory.TEXT_EDITING,
361
+ pluginId: 'core',
362
+ displayName: 'Print',
363
+ description: 'Print current content',
364
+ platforms: ['desktop', 'medicare', 'medicareBionics'],
365
+ },
206
366
  // ========================================
207
367
  // SPEECH COMMANDS
208
368
  // ========================================
@@ -274,6 +434,36 @@ export const GRID3_COMMANDS = {
274
434
  description: 'Speak without inserting text',
275
435
  platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
276
436
  },
437
+ 'Speech.Stop': {
438
+ id: 'Speech.Stop',
439
+ category: Grid3CommandCategory.SPEECH,
440
+ pluginId: 'speech',
441
+ displayName: 'Stop Speech',
442
+ description: 'Stop current speech output',
443
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
444
+ },
445
+ SpeechPlaySound: {
446
+ id: 'SpeechPlaySound',
447
+ category: Grid3CommandCategory.SPEECH,
448
+ pluginId: 'speech',
449
+ displayName: 'Play Sound',
450
+ description: 'Play a sound file',
451
+ parameters: [
452
+ {
453
+ key: 'filedata',
454
+ type: 'string',
455
+ required: true,
456
+ description: 'Sound file data or path',
457
+ },
458
+ {
459
+ key: 'wait',
460
+ type: 'boolean',
461
+ required: false,
462
+ description: 'Wait for sound to finish before continuing',
463
+ },
464
+ ],
465
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
466
+ },
277
467
  // ========================================
278
468
  // COMPUTER CONTROL COMMANDS
279
469
  // ========================================
@@ -345,6 +535,54 @@ export const GRID3_COMMANDS = {
345
535
  description: 'Press context menu key',
346
536
  platforms: ['desktop'],
347
537
  },
538
+ 'ComputerControl.Keyboard': {
539
+ id: 'ComputerControl.Keyboard',
540
+ category: Grid3CommandCategory.COMPUTER_CONTROL,
541
+ pluginId: 'computercontrol',
542
+ displayName: 'Send Keyboard Input',
543
+ description: 'Send a sequence of keystrokes to the computer',
544
+ parameters: [
545
+ {
546
+ key: 'keystring',
547
+ type: 'string',
548
+ required: true,
549
+ description: 'Key sequence (e.g. {TAB}{ENTER}, {LEFTCONTROL}a)',
550
+ },
551
+ ],
552
+ platforms: ['desktop', 'medicareBionics'],
553
+ },
554
+ 'ComputerControl.Shift': {
555
+ id: 'ComputerControl.Shift',
556
+ category: Grid3CommandCategory.COMPUTER_CONTROL,
557
+ pluginId: 'computercontrol',
558
+ displayName: 'Shift Key',
559
+ description: 'Toggle shift key state',
560
+ parameters: [
561
+ {
562
+ key: 'action',
563
+ type: 'string',
564
+ required: false,
565
+ description: 'Action: Toggle, On, Off',
566
+ },
567
+ ],
568
+ platforms: ['desktop', 'medicareBionics'],
569
+ },
570
+ 'ComputerControl.DeviceMute': {
571
+ id: 'ComputerControl.DeviceMute',
572
+ category: Grid3CommandCategory.COMPUTER_CONTROL,
573
+ pluginId: 'computercontrol',
574
+ displayName: 'Device Mute',
575
+ description: 'Mute or unmute device audio',
576
+ parameters: [
577
+ {
578
+ key: 'indicatorenabled',
579
+ type: 'boolean',
580
+ required: false,
581
+ description: 'Show indicator when muted',
582
+ },
583
+ ],
584
+ platforms: ['desktop', 'medicareBionics'],
585
+ },
348
586
  // ========================================
349
587
  // WEB BROWSER COMMANDS
350
588
  // ========================================
@@ -420,6 +658,276 @@ export const GRID3_COMMANDS = {
420
658
  description: 'Zoom out the page',
421
659
  platforms: ['desktop', 'ios'],
422
660
  },
661
+ 'WebBrowser.NavigateUrl': {
662
+ id: 'WebBrowser.NavigateUrl',
663
+ category: Grid3CommandCategory.WEB_BROWSER,
664
+ pluginId: 'webbrowser',
665
+ displayName: 'Navigate to URL',
666
+ description: 'Navigate the embedded browser to a specific URL',
667
+ parameters: [
668
+ {
669
+ key: 'url',
670
+ type: 'string',
671
+ required: true,
672
+ description: 'URL to navigate to',
673
+ },
674
+ ],
675
+ platforms: ['desktop', 'ios'],
676
+ },
677
+ 'WebBrowser.Reload': {
678
+ id: 'WebBrowser.Reload',
679
+ category: Grid3CommandCategory.WEB_BROWSER,
680
+ pluginId: 'webbrowser',
681
+ displayName: 'Reload Page',
682
+ description: 'Reload the current web page',
683
+ platforms: ['desktop', 'ios'],
684
+ },
685
+ 'WebBrowser.Stop': {
686
+ id: 'WebBrowser.Stop',
687
+ category: Grid3CommandCategory.WEB_BROWSER,
688
+ pluginId: 'webbrowser',
689
+ displayName: 'Stop Loading',
690
+ description: 'Stop the current page from loading',
691
+ platforms: ['desktop', 'ios'],
692
+ },
693
+ 'WebBrowser.ScrollUp': {
694
+ id: 'WebBrowser.ScrollUp',
695
+ category: Grid3CommandCategory.WEB_BROWSER,
696
+ pluginId: 'webbrowser',
697
+ displayName: 'Scroll Up',
698
+ description: 'Scroll the web page up',
699
+ parameters: [
700
+ {
701
+ key: 'size',
702
+ type: 'string',
703
+ required: false,
704
+ description: 'Scroll amount: Small, Medium, Large',
705
+ },
706
+ ],
707
+ platforms: ['desktop', 'ios'],
708
+ },
709
+ 'WebBrowser.ScrollDown': {
710
+ id: 'WebBrowser.ScrollDown',
711
+ category: Grid3CommandCategory.WEB_BROWSER,
712
+ pluginId: 'webbrowser',
713
+ displayName: 'Scroll Down',
714
+ description: 'Scroll the web page down',
715
+ parameters: [
716
+ {
717
+ key: 'size',
718
+ type: 'string',
719
+ required: false,
720
+ description: 'Scroll amount: Small, Medium, Large',
721
+ },
722
+ ],
723
+ platforms: ['desktop', 'ios'],
724
+ },
725
+ 'WebBrowser.ScrollLeft': {
726
+ id: 'WebBrowser.ScrollLeft',
727
+ category: Grid3CommandCategory.WEB_BROWSER,
728
+ pluginId: 'webbrowser',
729
+ displayName: 'Scroll Left',
730
+ description: 'Scroll the web page left',
731
+ platforms: ['desktop', 'ios'],
732
+ },
733
+ 'WebBrowser.ScrollRight': {
734
+ id: 'WebBrowser.ScrollRight',
735
+ category: Grid3CommandCategory.WEB_BROWSER,
736
+ pluginId: 'webbrowser',
737
+ displayName: 'Scroll Right',
738
+ description: 'Scroll the web page right',
739
+ platforms: ['desktop', 'ios'],
740
+ },
741
+ 'WebBrowser.SpatialNavigateUp': {
742
+ id: 'WebBrowser.SpatialNavigateUp',
743
+ category: Grid3CommandCategory.WEB_BROWSER,
744
+ pluginId: 'webbrowser',
745
+ displayName: 'Spatial Navigate Up',
746
+ description: 'Move focus to the element above',
747
+ platforms: ['desktop', 'ios'],
748
+ },
749
+ 'WebBrowser.SpatialNavigateDown': {
750
+ id: 'WebBrowser.SpatialNavigateDown',
751
+ category: Grid3CommandCategory.WEB_BROWSER,
752
+ pluginId: 'webbrowser',
753
+ displayName: 'Spatial Navigate Down',
754
+ description: 'Move focus to the element below',
755
+ platforms: ['desktop', 'ios'],
756
+ },
757
+ 'WebBrowser.SpatialNavigateLeft': {
758
+ id: 'WebBrowser.SpatialNavigateLeft',
759
+ category: Grid3CommandCategory.WEB_BROWSER,
760
+ pluginId: 'webbrowser',
761
+ displayName: 'Spatial Navigate Left',
762
+ description: 'Move focus to the element to the left',
763
+ platforms: ['desktop', 'ios'],
764
+ },
765
+ 'WebBrowser.SpatialNavigateRight': {
766
+ id: 'WebBrowser.SpatialNavigateRight',
767
+ category: Grid3CommandCategory.WEB_BROWSER,
768
+ pluginId: 'webbrowser',
769
+ displayName: 'Spatial Navigate Right',
770
+ description: 'Move focus to the element to the right',
771
+ platforms: ['desktop', 'ios'],
772
+ },
773
+ 'WebBrowser.NextElement': {
774
+ id: 'WebBrowser.NextElement',
775
+ category: Grid3CommandCategory.WEB_BROWSER,
776
+ pluginId: 'webbrowser',
777
+ displayName: 'Next Element',
778
+ description: 'Move focus to the next DOM element',
779
+ platforms: ['desktop', 'ios'],
780
+ },
781
+ 'WebBrowser.PreviousElement': {
782
+ id: 'WebBrowser.PreviousElement',
783
+ category: Grid3CommandCategory.WEB_BROWSER,
784
+ pluginId: 'webbrowser',
785
+ displayName: 'Previous Element',
786
+ description: 'Move focus to the previous DOM element',
787
+ platforms: ['desktop', 'ios'],
788
+ },
789
+ 'WebBrowser.ActivateElement': {
790
+ id: 'WebBrowser.ActivateElement',
791
+ category: Grid3CommandCategory.WEB_BROWSER,
792
+ pluginId: 'webbrowser',
793
+ displayName: 'Activate Element',
794
+ description: 'Click or activate the currently focused element',
795
+ platforms: ['desktop', 'ios'],
796
+ },
797
+ 'WebBrowser.SetZoom': {
798
+ id: 'WebBrowser.SetZoom',
799
+ category: Grid3CommandCategory.WEB_BROWSER,
800
+ pluginId: 'webbrowser',
801
+ displayName: 'Set Zoom Level',
802
+ description: 'Set a specific zoom level',
803
+ parameters: [
804
+ {
805
+ key: 'option',
806
+ type: 'string',
807
+ required: false,
808
+ description: 'Zoom option: Increase, Decrease, Reset',
809
+ },
810
+ ],
811
+ platforms: ['desktop', 'ios'],
812
+ },
813
+ 'WebBrowser.ReadingMode': {
814
+ id: 'WebBrowser.ReadingMode',
815
+ category: Grid3CommandCategory.WEB_BROWSER,
816
+ pluginId: 'webbrowser',
817
+ displayName: 'Reading Mode',
818
+ description: 'Toggle browser reading/simplified view mode',
819
+ parameters: [
820
+ {
821
+ key: 'action',
822
+ type: 'string',
823
+ required: false,
824
+ description: 'Action: Toggle, On, Off',
825
+ },
826
+ ],
827
+ platforms: ['desktop', 'ios'],
828
+ },
829
+ 'WebBrowser.InsertMobileSite': {
830
+ id: 'WebBrowser.InsertMobileSite',
831
+ category: Grid3CommandCategory.WEB_BROWSER,
832
+ pluginId: 'webbrowser',
833
+ displayName: 'Request Mobile Site',
834
+ description: 'Toggle between mobile and desktop site views',
835
+ parameters: [
836
+ {
837
+ key: 'action',
838
+ type: 'string',
839
+ required: false,
840
+ description: 'Action: Toggle, On, Off',
841
+ },
842
+ ],
843
+ platforms: ['desktop', 'ios'],
844
+ },
845
+ 'WebBrowser.ExecuteJavaScript': {
846
+ id: 'WebBrowser.ExecuteJavaScript',
847
+ category: Grid3CommandCategory.WEB_BROWSER,
848
+ pluginId: 'webbrowser',
849
+ displayName: 'Execute JavaScript',
850
+ description: 'Execute a predefined JavaScript command in the browser',
851
+ parameters: [
852
+ {
853
+ key: 'commandid',
854
+ type: 'string',
855
+ required: true,
856
+ description: 'Predefined JavaScript command ID (e.g. WhatsApp/Home/Focus_Message_Input)',
857
+ },
858
+ ],
859
+ platforms: ['desktop', 'ios'],
860
+ },
861
+ 'WebBrowser.SpeakJavascriptFunction': {
862
+ id: 'WebBrowser.SpeakJavascriptFunction',
863
+ category: Grid3CommandCategory.WEB_BROWSER,
864
+ pluginId: 'webbrowser',
865
+ displayName: 'Speak from JavaScript',
866
+ description: 'Extract text from the page via JavaScript and speak it aloud',
867
+ parameters: [
868
+ {
869
+ key: 'commandid',
870
+ type: 'string',
871
+ required: true,
872
+ description: 'JavaScript command ID for text extraction (e.g. Facebook/General/Read)',
873
+ },
874
+ ],
875
+ platforms: ['desktop', 'ios'],
876
+ },
877
+ 'WebBrowser.InsertFavourite': {
878
+ id: 'WebBrowser.InsertFavourite',
879
+ category: Grid3CommandCategory.WEB_BROWSER,
880
+ pluginId: 'webbrowser',
881
+ displayName: 'Insert Favourite',
882
+ description: 'Insert a favourite/bookmark into an auto-content cell',
883
+ parameters: [
884
+ {
885
+ key: 'location',
886
+ type: 'string',
887
+ required: false,
888
+ description: 'Location: ChooseCell',
889
+ },
890
+ {
891
+ key: 'itemindex',
892
+ type: 'number',
893
+ required: false,
894
+ description: 'Index of the favourite item',
895
+ },
896
+ ],
897
+ platforms: ['desktop', 'ios'],
898
+ },
899
+ 'WebBrowser.DeleteFavourite': {
900
+ id: 'WebBrowser.DeleteFavourite',
901
+ category: Grid3CommandCategory.WEB_BROWSER,
902
+ pluginId: 'webbrowser',
903
+ displayName: 'Delete Favourite',
904
+ description: 'Delete a favourite/bookmark',
905
+ parameters: [
906
+ {
907
+ key: 'action',
908
+ type: 'string',
909
+ required: false,
910
+ description: 'Action: Toggle',
911
+ },
912
+ ],
913
+ platforms: ['desktop', 'ios'],
914
+ },
915
+ 'WebBrowser.MoreLinks': {
916
+ id: 'WebBrowser.MoreLinks',
917
+ category: Grid3CommandCategory.WEB_BROWSER,
918
+ pluginId: 'webbrowser',
919
+ displayName: 'More Links',
920
+ description: 'Load more links from the current web page',
921
+ platforms: ['desktop', 'ios'],
922
+ },
923
+ 'WebAddress.Go': {
924
+ id: 'WebAddress.Go',
925
+ category: Grid3CommandCategory.WEB_BROWSER,
926
+ pluginId: 'webbrowser',
927
+ displayName: 'Go to Address',
928
+ description: 'Navigate to the URL in the address bar',
929
+ platforms: ['desktop', 'ios'],
930
+ },
423
931
  // ========================================
424
932
  // EMAIL COMMANDS
425
933
  // ========================================
@@ -637,6 +1145,30 @@ export const GRID3_COMMANDS = {
637
1145
  ],
638
1146
  platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
639
1147
  },
1148
+ 'Settings.GridExplorer': {
1149
+ id: 'Settings.GridExplorer',
1150
+ category: Grid3CommandCategory.SETTINGS,
1151
+ pluginId: 'settings',
1152
+ displayName: 'Grid Explorer',
1153
+ description: 'Open the grid explorer for browsing grids',
1154
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1155
+ },
1156
+ 'Settings.RequiredFeature': {
1157
+ id: 'Settings.RequiredFeature',
1158
+ category: Grid3CommandCategory.SETTINGS,
1159
+ pluginId: 'settings',
1160
+ displayName: 'Required Feature',
1161
+ description: 'Enable or require a specific feature (e.g. Dwell)',
1162
+ parameters: [
1163
+ {
1164
+ key: 'feature',
1165
+ type: 'string',
1166
+ required: true,
1167
+ description: 'Feature name (e.g. Dwell)',
1168
+ },
1169
+ ],
1170
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1171
+ },
640
1172
  'Settings.Open': {
641
1173
  id: 'Settings.Open',
642
1174
  category: Grid3CommandCategory.SETTINGS,
@@ -719,6 +1251,66 @@ export const GRID3_COMMANDS = {
719
1251
  ],
720
1252
  platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
721
1253
  },
1254
+ 'Prediction.AddToWordList': {
1255
+ id: 'Prediction.AddToWordList',
1256
+ category: Grid3CommandCategory.AUTO_CONTENT,
1257
+ pluginId: 'prediction',
1258
+ displayName: 'Add to Word List',
1259
+ description: 'Add a word or clipboard content to the word list',
1260
+ parameters: [
1261
+ {
1262
+ key: 'location',
1263
+ type: 'string',
1264
+ required: false,
1265
+ description: 'Where to add: EndOfList, etc.',
1266
+ },
1267
+ {
1268
+ key: 'unit',
1269
+ type: 'string',
1270
+ required: false,
1271
+ description: 'Source: Clipboard, CurrentWord',
1272
+ },
1273
+ ],
1274
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1275
+ },
1276
+ 'Prediction.DeleteWord': {
1277
+ id: 'Prediction.DeleteWord',
1278
+ category: Grid3CommandCategory.AUTO_CONTENT,
1279
+ pluginId: 'prediction',
1280
+ displayName: 'Delete Word',
1281
+ description: 'Delete a word from the prediction list',
1282
+ parameters: [
1283
+ {
1284
+ key: 'action',
1285
+ type: 'string',
1286
+ required: false,
1287
+ description: 'Action: Off',
1288
+ },
1289
+ {
1290
+ key: 'itemindex',
1291
+ type: 'number',
1292
+ required: false,
1293
+ description: 'Index of the word to delete',
1294
+ },
1295
+ ],
1296
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1297
+ },
1298
+ 'Prediction.MoreWords': {
1299
+ id: 'Prediction.MoreWords',
1300
+ category: Grid3CommandCategory.AUTO_CONTENT,
1301
+ pluginId: 'prediction',
1302
+ displayName: 'More Words',
1303
+ description: 'Load more prediction words',
1304
+ parameters: [
1305
+ {
1306
+ key: 'pagedirection',
1307
+ type: 'string',
1308
+ required: false,
1309
+ description: 'Direction: Next, Previous',
1310
+ },
1311
+ ],
1312
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1313
+ },
722
1314
  // ========================================
723
1315
  // ENVIRONMENT CONTROL COMMANDS
724
1316
  // ========================================
@@ -871,6 +1463,185 @@ export const GRID3_COMMANDS = {
871
1463
  description: 'Decrease volume',
872
1464
  platforms: ['desktop', 'ios'],
873
1465
  },
1466
+ // ========================================
1467
+ // MUSIC VIDEO COMMANDS
1468
+ // ========================================
1469
+ 'MusicVideo.ListVideos': {
1470
+ id: 'MusicVideo.ListVideos',
1471
+ category: Grid3CommandCategory.MEDIA,
1472
+ pluginId: 'musicvideo',
1473
+ displayName: 'List Videos',
1474
+ description: 'List available videos in a folder',
1475
+ parameters: [
1476
+ {
1477
+ key: 'playwait',
1478
+ type: 'number',
1479
+ required: false,
1480
+ description: 'Wait time before playing (0 or 1)',
1481
+ },
1482
+ ],
1483
+ platforms: ['desktop', 'ios'],
1484
+ },
1485
+ 'MusicVideo.MoreMusicVideos': {
1486
+ id: 'MusicVideo.MoreMusicVideos',
1487
+ category: Grid3CommandCategory.MEDIA,
1488
+ pluginId: 'musicvideo',
1489
+ displayName: 'More Music Videos',
1490
+ description: 'Browse more music/videos by page',
1491
+ parameters: [
1492
+ {
1493
+ key: 'pagedirection',
1494
+ type: 'string',
1495
+ required: false,
1496
+ description: 'Direction: Next, Previous',
1497
+ },
1498
+ ],
1499
+ platforms: ['desktop', 'ios'],
1500
+ },
1501
+ 'MusicVideo.SetVideoFolder': {
1502
+ id: 'MusicVideo.SetVideoFolder',
1503
+ category: Grid3CommandCategory.MEDIA,
1504
+ pluginId: 'musicvideo',
1505
+ displayName: 'Set Video Folder',
1506
+ description: 'Set the video folder path',
1507
+ parameters: [
1508
+ {
1509
+ key: 'foldername',
1510
+ type: 'string',
1511
+ required: true,
1512
+ description: 'Folder path (e.g. %PROFILE%\\Videos)',
1513
+ },
1514
+ ],
1515
+ platforms: ['desktop'],
1516
+ },
1517
+ 'MusicVideo.Stop': {
1518
+ id: 'MusicVideo.Stop',
1519
+ category: Grid3CommandCategory.MEDIA,
1520
+ pluginId: 'musicvideo',
1521
+ displayName: 'Stop Video',
1522
+ description: 'Stop video playback',
1523
+ platforms: ['desktop', 'ios'],
1524
+ },
1525
+ 'MusicVideo.StoreAsAttachmentCommandId': {
1526
+ id: 'MusicVideo.StoreAsAttachmentCommandId',
1527
+ category: Grid3CommandCategory.MEDIA,
1528
+ pluginId: 'musicvideo',
1529
+ displayName: 'Attach Video',
1530
+ description: 'Store the current video as an attachment',
1531
+ platforms: ['desktop', 'ios'],
1532
+ },
1533
+ // ========================================
1534
+ // PHOTOS COMMANDS
1535
+ // ========================================
1536
+ 'Photos.Snapshot': {
1537
+ id: 'Photos.Snapshot',
1538
+ category: Grid3CommandCategory.PHOTOS,
1539
+ pluginId: 'photos',
1540
+ displayName: 'Take Photo',
1541
+ description: 'Take a photo with the camera',
1542
+ platforms: ['desktop', 'ios'],
1543
+ },
1544
+ 'Photos.ChangeCamera': {
1545
+ id: 'Photos.ChangeCamera',
1546
+ category: Grid3CommandCategory.PHOTOS,
1547
+ pluginId: 'photos',
1548
+ displayName: 'Change Camera',
1549
+ description: 'Switch between front and back camera',
1550
+ parameters: [
1551
+ {
1552
+ key: 'indicatorenabled',
1553
+ type: 'boolean',
1554
+ required: false,
1555
+ description: 'Show indicator for active camera',
1556
+ },
1557
+ ],
1558
+ platforms: ['desktop', 'ios'],
1559
+ },
1560
+ 'Photos.MorePhotos': {
1561
+ id: 'Photos.MorePhotos',
1562
+ category: Grid3CommandCategory.PHOTOS,
1563
+ pluginId: 'photos',
1564
+ displayName: 'More Photos',
1565
+ description: 'Load more photos from the gallery',
1566
+ platforms: ['desktop', 'ios'],
1567
+ },
1568
+ 'Photos.MyPictures': {
1569
+ id: 'Photos.MyPictures',
1570
+ category: Grid3CommandCategory.PHOTOS,
1571
+ pluginId: 'photos',
1572
+ displayName: 'My Pictures',
1573
+ description: 'Open the My Pictures folder',
1574
+ platforms: ['desktop'],
1575
+ },
1576
+ 'Photos.SnapshotsFolder': {
1577
+ id: 'Photos.SnapshotsFolder',
1578
+ category: Grid3CommandCategory.PHOTOS,
1579
+ pluginId: 'photos',
1580
+ displayName: 'Snapshots Folder',
1581
+ description: 'Open the snapshots folder',
1582
+ platforms: ['desktop'],
1583
+ },
1584
+ 'Photos.StoreAsAttachment': {
1585
+ id: 'Photos.StoreAsAttachment',
1586
+ category: Grid3CommandCategory.PHOTOS,
1587
+ pluginId: 'photos',
1588
+ displayName: 'Attach Photo',
1589
+ description: 'Store the current photo as an attachment',
1590
+ platforms: ['desktop', 'ios'],
1591
+ },
1592
+ // ========================================
1593
+ // COMMAND EXECUTION COMMANDS
1594
+ // ========================================
1595
+ 'CommandExecution.Wait': {
1596
+ id: 'CommandExecution.Wait',
1597
+ category: Grid3CommandCategory.COMMAND_EXECUTION,
1598
+ pluginId: 'commandexecution',
1599
+ displayName: 'Wait',
1600
+ description: 'Pause command execution for a specified duration',
1601
+ parameters: [
1602
+ {
1603
+ key: 'waittime',
1604
+ type: 'string',
1605
+ required: true,
1606
+ description: 'Duration (e.g. 00:00:01.5000000)',
1607
+ },
1608
+ {
1609
+ key: 'cancellable',
1610
+ type: 'boolean',
1611
+ required: false,
1612
+ description: 'Whether the wait can be cancelled',
1613
+ },
1614
+ ],
1615
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1616
+ },
1617
+ 'CommandExecution.AutoRepeat': {
1618
+ id: 'CommandExecution.AutoRepeat',
1619
+ category: Grid3CommandCategory.COMMAND_EXECUTION,
1620
+ pluginId: 'commandexecution',
1621
+ displayName: 'Auto Repeat',
1622
+ description: 'Repeat a set of commands multiple times with a gap',
1623
+ parameters: [
1624
+ {
1625
+ key: 'repeatcount',
1626
+ type: 'number',
1627
+ required: true,
1628
+ description: 'Number of times to repeat',
1629
+ },
1630
+ {
1631
+ key: 'repeatgap',
1632
+ type: 'string',
1633
+ required: true,
1634
+ description: 'Time gap between repeats (e.g. 00:00:00.0100000)',
1635
+ },
1636
+ {
1637
+ key: 'commands',
1638
+ type: 'string',
1639
+ required: true,
1640
+ description: 'Nested command collection to repeat',
1641
+ },
1642
+ ],
1643
+ platforms: ['desktop', 'ios', 'medicare', 'medicareBionics'],
1644
+ },
874
1645
  };
875
1646
  /**
876
1647
  * Get command definition by ID