elsabro 2.2.0 → 3.7.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 (88) hide show
  1. package/README.md +668 -20
  2. package/agents/elsabro-orchestrator.md +113 -0
  3. package/bin/install.js +0 -0
  4. package/commands/elsabro/execute.md +223 -46
  5. package/commands/elsabro/start.md +34 -0
  6. package/commands/elsabro/verify-work.md +29 -0
  7. package/flows/development-flow.json +452 -0
  8. package/flows/quick-flow.json +118 -0
  9. package/hooks/confirm-destructive.sh +145 -0
  10. package/hooks/hooks-config.json +81 -0
  11. package/hooks/lint-check.sh +238 -0
  12. package/hooks/post-edit-test.sh +189 -0
  13. package/package.json +5 -3
  14. package/references/SYSTEM_INDEX.md +379 -5
  15. package/references/agent-marketplace.md +2274 -0
  16. package/references/agent-protocol.md +1126 -0
  17. package/references/ai-code-suggestions.md +2413 -0
  18. package/references/checkpointing.md +595 -0
  19. package/references/collaboration-patterns.md +851 -0
  20. package/references/collaborative-sessions.md +1081 -0
  21. package/references/configuration-management.md +1810 -0
  22. package/references/cost-tracking.md +1095 -0
  23. package/references/enterprise-sso.md +2001 -0
  24. package/references/error-contracts-tests.md +1171 -0
  25. package/references/error-contracts-v2.md +968 -0
  26. package/references/error-contracts.md +3102 -0
  27. package/references/event-driven.md +1031 -0
  28. package/references/flow-orchestration.md +940 -0
  29. package/references/flow-visualization.md +1557 -0
  30. package/references/ide-integrations.md +3513 -0
  31. package/references/interrupt-system.md +681 -0
  32. package/references/kubernetes-deployment.md +3099 -0
  33. package/references/memory-system.md +683 -0
  34. package/references/mobile-companion.md +3236 -0
  35. package/references/multi-llm-providers.md +2494 -0
  36. package/references/multi-project-memory.md +1182 -0
  37. package/references/observability.md +793 -0
  38. package/references/output-schemas.md +858 -0
  39. package/references/parallel-worktrees.md +293 -0
  40. package/references/performance-profiler.md +955 -0
  41. package/references/plugin-system.md +1526 -0
  42. package/references/prompt-management.md +292 -0
  43. package/references/sandbox-execution.md +303 -0
  44. package/references/security-system.md +1253 -0
  45. package/references/streaming.md +696 -0
  46. package/references/testing-framework.md +1151 -0
  47. package/references/time-travel.md +802 -0
  48. package/references/tool-registry.md +886 -0
  49. package/references/voice-commands.md +3296 -0
  50. package/scripts/setup-parallel-worktrees.sh +319 -0
  51. package/skills/memory-update.md +207 -0
  52. package/skills/review.md +331 -0
  53. package/skills/techdebt.md +289 -0
  54. package/skills/tutor.md +219 -0
  55. package/templates/.planning/notes/.gitkeep +0 -0
  56. package/templates/CLAUDE.md.template +48 -0
  57. package/templates/agent-marketplace-config.json +220 -0
  58. package/templates/agent-protocol-config.json +136 -0
  59. package/templates/ai-suggestions-config.json +100 -0
  60. package/templates/checkpoint-state.json +61 -0
  61. package/templates/collaboration-config.json +157 -0
  62. package/templates/collaborative-sessions-config.json +153 -0
  63. package/templates/configuration-config.json +245 -0
  64. package/templates/cost-tracking-config.json +148 -0
  65. package/templates/enterprise-sso-config.json +438 -0
  66. package/templates/error-handling-config.json +79 -2
  67. package/templates/events-config.json +148 -0
  68. package/templates/flow-visualization-config.json +196 -0
  69. package/templates/ide-integrations-config.json +442 -0
  70. package/templates/kubernetes-config.json +764 -0
  71. package/templates/memory-state.json +84 -0
  72. package/templates/mistakes.md.template +52 -0
  73. package/templates/mobile-companion-config.json +600 -0
  74. package/templates/multi-llm-config.json +544 -0
  75. package/templates/multi-project-memory-config.json +145 -0
  76. package/templates/observability-config.json +109 -0
  77. package/templates/patterns.md.template +114 -0
  78. package/templates/performance-profiler-config.json +125 -0
  79. package/templates/plugin-config.json +170 -0
  80. package/templates/prompt-management-config.json +86 -0
  81. package/templates/sandbox-config.json +185 -0
  82. package/templates/schemas-config.json +65 -0
  83. package/templates/security-config.json +120 -0
  84. package/templates/streaming-config.json +72 -0
  85. package/templates/testing-config.json +81 -0
  86. package/templates/timetravel-config.json +62 -0
  87. package/templates/tool-registry-config.json +109 -0
  88. package/templates/voice-commands-config.json +658 -0
@@ -0,0 +1,196 @@
1
+ {
2
+ "flowVisualization": {
3
+ "enabled": true,
4
+ "version": "1.0.0",
5
+
6
+ "renderer": {
7
+ "default": "ascii",
8
+ "available": ["ascii", "svg", "html"],
9
+ "ascii": {
10
+ "width": 120,
11
+ "height": 50,
12
+ "nodeWidth": 20,
13
+ "nodeHeight": 5,
14
+ "spacing": 4,
15
+ "charset": "unicode",
16
+ "showLegend": true,
17
+ "showStatus": true
18
+ },
19
+ "svg": {
20
+ "width": 1200,
21
+ "height": 800,
22
+ "nodeWidth": 180,
23
+ "nodeHeight": 80,
24
+ "padding": 20,
25
+ "fontFamily": "system-ui, sans-serif",
26
+ "fontSize": 12
27
+ },
28
+ "html": {
29
+ "interactive": true,
30
+ "draggable": true,
31
+ "zoomable": true,
32
+ "pannable": true
33
+ }
34
+ },
35
+
36
+ "layout": {
37
+ "default": "dagre",
38
+ "available": ["dagre", "elk", "force", "tree", "radial", "manual"],
39
+ "dagre": {
40
+ "rankdir": "LR",
41
+ "ranksep": 80,
42
+ "nodesep": 50,
43
+ "edgesep": 20,
44
+ "align": "UL"
45
+ },
46
+ "elk": {
47
+ "algorithm": "layered",
48
+ "direction": "RIGHT",
49
+ "spacing": 50
50
+ },
51
+ "force": {
52
+ "iterations": 300,
53
+ "strength": -100,
54
+ "distance": 150
55
+ },
56
+ "tree": {
57
+ "orientation": "horizontal",
58
+ "siblingSpacing": 30,
59
+ "levelSpacing": 100
60
+ }
61
+ },
62
+
63
+ "theme": {
64
+ "default": "dark",
65
+ "themes": {
66
+ "dark": {
67
+ "background": "#1a1a2e",
68
+ "nodeColors": {
69
+ "entry": "#4ade80",
70
+ "exit": "#f87171",
71
+ "agent": "#60a5fa",
72
+ "parallel": "#a78bfa",
73
+ "sequence": "#fbbf24",
74
+ "condition": "#f472b6",
75
+ "router": "#2dd4bf",
76
+ "loop": "#fb923c",
77
+ "interrupt": "#e879f9",
78
+ "subflow": "#38bdf8"
79
+ },
80
+ "edgeColor": "#6b7280",
81
+ "selectedColor": "#fbbf24",
82
+ "errorColor": "#ef4444",
83
+ "textColor": "#f3f4f6",
84
+ "font": "monospace"
85
+ },
86
+ "light": {
87
+ "background": "#ffffff",
88
+ "nodeColors": {
89
+ "entry": "#22c55e",
90
+ "exit": "#ef4444",
91
+ "agent": "#3b82f6",
92
+ "parallel": "#8b5cf6",
93
+ "sequence": "#f59e0b",
94
+ "condition": "#ec4899",
95
+ "router": "#14b8a6",
96
+ "loop": "#f97316",
97
+ "interrupt": "#d946ef",
98
+ "subflow": "#0ea5e9"
99
+ },
100
+ "edgeColor": "#9ca3af",
101
+ "selectedColor": "#f59e0b",
102
+ "errorColor": "#dc2626",
103
+ "textColor": "#1f2937",
104
+ "font": "monospace"
105
+ }
106
+ }
107
+ },
108
+
109
+ "nodeIcons": {
110
+ "entry": "▶",
111
+ "exit": "■",
112
+ "agent": "◉",
113
+ "parallel": "⫴",
114
+ "sequence": "→",
115
+ "condition": "◇",
116
+ "router": "⋔",
117
+ "loop": "↻",
118
+ "interrupt": "⏸",
119
+ "subflow": "⊞"
120
+ },
121
+
122
+ "editor": {
123
+ "enabled": true,
124
+ "showToolbar": true,
125
+ "showMinimap": true,
126
+ "showPropertyPanel": true,
127
+ "snapToGrid": true,
128
+ "gridSize": 20,
129
+ "undoStackSize": 50,
130
+ "autoSave": true,
131
+ "autoSaveInterval": 30000,
132
+ "keyboard": {
133
+ "delete": "Delete",
134
+ "copy": "Ctrl+C",
135
+ "paste": "Ctrl+V",
136
+ "undo": "Ctrl+Z",
137
+ "redo": "Ctrl+Shift+Z",
138
+ "selectAll": "Ctrl+A",
139
+ "zoomIn": "Ctrl+=",
140
+ "zoomOut": "Ctrl+-",
141
+ "fitView": "Ctrl+0"
142
+ }
143
+ },
144
+
145
+ "validation": {
146
+ "checkCycles": true,
147
+ "checkDeadEnds": true,
148
+ "checkOrphans": true,
149
+ "checkUnconnected": true,
150
+ "requireEntry": true,
151
+ "requireExit": true,
152
+ "maxNodes": 100,
153
+ "maxEdges": 200
154
+ },
155
+
156
+ "export": {
157
+ "formats": ["json", "svg", "png", "ascii"],
158
+ "includePositions": true,
159
+ "includeMetadata": true,
160
+ "prettyPrint": true
161
+ },
162
+
163
+ "import": {
164
+ "validateOnImport": true,
165
+ "autoLayout": true,
166
+ "preservePositions": true
167
+ },
168
+
169
+ "minimap": {
170
+ "enabled": true,
171
+ "position": "bottom-right",
172
+ "width": 150,
173
+ "height": 100,
174
+ "opacity": 0.8
175
+ },
176
+
177
+ "toolbar": {
178
+ "enabled": true,
179
+ "position": "top",
180
+ "items": [
181
+ "undo",
182
+ "redo",
183
+ "separator",
184
+ "zoomIn",
185
+ "zoomOut",
186
+ "fitView",
187
+ "separator",
188
+ "addNode",
189
+ "delete",
190
+ "separator",
191
+ "save",
192
+ "export"
193
+ ]
194
+ }
195
+ }
196
+ }
@@ -0,0 +1,442 @@
1
+ {
2
+ "$schema": "https://elsabro.dev/schemas/ide-integrations-config.json",
3
+ "version": "3.7.0",
4
+ "description": "ELSABRO IDE Integrations Configuration Template",
5
+
6
+ "server": {
7
+ "url": "ws://localhost:3847",
8
+ "httpUrl": "http://localhost:3848",
9
+ "reconnect": {
10
+ "enabled": true,
11
+ "maxAttempts": 5,
12
+ "initialDelay": 1000,
13
+ "maxDelay": 30000,
14
+ "backoffMultiplier": 2
15
+ },
16
+ "timeout": {
17
+ "connection": 10000,
18
+ "request": 30000,
19
+ "keepAlive": 30000
20
+ },
21
+ "ssl": {
22
+ "enabled": false,
23
+ "rejectUnauthorized": true,
24
+ "ca": null,
25
+ "cert": null,
26
+ "key": null
27
+ }
28
+ },
29
+
30
+ "vscode": {
31
+ "enabled": true,
32
+ "extensionId": "elsabro.elsabro-vscode",
33
+ "settings": {
34
+ "elsabro.serverUrl": "ws://localhost:3847",
35
+ "elsabro.autoConnect": true,
36
+ "elsabro.showInlineAnnotations": true,
37
+ "elsabro.enableCodeLens": true,
38
+ "elsabro.enableHover": true,
39
+ "elsabro.enableQuickActions": true,
40
+ "elsabro.logLevel": "info",
41
+ "elsabro.theme": "auto"
42
+ },
43
+ "keybindings": [
44
+ {
45
+ "command": "elsabro.runAgent",
46
+ "key": "ctrl+shift+e r",
47
+ "mac": "cmd+shift+e r",
48
+ "when": "editorTextFocus"
49
+ },
50
+ {
51
+ "command": "elsabro.pauseAgent",
52
+ "key": "ctrl+shift+e p",
53
+ "mac": "cmd+shift+e p"
54
+ },
55
+ {
56
+ "command": "elsabro.cancelTask",
57
+ "key": "ctrl+shift+e c",
58
+ "mac": "cmd+shift+e c"
59
+ },
60
+ {
61
+ "command": "elsabro.showPanel",
62
+ "key": "ctrl+shift+e e",
63
+ "mac": "cmd+shift+e e"
64
+ },
65
+ {
66
+ "command": "elsabro.generateTests",
67
+ "key": "ctrl+shift+e t",
68
+ "mac": "cmd+shift+e t",
69
+ "when": "editorTextFocus"
70
+ },
71
+ {
72
+ "command": "elsabro.generateDocs",
73
+ "key": "ctrl+shift+e d",
74
+ "mac": "cmd+shift+e d",
75
+ "when": "editorTextFocus"
76
+ },
77
+ {
78
+ "command": "elsabro.refactor",
79
+ "key": "ctrl+shift+e f",
80
+ "mac": "cmd+shift+e f",
81
+ "when": "editorTextFocus && editorHasSelection"
82
+ },
83
+ {
84
+ "command": "elsabro.quickActions",
85
+ "key": "ctrl+shift+e a",
86
+ "mac": "cmd+shift+e a",
87
+ "when": "editorTextFocus"
88
+ },
89
+ {
90
+ "command": "elsabro.toggleAnnotations",
91
+ "key": "ctrl+shift+e n",
92
+ "mac": "cmd+shift+e n"
93
+ },
94
+ {
95
+ "command": "elsabro.focusAgentsView",
96
+ "key": "ctrl+shift+e 1",
97
+ "mac": "cmd+shift+e 1"
98
+ },
99
+ {
100
+ "command": "elsabro.focusTasksView",
101
+ "key": "ctrl+shift+e 2",
102
+ "mac": "cmd+shift+e 2"
103
+ },
104
+ {
105
+ "command": "elsabro.focusLogsView",
106
+ "key": "ctrl+shift+e 3",
107
+ "mac": "cmd+shift+e 3"
108
+ }
109
+ ],
110
+ "views": {
111
+ "sidebar": {
112
+ "enabled": true,
113
+ "position": "left",
114
+ "defaultView": "agents"
115
+ },
116
+ "statusBar": {
117
+ "enabled": true,
118
+ "position": "left",
119
+ "priority": 100
120
+ }
121
+ },
122
+ "codeLens": {
123
+ "enabled": true,
124
+ "patterns": {
125
+ "function": true,
126
+ "class": true,
127
+ "method": true,
128
+ "interface": false
129
+ },
130
+ "actions": ["run", "test", "docs"]
131
+ },
132
+ "decorations": {
133
+ "enabled": true,
134
+ "types": {
135
+ "warning": {
136
+ "backgroundColor": "rgba(255, 193, 7, 0.1)",
137
+ "borderColor": "rgba(255, 193, 7, 0.5)",
138
+ "gutterIcon": true
139
+ },
140
+ "error": {
141
+ "backgroundColor": "rgba(244, 67, 54, 0.1)",
142
+ "borderColor": "rgba(244, 67, 54, 0.5)",
143
+ "gutterIcon": true
144
+ },
145
+ "info": {
146
+ "backgroundColor": "rgba(33, 150, 243, 0.1)",
147
+ "borderColor": "rgba(33, 150, 243, 0.5)",
148
+ "gutterIcon": true
149
+ },
150
+ "success": {
151
+ "backgroundColor": "rgba(76, 175, 80, 0.1)",
152
+ "borderColor": "rgba(76, 175, 80, 0.5)",
153
+ "gutterIcon": true
154
+ }
155
+ }
156
+ }
157
+ },
158
+
159
+ "jetbrains": {
160
+ "enabled": true,
161
+ "pluginId": "com.elsabro.plugin",
162
+ "settings": {
163
+ "serverUrl": "ws://localhost:3847",
164
+ "autoConnect": true,
165
+ "showInlineAnnotations": true,
166
+ "enableIntentions": true,
167
+ "enableLineMarkers": true,
168
+ "enableInlayHints": true,
169
+ "logLevel": "INFO"
170
+ },
171
+ "keymaps": [
172
+ {
173
+ "actionId": "Elsabro.RunAgent",
174
+ "firstKeyStroke": "ctrl shift E",
175
+ "secondKeyStroke": "R"
176
+ },
177
+ {
178
+ "actionId": "Elsabro.PauseAgent",
179
+ "firstKeyStroke": "ctrl shift E",
180
+ "secondKeyStroke": "P"
181
+ },
182
+ {
183
+ "actionId": "Elsabro.CancelTask",
184
+ "firstKeyStroke": "ctrl shift E",
185
+ "secondKeyStroke": "C"
186
+ },
187
+ {
188
+ "actionId": "Elsabro.ShowPanel",
189
+ "firstKeyStroke": "ctrl shift E",
190
+ "secondKeyStroke": "E"
191
+ },
192
+ {
193
+ "actionId": "Elsabro.GenerateTests",
194
+ "firstKeyStroke": "ctrl shift E",
195
+ "secondKeyStroke": "T"
196
+ },
197
+ {
198
+ "actionId": "Elsabro.GenerateDocs",
199
+ "firstKeyStroke": "ctrl shift E",
200
+ "secondKeyStroke": "D"
201
+ },
202
+ {
203
+ "actionId": "Elsabro.Refactor",
204
+ "firstKeyStroke": "ctrl shift E",
205
+ "secondKeyStroke": "F"
206
+ }
207
+ ],
208
+ "toolWindow": {
209
+ "anchor": "right",
210
+ "autoShow": false,
211
+ "tabs": ["agents", "tasks", "logs"]
212
+ },
213
+ "lineMarkers": {
214
+ "enabled": true,
215
+ "targets": ["function", "class", "method"]
216
+ },
217
+ "intentions": {
218
+ "enabled": true,
219
+ "actions": [
220
+ "generateTests",
221
+ "generateDocs",
222
+ "refactor",
223
+ "addErrorHandling",
224
+ "addLogging"
225
+ ]
226
+ }
227
+ },
228
+
229
+ "lsp": {
230
+ "enabled": true,
231
+ "transport": "stdio",
232
+ "socket": {
233
+ "host": "127.0.0.1",
234
+ "port": 3849
235
+ },
236
+ "capabilities": {
237
+ "completion": {
238
+ "enabled": true,
239
+ "triggerCharacters": ["@", "/"],
240
+ "resolveProvider": true
241
+ },
242
+ "hover": {
243
+ "enabled": true
244
+ },
245
+ "codeAction": {
246
+ "enabled": true,
247
+ "kinds": [
248
+ "quickfix",
249
+ "refactor",
250
+ "refactor.extract",
251
+ "refactor.inline",
252
+ "source",
253
+ "source.organizeImports"
254
+ ]
255
+ },
256
+ "codeLens": {
257
+ "enabled": true,
258
+ "resolveProvider": true
259
+ },
260
+ "diagnostic": {
261
+ "enabled": true,
262
+ "interFileDependencies": true,
263
+ "workspaceDiagnostics": false
264
+ },
265
+ "executeCommand": {
266
+ "enabled": true,
267
+ "commands": [
268
+ "elsabro.runAgent",
269
+ "elsabro.generateTests",
270
+ "elsabro.generateDocs",
271
+ "elsabro.refactor",
272
+ "elsabro.optimizeImports"
273
+ ]
274
+ }
275
+ },
276
+ "customRequests": [
277
+ {
278
+ "method": "elsabro/runAgent",
279
+ "params": {
280
+ "agentId": "string",
281
+ "params": "object"
282
+ }
283
+ },
284
+ {
285
+ "method": "elsabro/getAgents",
286
+ "params": {}
287
+ },
288
+ {
289
+ "method": "elsabro/getTasks",
290
+ "params": {}
291
+ },
292
+ {
293
+ "method": "elsabro/cancelTask",
294
+ "params": {
295
+ "taskId": "string"
296
+ }
297
+ },
298
+ {
299
+ "method": "elsabro/getAnnotations",
300
+ "params": {
301
+ "uri": "string"
302
+ }
303
+ }
304
+ ]
305
+ },
306
+
307
+ "agents": {
308
+ "defaults": {
309
+ "test-generator": {
310
+ "name": "Test Generator",
311
+ "description": "Generates unit tests for selected code",
312
+ "icon": "beaker",
313
+ "shortcuts": {
314
+ "vscode": "ctrl+shift+e t",
315
+ "jetbrains": "ctrl+shift+e t"
316
+ }
317
+ },
318
+ "doc-generator": {
319
+ "name": "Documentation Generator",
320
+ "description": "Generates documentation for selected code",
321
+ "icon": "book",
322
+ "shortcuts": {
323
+ "vscode": "ctrl+shift+e d",
324
+ "jetbrains": "ctrl+shift+e d"
325
+ }
326
+ },
327
+ "refactoring-specialist": {
328
+ "name": "Refactoring Specialist",
329
+ "description": "AI-powered code refactoring",
330
+ "icon": "wand",
331
+ "shortcuts": {
332
+ "vscode": "ctrl+shift+e f",
333
+ "jetbrains": "ctrl+shift+e f"
334
+ }
335
+ },
336
+ "code-reviewer": {
337
+ "name": "Code Reviewer",
338
+ "description": "Reviews code for issues and improvements",
339
+ "icon": "eye",
340
+ "shortcuts": {
341
+ "vscode": "ctrl+shift+e v",
342
+ "jetbrains": "ctrl+shift+e v"
343
+ }
344
+ },
345
+ "bug-hunter": {
346
+ "name": "Bug Hunter",
347
+ "description": "Identifies potential bugs and issues",
348
+ "icon": "bug",
349
+ "shortcuts": {
350
+ "vscode": "ctrl+shift+e b",
351
+ "jetbrains": "ctrl+shift+e b"
352
+ }
353
+ }
354
+ }
355
+ },
356
+
357
+ "annotations": {
358
+ "enabled": true,
359
+ "autoRefresh": true,
360
+ "refreshInterval": 5000,
361
+ "types": {
362
+ "warning": {
363
+ "severity": "warning",
364
+ "icon": "warning",
365
+ "color": "#FFC107"
366
+ },
367
+ "error": {
368
+ "severity": "error",
369
+ "icon": "error",
370
+ "color": "#F44336"
371
+ },
372
+ "info": {
373
+ "severity": "information",
374
+ "icon": "info",
375
+ "color": "#2196F3"
376
+ },
377
+ "hint": {
378
+ "severity": "hint",
379
+ "icon": "lightbulb",
380
+ "color": "#4CAF50"
381
+ },
382
+ "suggestion": {
383
+ "severity": "information",
384
+ "icon": "sparkle",
385
+ "color": "#9C27B0"
386
+ }
387
+ },
388
+ "display": {
389
+ "inline": true,
390
+ "gutter": true,
391
+ "minimap": true,
392
+ "problems": true
393
+ }
394
+ },
395
+
396
+ "logging": {
397
+ "enabled": true,
398
+ "level": "info",
399
+ "levels": ["debug", "info", "warn", "error"],
400
+ "output": {
401
+ "console": true,
402
+ "file": false,
403
+ "filePath": "~/.elsabro/logs/ide-integration.log"
404
+ },
405
+ "format": "[{timestamp}] [{level}] [{source}] {message}",
406
+ "maxLogSize": 10485760,
407
+ "maxLogFiles": 5
408
+ },
409
+
410
+ "telemetry": {
411
+ "enabled": false,
412
+ "anonymize": true,
413
+ "events": [
414
+ "extension.activated",
415
+ "extension.deactivated",
416
+ "agent.run",
417
+ "agent.complete",
418
+ "agent.error"
419
+ ]
420
+ },
421
+
422
+ "sync": {
423
+ "enabled": false,
424
+ "provider": "elsabro-cloud",
425
+ "endpoint": "https://sync.elsabro.dev/api/v1",
426
+ "autoSync": false,
427
+ "syncInterval": 300000,
428
+ "items": [
429
+ "settings",
430
+ "keybindings",
431
+ "agents",
432
+ "annotations"
433
+ ]
434
+ },
435
+
436
+ "experimental": {
437
+ "aiCompletion": false,
438
+ "voiceCommands": false,
439
+ "multiCursor": true,
440
+ "collaborativeEditing": false
441
+ }
442
+ }