@salesforcedevs/dx-components 1.18.6 → 1.18.8-layoutfix-alpha

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.
@@ -0,0 +1,855 @@
1
+ {
2
+ "name": "afscript",
3
+ "scopeName": "source.afscript",
4
+ "fileTypes": ["afscript"],
5
+ "patterns": [
6
+ {
7
+ "name": "comment.line.afscript",
8
+ "match": "#.*$"
9
+ },
10
+ {
11
+ "name": "meta.config.afscript",
12
+ "begin": "^(config):",
13
+ "beginCaptures": {
14
+ "1": { "name": "keyword.control.block.afscript" }
15
+ },
16
+ "end": "^(?=topic|variables|start_agent|system|$)",
17
+ "patterns": [
18
+ {
19
+ "name": "keyword.config.key.afscript",
20
+ "match": "^\\s+(model_provider|user_locale|locale|agent_id|agent_name|agent_version|agent_type|default_agent_user|language|developer_name|description)(?=:)"
21
+ },
22
+ {
23
+ "name": "entity.name.config.afscript",
24
+ "match": "^\\s+([a-zA-Z_][a-zA-Z0-9_]*)(?=:)"
25
+ },
26
+ { "include": "#values" }
27
+ ]
28
+ },
29
+ {
30
+ "name": "meta.variables.afscript",
31
+ "begin": "^(variables):",
32
+ "beginCaptures": {
33
+ "1": { "name": "keyword.control.block.afscript" }
34
+ },
35
+ "end": "^(?=topic|config|start_agent|system|$)",
36
+ "patterns": [
37
+ {
38
+ "name": "keyword.variable.metadata.afscript",
39
+ "match": "^\\s{8}(description|source)(?=:)"
40
+ },
41
+ {
42
+ "name": "variable.definition.afscript",
43
+ "match": "^\\s+([a-zA-Z_][a-zA-Z0-9_]*)(?=:)"
44
+ },
45
+ {
46
+ "name": "keyword.variable.source.afscript",
47
+ "match": "\\b(custom|context)\\b"
48
+ },
49
+ {
50
+ "name": "storage.type.afscript",
51
+ "match": "\\b(string|number|boolean|object|date|timestamp|currency|id|list)\\b"
52
+ },
53
+ { "include": "#json-structures" },
54
+ { "include": "#values" }
55
+ ]
56
+ },
57
+ {
58
+ "name": "meta.system.afscript",
59
+ "begin": "^(system):",
60
+ "beginCaptures": {
61
+ "1": { "name": "keyword.control.block.afscript" }
62
+ },
63
+ "end": "^(?=topic|config|variables|start_agent|$)",
64
+ "patterns": [
65
+ {
66
+ "name": "keyword.system.afscript",
67
+ "match": "\\b(instructions|messages|prompt)(?=:)"
68
+ },
69
+ {
70
+ "name": "keyword.system.message-type.afscript",
71
+ "match": "\\b(error|welcome)(?=:)"
72
+ },
73
+ { "include": "#multiline-instructions" },
74
+ { "include": "#values" }
75
+ ]
76
+ },
77
+ {
78
+ "name": "meta.topic.afscript",
79
+ "begin": "^(topic)\\s+([a-zA-Z_][a-zA-Z0-9_]*):",
80
+ "beginCaptures": {
81
+ "1": { "name": "keyword.control.block.afscript" },
82
+ "2": { "name": "entity.name.topic.afscript" }
83
+ },
84
+ "end": "^(?=topic|config|variables|start_agent|system|$)",
85
+ "patterns": [
86
+ { "include": "#action-definitions" },
87
+ { "include": "#agent-task" },
88
+ { "include": "#task-content" },
89
+ { "include": "#override-instructions" },
90
+ { "include": "#reasoning-instructions" },
91
+ { "include": "#reasoning-actions" },
92
+ { "include": "#directives" },
93
+ {
94
+ "name": "keyword.topic.section.afscript",
95
+ "match": "\\b(actions|action_definitions|before_reasoning|after_reasoning|reasoning_actions|override|variables|instructions)(?=:)"
96
+ },
97
+ {
98
+ "name": "keyword.topic.section.afscript",
99
+ "match": "^\\s{4}(description)(?=:)"
100
+ },
101
+ {
102
+ "name": "keyword.override.path.afscript",
103
+ "match": "\\b(system\\.instructions)\\b"
104
+ },
105
+ {
106
+ "name": "storage.type.afscript",
107
+ "match": "\\b(string|number|boolean|object|date|timestamp|currency|id|list)\\b"
108
+ },
109
+ { "include": "#operators" },
110
+ { "include": "#punctuation" },
111
+ { "include": "#values" }
112
+ ]
113
+ },
114
+ {
115
+ "name": "meta.start-agent.afscript",
116
+ "begin": "^(start_agent)(?:\\s+([a-zA-Z_][a-zA-Z0-9_]*))?",
117
+ "beginCaptures": {
118
+ "1": { "name": "keyword.control.block.afscript" },
119
+ "2": { "name": "entity.name.agent.afscript" }
120
+ },
121
+ "end": "^(?=topic|config|variables|start_agent|system|$)",
122
+ "patterns": [
123
+ { "include": "#action-definitions" },
124
+ { "include": "#agent-task" },
125
+ { "include": "#task-content" },
126
+ { "include": "#override-instructions" },
127
+ { "include": "#reasoning-instructions" },
128
+ { "include": "#reasoning-actions" },
129
+ { "include": "#directives" },
130
+ {
131
+ "name": "keyword.topic.section.afscript",
132
+ "match": "\\b(actions|action_definitions|before_reasoning|after_reasoning|reasoning_actions|override|variables|instructions)(?=:)"
133
+ },
134
+ {
135
+ "name": "keyword.topic.section.afscript",
136
+ "match": "^\\s{4}(description)(?=:)"
137
+ },
138
+ {
139
+ "name": "storage.type.afscript",
140
+ "match": "\\b(string|number|boolean|object|date|timestamp|currency|id|list)\\b"
141
+ },
142
+ { "include": "#operators" },
143
+ { "include": "#punctuation" },
144
+ { "include": "#values" }
145
+ ]
146
+ },
147
+ {
148
+ "name": "keyword.control.conditional.available.afscript",
149
+ "match": "\\bavailable when\\b"
150
+ },
151
+ {
152
+ "name": "meta.alias.assignment.afscript",
153
+ "match": "\\b(as)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
154
+ "captures": {
155
+ "1": { "name": "keyword.control.afscript" },
156
+ "2": { "name": "entity.name.alias.afscript" }
157
+ }
158
+ },
159
+ {
160
+ "name": "keyword.control.afscript",
161
+ "match": "\\b(if|else|run|set|with|and|or|implementation)\\b|\\btransition to\\b"
162
+ },
163
+ {
164
+ "name": "constant.language.afscript",
165
+ "match": "\\b(True|False)\\b"
166
+ },
167
+ {
168
+ "name": "constant.other.timestamp.afscript",
169
+ "match": "(?<=\\s|=|,|\\[)\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?Z?\\b"
170
+ },
171
+ {
172
+ "name": "constant.other.date.afscript",
173
+ "match": "(?<=\\s|=|,|\\[)\\d{4}-\\d{2}-\\d{2}(?!T)\\b"
174
+ },
175
+ {
176
+ "name": "constant.numeric.afscript",
177
+ "match": "\\b\\d+(\\.\\d+)?\\b"
178
+ },
179
+ {
180
+ "name": "string.quoted.double.afscript",
181
+ "begin": "\"",
182
+ "end": "\"",
183
+ "patterns": [
184
+ { "include": "#template-expression" },
185
+ {
186
+ "name": "constant.character.escape.afscript",
187
+ "match": "\\\\."
188
+ }
189
+ ]
190
+ },
191
+ {
192
+ "name": "meta.utils.call.afscript",
193
+ "match": "(@utils)(\\.)([a-zA-Z_][a-zA-Z0-9_]*)\\b",
194
+ "captures": {
195
+ "1": { "name": "support.class.afscript" },
196
+ "2": { "name": "punctuation.accessor.dot.afscript" },
197
+ "3": { "name": "entity.name.function.afscript" }
198
+ }
199
+ },
200
+ {
201
+ "name": "keyword.control.transition.afscript",
202
+ "match": "\\s+to\\s+"
203
+ },
204
+ {
205
+ "name": "meta.variable.reference.afscript",
206
+ "match": "(@)(variable|result|input|topic|action)(\\.)([a-zA-Z_][a-zA-Z0-9_]*)",
207
+ "captures": {
208
+ "1": { "name": "support.class.afscript" },
209
+ "2": { "name": "support.class.afscript" },
210
+ "3": { "name": "punctuation.accessor.dot.afscript" },
211
+ "4": { "name": "variable.other.member.afscript" }
212
+ }
213
+ },
214
+ {
215
+ "name": "support.class.afscript",
216
+ "match": "@[a-zA-Z_][a-zA-Z0-9_]*"
217
+ },
218
+ {
219
+ "name": "variable.other.member.afscript",
220
+ "match": "(?<=@(?:variable|topic|input|action|result)\\.)\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
221
+ },
222
+ {
223
+ "name": "operator.arithmetic.afscript",
224
+ "match": "[+\\-\\*/%]"
225
+ },
226
+ {
227
+ "name": "operator.comparison.afscript",
228
+ "match": "==|!=|<=|>=|<|>"
229
+ },
230
+ {
231
+ "name": "operator.assignment.afscript",
232
+ "match": "(?<![=!<>])=(?!=)"
233
+ },
234
+ {
235
+ "name": "punctuation.definition.afscript",
236
+ "match": "[{}\\[\\]()]"
237
+ },
238
+ { "include": "#punctuation" },
239
+ { "include": "#template-expression" }
240
+ ],
241
+ "repository": {
242
+ "values": {
243
+ "patterns": [
244
+ { "include": "#operators" },
245
+ { "include": "#template-expression" },
246
+ { "include": "#punctuation" },
247
+ {
248
+ "name": "string.quoted.double.afscript",
249
+ "begin": "\"",
250
+ "end": "\"",
251
+ "patterns": [
252
+ { "include": "#template-expression" },
253
+ {
254
+ "name": "constant.character.escape.afscript",
255
+ "match": "\\\\."
256
+ }
257
+ ]
258
+ },
259
+ {
260
+ "name": "constant.language.afscript",
261
+ "match": "\\b(True|False)\\b"
262
+ },
263
+ {
264
+ "name": "constant.other.timestamp.afscript",
265
+ "match": "(?<=\\s|=|,|\\[)\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?Z?\\b"
266
+ },
267
+ {
268
+ "name": "constant.other.date.afscript",
269
+ "match": "(?<=\\s|=|,|\\[)\\d{4}-\\d{2}-\\d{2}(?!T)\\b"
270
+ },
271
+ {
272
+ "name": "constant.numeric.afscript",
273
+ "match": "\\b\\d+(\\.\\d+)?\\b"
274
+ },
275
+ {
276
+ "name": "variable.other.member.afscript",
277
+ "match": "(?<=@(?:variable|topic|input|action|result)\\.)\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
278
+ }
279
+ ]
280
+ },
281
+ "json-structures": {
282
+ "patterns": [
283
+ {
284
+ "name": "constant.language.json.afscript",
285
+ "match": "=\\s*\\{\\}"
286
+ },
287
+ {
288
+ "name": "meta.structure.dictionary.json.afscript",
289
+ "begin": "=\\s*(\\{)",
290
+ "beginCaptures": {
291
+ "1": {
292
+ "name": "punctuation.definition.dictionary.begin.json.afscript"
293
+ }
294
+ },
295
+ "end": "(\\})",
296
+ "endCaptures": {
297
+ "1": {
298
+ "name": "punctuation.definition.dictionary.end.json.afscript"
299
+ }
300
+ },
301
+ "patterns": [{ "include": "#json-value" }]
302
+ },
303
+ {
304
+ "name": "meta.structure.array.json.afscript",
305
+ "begin": "=\\s*(\\[)",
306
+ "beginCaptures": {
307
+ "1": {
308
+ "name": "punctuation.definition.array.begin.json.afscript"
309
+ }
310
+ },
311
+ "end": "(\\])",
312
+ "endCaptures": {
313
+ "1": {
314
+ "name": "punctuation.definition.array.end.json.afscript"
315
+ }
316
+ },
317
+ "patterns": [{ "include": "#json-value" }]
318
+ }
319
+ ]
320
+ },
321
+ "multiline-instructions": {
322
+ "name": "meta.multiline.instructions.afscript",
323
+ "begin": "^(\\s+)(instructions:)\\s*$",
324
+ "beginCaptures": {
325
+ "2": { "name": "keyword.system.afscript" }
326
+ },
327
+ "end": "^(?=\\s{4}(messages|prompt)\\b)|^(?=\\S)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
328
+ "patterns": [
329
+ {
330
+ "name": "string.heredoc.afscript",
331
+ "begin": "(>>)\\s*$",
332
+ "beginCaptures": {
333
+ "1": { "name": "keyword.operator.heredoc.afscript" }
334
+ },
335
+ "end": "^(?=\\s{4}(messages|prompt)\\b)|^(?=\\S)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
336
+ "patterns": [
337
+ { "include": "#template-expression" },
338
+ {
339
+ "name": "string.unquoted.heredoc.afscript",
340
+ "match": "."
341
+ }
342
+ ]
343
+ },
344
+ {
345
+ "name": "string.unquoted.multiline.afscript",
346
+ "begin": "^\\s+",
347
+ "end": "^(?=\\s{4}(messages|prompt)\\b)|^(?=\\S)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
348
+ "patterns": [
349
+ { "include": "#template-expression" },
350
+ {
351
+ "name": "string.unquoted.instructions.afscript",
352
+ "match": ".*"
353
+ }
354
+ ]
355
+ }
356
+ ]
357
+ },
358
+ "agent-task": {
359
+ "patterns": [
360
+ {
361
+ "name": "string.heredoc.afscript",
362
+ "begin": "(>>)\\s*$",
363
+ "beginCaptures": {
364
+ "1": { "name": "keyword.operator.heredoc.afscript" }
365
+ },
366
+ "end": "^(?=\\S)",
367
+ "patterns": [
368
+ { "include": "#template-expression" },
369
+ {
370
+ "name": "string.unquoted.heredoc.afscript",
371
+ "match": ".*"
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "name": "string.heredoc.quoted.afscript",
377
+ "begin": "(>>)\\s*\"",
378
+ "beginCaptures": {
379
+ "1": { "name": "keyword.operator.heredoc.afscript" }
380
+ },
381
+ "end": "\"",
382
+ "patterns": [
383
+ { "include": "#template-expression" },
384
+ {
385
+ "name": "constant.character.escape.afscript",
386
+ "match": "\\\\."
387
+ }
388
+ ]
389
+ }
390
+ ]
391
+ },
392
+ "task-content": {
393
+ "name": "meta.task.content.afscript",
394
+ "begin": "\\b(task):\\s*$",
395
+ "beginCaptures": {
396
+ "1": { "name": "keyword.topic.section.afscript" }
397
+ },
398
+ "end": "^(?=\\S)",
399
+ "patterns": [
400
+ { "include": "#template-expression" },
401
+ {
402
+ "name": "string.unquoted.task.afscript",
403
+ "match": ".*"
404
+ }
405
+ ]
406
+ },
407
+ "override-instructions": {
408
+ "name": "meta.override.instructions.afscript",
409
+ "begin": "^(\\s+)(override system\\.instructions):\\s*$",
410
+ "beginCaptures": {
411
+ "2": { "name": "keyword.override.path.afscript" }
412
+ },
413
+ "end": "^(?=\\s{4}(reasoning_actions|actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
414
+ "patterns": [
415
+ {
416
+ "name": "string.heredoc.afscript",
417
+ "begin": "(>>)\\s*$",
418
+ "beginCaptures": {
419
+ "1": { "name": "keyword.operator.heredoc.afscript" }
420
+ },
421
+ "end": "^(?=\\s{4}(reasoning_actions|actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
422
+ "patterns": [
423
+ { "include": "#template-expression" },
424
+ {
425
+ "name": "string.unquoted.heredoc.afscript",
426
+ "match": "."
427
+ }
428
+ ]
429
+ },
430
+ {
431
+ "name": "string.heredoc.quoted.afscript",
432
+ "begin": "(>>)\\s*\"",
433
+ "beginCaptures": {
434
+ "1": { "name": "keyword.operator.heredoc.afscript" }
435
+ },
436
+ "end": "\"",
437
+ "patterns": [
438
+ { "include": "#template-expression" },
439
+ {
440
+ "name": "string.unquoted.heredoc.afscript",
441
+ "match": "."
442
+ }
443
+ ]
444
+ },
445
+ {
446
+ "name": "string.unquoted.multiline.afscript",
447
+ "begin": "^\\s+",
448
+ "end": "^(?=\\s{4}(reasoning_actions|actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
449
+ "patterns": [
450
+ { "include": "#template-expression" },
451
+ {
452
+ "name": "string.unquoted.instructions.afscript",
453
+ "match": ".*"
454
+ }
455
+ ]
456
+ }
457
+ ]
458
+ },
459
+ "reasoning-instructions": {
460
+ "name": "meta.reasoning.instructions.afscript",
461
+ "begin": "^(\\s+)(reasoning_instructions):\\s*$",
462
+ "beginCaptures": {
463
+ "2": { "name": "keyword.topic.section.afscript" }
464
+ },
465
+ "end": "^(?=\\s{4}(reasoning_actions|actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
466
+ "patterns": [
467
+ {
468
+ "name": "string.heredoc.afscript",
469
+ "begin": "(>>)\\s*$",
470
+ "beginCaptures": {
471
+ "1": { "name": "keyword.operator.heredoc.afscript" }
472
+ },
473
+ "end": "^(?=\\s{4}(reasoning_actions|actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
474
+ "patterns": [
475
+ { "include": "#template-expression" },
476
+ {
477
+ "name": "string.unquoted.heredoc.afscript",
478
+ "match": "."
479
+ }
480
+ ]
481
+ },
482
+ {
483
+ "name": "string.heredoc.quoted.afscript",
484
+ "begin": "(>>)\\s*\"",
485
+ "beginCaptures": {
486
+ "1": { "name": "keyword.operator.heredoc.afscript" }
487
+ },
488
+ "end": "\"",
489
+ "patterns": [
490
+ { "include": "#template-expression" },
491
+ {
492
+ "name": "string.unquoted.heredoc.afscript",
493
+ "match": "."
494
+ }
495
+ ]
496
+ },
497
+ {
498
+ "name": "string.heredoc.afscript",
499
+ "begin": "\"",
500
+ "end": "\"",
501
+ "patterns": [
502
+ { "include": "#template-expression" },
503
+ {
504
+ "name": "string.unquoted.heredoc.afscript",
505
+ "match": "."
506
+ }
507
+ ]
508
+ }
509
+ ]
510
+ },
511
+ "action-definitions": {
512
+ "name": "meta.actions.afscript",
513
+ "begin": "^(\\s+)(actions|action_definitions):",
514
+ "beginCaptures": {
515
+ "2": { "name": "keyword.topic.section.afscript" }
516
+ },
517
+ "end": "^(?=\\s{4}(reasoning_instructions|reasoning_actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
518
+ "patterns": [
519
+ {
520
+ "name": "entity.name.action.afscript",
521
+ "match": "^\\s{4,8}([a-zA-Z_][a-zA-Z0-9_]*)(?=:)"
522
+ },
523
+ {
524
+ "name": "keyword.action.property.afscript",
525
+ "match": "^\\s{12}(description|target|inputs|outputs|parameters|returns|implementation|label|require_user_confirmation|include_in_progress_indicator|progress_indicator_message|is_required|is_user_input|developer_name|complex_data_type_name|is_used_by_planner|is_displayable)(?=:)"
526
+ },
527
+ {
528
+ "name": "storage.type.afscript",
529
+ "match": "\\b(string|number|boolean|object|date|timestamp|currency|id|list)\\b"
530
+ },
531
+ { "include": "#operators" },
532
+ { "include": "#punctuation" },
533
+ { "include": "#values" }
534
+ ]
535
+ },
536
+ "reasoning-actions": {
537
+ "name": "meta.reasoning-actions.afscript",
538
+ "begin": "^(\\s+)(reasoning_actions):",
539
+ "beginCaptures": {
540
+ "2": { "name": "keyword.topic.section.afscript" }
541
+ },
542
+ "end": "^(?=\\s{4}(reasoning_instructions|actions|before_reasoning|after_reasoning|description|variables|instructions|override)\\b)|^(?=\\s*$)|^(?=topic\\b|config\\b|variables\\b|start_agent\\b|system\\b)",
543
+ "patterns": [
544
+ { "include": "#directives" },
545
+ {
546
+ "name": "meta.utils.call.afscript",
547
+ "match": "(@utils)(\\.)([a-zA-Z_][a-zA-Z0-9_]*)\\b",
548
+ "captures": {
549
+ "1": { "name": "support.class.afscript" },
550
+ "2": { "name": "punctuation.accessor.dot.afscript" },
551
+ "3": { "name": "entity.name.function.afscript" }
552
+ }
553
+ },
554
+ {
555
+ "name": "meta.variable.reference.afscript",
556
+ "match": "(@)(action|topic|variable|result|input)(\\.)([a-zA-Z_][a-zA-Z0-9_]*)",
557
+ "captures": {
558
+ "1": { "name": "support.class.afscript" },
559
+ "2": { "name": "support.class.afscript" },
560
+ "3": { "name": "punctuation.accessor.dot.afscript" },
561
+ "4": { "name": "variable.other.member.afscript" }
562
+ }
563
+ },
564
+ {
565
+ "name": "meta.alias.assignment.afscript",
566
+ "match": "\\b(as)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
567
+ "captures": {
568
+ "1": { "name": "keyword.control.afscript" },
569
+ "2": { "name": "entity.name.alias.afscript" }
570
+ }
571
+ },
572
+ {
573
+ "name": "keyword.control.transition.reasoning.afscript",
574
+ "match": "\\s+to\\s+"
575
+ },
576
+ {
577
+ "name": "keyword.reasoning.description.afscript",
578
+ "match": "^\\s{12}(description)(?=:)"
579
+ },
580
+ {
581
+ "name": "keyword.control.afscript",
582
+ "match": "\\b(setVariables)\\b"
583
+ },
584
+ {
585
+ "name": "entity.name.action.afscript",
586
+ "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
587
+ },
588
+ { "include": "#values" }
589
+ ]
590
+ },
591
+ "directives": {
592
+ "patterns": [
593
+ {
594
+ "name": "keyword.control.conditional.available.afscript",
595
+ "match": "\\bavailable when\\b"
596
+ },
597
+ {
598
+ "name": "meta.alias.assignment.afscript",
599
+ "match": "\\b(as)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
600
+ "captures": {
601
+ "1": { "name": "keyword.control.afscript" },
602
+ "2": { "name": "entity.name.alias.afscript" }
603
+ }
604
+ },
605
+ {
606
+ "name": "keyword.control.directive.afscript",
607
+ "match": "\\b(run|set|if|else|after|with|and|or)\\b|\\btransition to\\b"
608
+ },
609
+ {
610
+ "name": "keyword.action-call.afscript",
611
+ "match": "(@action)(\\.)",
612
+ "captures": {
613
+ "1": { "name": "support.class.afscript" },
614
+ "2": { "name": "punctuation.accessor.dot.afscript" }
615
+ }
616
+ },
617
+ {
618
+ "name": "keyword.variable-set.afscript",
619
+ "match": "(@variable)(\\.)",
620
+ "captures": {
621
+ "1": { "name": "support.class.afscript" },
622
+ "2": { "name": "punctuation.accessor.dot.afscript" }
623
+ }
624
+ },
625
+ {
626
+ "name": "keyword.topic-ref.afscript",
627
+ "match": "(@topic)(\\.)",
628
+ "captures": {
629
+ "1": { "name": "support.class.afscript" },
630
+ "2": { "name": "punctuation.accessor.dot.afscript" }
631
+ }
632
+ },
633
+ {
634
+ "name": "keyword.result-ref.afscript",
635
+ "match": "(@result)(\\.)",
636
+ "captures": {
637
+ "1": { "name": "support.class.afscript" },
638
+ "2": { "name": "punctuation.accessor.dot.afscript" }
639
+ }
640
+ },
641
+ {
642
+ "name": "keyword.input-ref.afscript",
643
+ "match": "(@input)(\\.)",
644
+ "captures": {
645
+ "1": { "name": "support.class.afscript" },
646
+ "2": { "name": "punctuation.accessor.dot.afscript" }
647
+ }
648
+ },
649
+ {
650
+ "name": "variable.other.member.afscript",
651
+ "match": "(?<=@(?:variable|topic|input|action|result)\\.)\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
652
+ },
653
+ { "include": "#operators" },
654
+ { "include": "#values" }
655
+ ]
656
+ },
657
+ "template-expression": {
658
+ "name": "meta.template.expression.afscript",
659
+ "begin": "\\{\\{",
660
+ "beginCaptures": {
661
+ "0": {
662
+ "name": "punctuation.definition.template.begin.afscript"
663
+ }
664
+ },
665
+ "end": "\\}\\}",
666
+ "endCaptures": {
667
+ "0": { "name": "punctuation.definition.template.end.afscript" }
668
+ },
669
+ "patterns": [
670
+ {
671
+ "name": "string.quoted.single.expression.afscript",
672
+ "begin": "'",
673
+ "end": "'",
674
+ "patterns": [
675
+ {
676
+ "name": "constant.character.escape.afscript",
677
+ "match": "\\\\."
678
+ }
679
+ ]
680
+ },
681
+ {
682
+ "name": "string.quoted.double.expression.afscript",
683
+ "begin": "\"",
684
+ "end": "\"",
685
+ "patterns": [
686
+ {
687
+ "name": "constant.character.escape.afscript",
688
+ "match": "\\\\."
689
+ }
690
+ ]
691
+ },
692
+ {
693
+ "name": "constant.numeric.expression.afscript",
694
+ "match": "\\b\\d+(\\.\\d+)?\\b"
695
+ },
696
+ {
697
+ "name": "constant.language.expression.afscript",
698
+ "match": "\\b(True|False)\\b"
699
+ },
700
+ {
701
+ "name": "keyword.operator.expression.afscript",
702
+ "match": "\\b(and|or|if|else)\\b"
703
+ },
704
+ {
705
+ "name": "operator.comparison.expression.afscript",
706
+ "match": "==|!=|<=|>=|<|>"
707
+ },
708
+ {
709
+ "name": "operator.arithmetic.expression.afscript",
710
+ "match": "[+\\-\\*/%]"
711
+ },
712
+ {
713
+ "name": "meta.variable.reference.expression.afscript",
714
+ "match": "(@)([a-zA-Z_][a-zA-Z0-9_]*)(\\.)([a-zA-Z_][a-zA-Z0-9_]*)\\b",
715
+ "captures": {
716
+ "1": { "name": "support.class.afscript" },
717
+ "2": { "name": "support.class.afscript" },
718
+ "3": { "name": "punctuation.accessor.dot.afscript" },
719
+ "4": { "name": "variable.other.member.afscript" }
720
+ }
721
+ },
722
+ {
723
+ "name": "variable.other.expression.afscript",
724
+ "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"
725
+ },
726
+ {
727
+ "name": "punctuation.definition.expression.afscript",
728
+ "match": "[()\\[\\]@.,]"
729
+ }
730
+ ]
731
+ },
732
+ "json-value": {
733
+ "patterns": [
734
+ {
735
+ "name": "constant.language.json.afscript",
736
+ "match": "\\b(true|false|null)\\b"
737
+ },
738
+ {
739
+ "name": "constant.numeric.json.afscript",
740
+ "match": "-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?"
741
+ },
742
+ {
743
+ "name": "string.quoted.double.json.afscript",
744
+ "begin": "\"",
745
+ "end": "\"",
746
+ "patterns": [
747
+ {
748
+ "name": "constant.character.escape.json.afscript",
749
+ "match": "\\\\."
750
+ }
751
+ ]
752
+ },
753
+ {
754
+ "name": "meta.structure.dictionary.json.afscript",
755
+ "begin": "\\{",
756
+ "beginCaptures": {
757
+ "0": {
758
+ "name": "punctuation.definition.dictionary.begin.json.afscript"
759
+ }
760
+ },
761
+ "end": "\\}",
762
+ "endCaptures": {
763
+ "0": {
764
+ "name": "punctuation.definition.dictionary.end.json.afscript"
765
+ }
766
+ },
767
+ "patterns": [
768
+ {
769
+ "name": "meta.structure.dictionary.key.json.afscript",
770
+ "begin": "\"",
771
+ "end": "\"",
772
+ "patterns": [
773
+ {
774
+ "name": "constant.character.escape.json.afscript",
775
+ "match": "\\\\."
776
+ }
777
+ ]
778
+ },
779
+ {
780
+ "name": "punctuation.separator.dictionary.key-value.json.afscript",
781
+ "match": ":"
782
+ },
783
+ {
784
+ "name": "punctuation.separator.dictionary.pair.json.afscript",
785
+ "match": ","
786
+ },
787
+ { "include": "#json-value" }
788
+ ]
789
+ },
790
+ {
791
+ "name": "meta.structure.array.json.afscript",
792
+ "begin": "\\[",
793
+ "beginCaptures": {
794
+ "0": {
795
+ "name": "punctuation.definition.array.begin.json.afscript"
796
+ }
797
+ },
798
+ "end": "\\]",
799
+ "endCaptures": {
800
+ "0": {
801
+ "name": "punctuation.definition.array.end.json.afscript"
802
+ }
803
+ },
804
+ "patterns": [
805
+ {
806
+ "name": "punctuation.separator.array.json.afscript",
807
+ "match": ","
808
+ },
809
+ { "include": "#json-value" }
810
+ ]
811
+ }
812
+ ]
813
+ },
814
+ "punctuation": {
815
+ "patterns": [
816
+ {
817
+ "name": "punctuation.separator.key-value.afscript",
818
+ "match": ":"
819
+ },
820
+ {
821
+ "name": "punctuation.separator.list.afscript",
822
+ "match": ","
823
+ },
824
+ {
825
+ "name": "punctuation.definition.brackets.afscript",
826
+ "match": "[{}\\[\\]()]"
827
+ },
828
+ {
829
+ "name": "punctuation.accessor.dot.afscript",
830
+ "match": "\\."
831
+ }
832
+ ]
833
+ },
834
+ "operators": {
835
+ "patterns": [
836
+ {
837
+ "name": "operator.comparison.afscript",
838
+ "match": "==|!=|<=|>=|<|>"
839
+ },
840
+ {
841
+ "name": "operator.assignment.afscript",
842
+ "match": "\\s=\\s|\\s=(?=[\\{\\[\"\\d])|(?<=[a-zA-Z_])\\s*=\\s*"
843
+ },
844
+ {
845
+ "name": "operator.arithmetic.afscript",
846
+ "match": "[+\\-\\*%]"
847
+ },
848
+ {
849
+ "name": "punctuation.separator.path.afscript",
850
+ "match": "/"
851
+ }
852
+ ]
853
+ }
854
+ }
855
+ }