agent-scenario-loop 0.1.2 → 0.1.3

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 (63) hide show
  1. package/README.md +9 -9
  2. package/app/profile-session.ts +98 -4
  3. package/dist/core/agent-summary.d.ts +3 -2
  4. package/dist/core/agent-summary.js +44 -2
  5. package/dist/core/artifact-contract.d.ts +22 -4
  6. package/dist/core/artifact-contract.js +512 -11
  7. package/dist/core/comparison.d.ts +57 -3
  8. package/dist/core/comparison.js +113 -1
  9. package/dist/core/planner.d.ts +32 -1
  10. package/dist/core/planner.js +144 -0
  11. package/dist/core/run-index.d.ts +4 -0
  12. package/dist/core/run-index.js +55 -1
  13. package/dist/core/schema-validator.d.ts +1 -0
  14. package/dist/core/schema-validator.js +1 -0
  15. package/dist/runner/compare-latest.d.ts +8 -4
  16. package/dist/runner/compare-latest.js +24 -5
  17. package/dist/runner/example-android-live.d.ts +10 -1
  18. package/dist/runner/example-android-live.js +55 -0
  19. package/dist/runner/example-ios-live.d.ts +10 -1
  20. package/dist/runner/example-ios-live.js +55 -0
  21. package/dist/runner/ios-simctl.d.ts +5 -0
  22. package/dist/runner/ios-simctl.js +6 -0
  23. package/dist/runner/live-comparison.d.ts +2 -2
  24. package/dist/runner/live-comparison.js +2 -1
  25. package/dist/runner/live-proof-summary.d.ts +5 -4
  26. package/dist/runner/live-proof-summary.js +12 -2
  27. package/dist/runner/live-proof.d.ts +3 -2
  28. package/dist/runner/live-proof.js +9 -2
  29. package/dist/runner/profile-android.d.ts +5 -0
  30. package/dist/runner/profile-android.js +148 -24
  31. package/dist/runner/profile-ios.d.ts +11 -1
  32. package/dist/runner/profile-ios.js +128 -9
  33. package/dist/runner/profile-mobile.d.ts +8 -0
  34. package/dist/runner/profile-mobile.js +267 -28
  35. package/docs/adapters.md +4 -0
  36. package/docs/architecture.md +90 -0
  37. package/docs/authoring.md +5 -1
  38. package/docs/concepts.md +3 -24
  39. package/docs/consumer-rehearsal.md +4 -0
  40. package/docs/contracts.md +30 -100
  41. package/docs/external-adapter-protocol.md +219 -0
  42. package/docs/live-proofs.md +83 -2
  43. package/docs/principles.md +9 -15
  44. package/examples/mobile-app/README.md +12 -0
  45. package/examples/mobile-app/runner-manifests/primary-runner.json +1 -0
  46. package/examples/runners/README.md +1 -0
  47. package/examples/runners/adb-android.json +1 -0
  48. package/examples/runners/agent-device-android.json +1 -0
  49. package/examples/runners/agent-device-ios.json +1 -0
  50. package/examples/runners/argent-android.json +1 -0
  51. package/examples/runners/argent-ios.json +1 -0
  52. package/examples/runners/xcodebuildmcp-ios.json +1 -0
  53. package/package.json +2 -1
  54. package/schemas/causal-run.schema.json +85 -2
  55. package/schemas/comparison.schema.json +130 -2
  56. package/schemas/external-adapter-message.schema.json +693 -0
  57. package/schemas/health.schema.json +72 -0
  58. package/schemas/live-proof-set.schema.json +1 -1
  59. package/schemas/live-proof.schema.json +14 -6
  60. package/schemas/manifest.schema.json +442 -1
  61. package/schemas/runner-capabilities.schema.json +20 -0
  62. package/schemas/scenario.schema.json +16 -0
  63. package/templates/primary-runner.json +1 -0
@@ -58,6 +58,12 @@
58
58
  "type": "string"
59
59
  }
60
60
  },
61
+ "uiContexts": {
62
+ "type": "array",
63
+ "items": {
64
+ "type": "string"
65
+ }
66
+ },
61
67
  "artifacts": {
62
68
  "type": "array",
63
69
  "items": {
@@ -71,9 +77,75 @@
71
77
  }
72
78
  }
73
79
  }
80
+ },
81
+ "downgradePolicy": {
82
+ "type": "object",
83
+ "additionalProperties": false,
84
+ "required": ["mode", "allowedSubstitutions", "substitutions", "unsupported", "warnings"],
85
+ "properties": {
86
+ "mode": {
87
+ "type": "string",
88
+ "enum": ["no-silent-downgrade"]
89
+ },
90
+ "allowedSubstitutions": {
91
+ "type": "array",
92
+ "items": {
93
+ "$ref": "#/$defs/downgradePolicyEntry"
94
+ }
95
+ },
96
+ "substitutions": {
97
+ "type": "array",
98
+ "items": {
99
+ "$ref": "#/$defs/downgradePolicyEntry"
100
+ }
101
+ },
102
+ "unsupported": {
103
+ "type": "array",
104
+ "items": {
105
+ "$ref": "#/$defs/downgradePolicyEntry"
106
+ }
107
+ },
108
+ "warnings": {
109
+ "type": "array",
110
+ "items": {
111
+ "$ref": "#/$defs/downgradePolicyEntry"
112
+ }
113
+ }
114
+ }
74
115
  }
75
116
  },
76
117
  "$defs": {
118
+ "downgradePolicyEntry": {
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "required": ["kind", "name", "status", "code"],
122
+ "properties": {
123
+ "kind": {
124
+ "type": "string",
125
+ "enum": ["capability", "driverAction", "artifact", "uiContext"]
126
+ },
127
+ "name": {
128
+ "type": "string",
129
+ "minLength": 1
130
+ },
131
+ "status": {
132
+ "type": "string",
133
+ "enum": ["unsupported", "warning", "substituted"]
134
+ },
135
+ "code": {
136
+ "type": "string",
137
+ "minLength": 1
138
+ },
139
+ "requested": {
140
+ "type": "string",
141
+ "minLength": 1
142
+ },
143
+ "provided": {
144
+ "type": "string",
145
+ "minLength": 1
146
+ }
147
+ }
148
+ },
77
149
  "healthCheck": {
78
150
  "type": "object",
79
151
  "additionalProperties": false,
@@ -105,7 +105,7 @@
105
105
  },
106
106
  "comparisonStatus": {
107
107
  "type": "string",
108
- "enum": ["baseline_missing", "improved", "inconclusive", "mixed", "not_compared", "regressed", "unchanged"]
108
+ "enum": ["baseline_missing", "improved", "inconclusive", "low_confidence", "mixed", "not_compared", "regressed", "unchanged"]
109
109
  },
110
110
  "summaryPath": {
111
111
  "type": "string"
@@ -69,7 +69,7 @@
69
69
  },
70
70
  "comparisonStatus": {
71
71
  "type": "string",
72
- "enum": ["baseline_missing", "improved", "inconclusive", "mixed", "not_compared", "regressed", "unchanged"]
72
+ "enum": ["baseline_missing", "improved", "inconclusive", "low_confidence", "mixed", "not_compared", "regressed", "unchanged"]
73
73
  },
74
74
  "nextAction": {
75
75
  "$ref": "#/$defs/nextAction"
@@ -283,7 +283,7 @@
283
283
  },
284
284
  "status": {
285
285
  "type": "string",
286
- "enum": ["better", "worse", "unchanged", "mixed", "inconclusive", "skipped"]
286
+ "enum": ["better", "worse", "unchanged", "mixed", "inconclusive", "low_confidence", "skipped"]
287
287
  },
288
288
  "baselineDir": {
289
289
  "type": ["string", "null"]
@@ -310,7 +310,7 @@
310
310
  "counts": {
311
311
  "type": "object",
312
312
  "additionalProperties": false,
313
- "required": ["better", "worse", "unchanged", "inconclusive"],
313
+ "required": ["better", "worse", "unchanged", "inconclusive", "low_confidence"],
314
314
  "properties": {
315
315
  "better": {
316
316
  "type": "integer",
@@ -327,6 +327,10 @@
327
327
  "inconclusive": {
328
328
  "type": "integer",
329
329
  "minimum": 0
330
+ },
331
+ "low_confidence": {
332
+ "type": "integer",
333
+ "minimum": 0
330
334
  }
331
335
  }
332
336
  },
@@ -348,7 +352,7 @@
348
352
  },
349
353
  "status": {
350
354
  "type": "string",
351
- "enum": ["better", "worse", "inconclusive"]
355
+ "enum": ["better", "worse", "inconclusive", "low_confidence"]
352
356
  },
353
357
  "unit": {
354
358
  "type": "string"
@@ -367,7 +371,7 @@
367
371
  "comparisonCounts": {
368
372
  "type": "object",
369
373
  "additionalProperties": false,
370
- "required": ["better", "worse", "unchanged", "mixed", "inconclusive", "skipped"],
374
+ "required": ["better", "worse", "unchanged", "mixed", "inconclusive", "low_confidence", "skipped"],
371
375
  "properties": {
372
376
  "better": {
373
377
  "type": "integer",
@@ -389,6 +393,10 @@
389
393
  "type": "integer",
390
394
  "minimum": 0
391
395
  },
396
+ "low_confidence": {
397
+ "type": "integer",
398
+ "minimum": 0
399
+ },
392
400
  "skipped": {
393
401
  "type": "integer",
394
402
  "minimum": 0
@@ -402,7 +410,7 @@
402
410
  "properties": {
403
411
  "code": {
404
412
  "type": "string",
405
- "enum": ["establish_baseline", "inspect_failed_run", "inspect_inconclusive", "inspect_mixed", "inspect_regressions", "inspect_summary"]
413
+ "enum": ["establish_baseline", "inspect_failed_run", "inspect_inconclusive", "inspect_low_confidence", "inspect_mixed", "inspect_regressions", "inspect_summary"]
406
414
  },
407
415
  "summary": {
408
416
  "type": "string"
@@ -13,6 +13,9 @@
13
13
  "endedAt",
14
14
  "durationMs",
15
15
  "interactionDriver",
16
+ "provenance",
17
+ "attempt",
18
+ "environment",
16
19
  "simulator",
17
20
  "bundleId",
18
21
  "gitSha",
@@ -55,6 +58,283 @@
55
58
  "comparisonLane": {
56
59
  "type": "string"
57
60
  },
61
+ "provenance": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": ["gitSha", "toolVersions"],
65
+ "properties": {
66
+ "scenarioHash": {
67
+ "type": "string",
68
+ "pattern": "^[a-f0-9]{64}$"
69
+ },
70
+ "cohort": {
71
+ "$ref": "#/$defs/provenanceCohort"
72
+ },
73
+ "cohortHash": {
74
+ "type": "string",
75
+ "pattern": "^[a-f0-9]{64}$"
76
+ },
77
+ "gitSha": {
78
+ "type": "string"
79
+ },
80
+ "toolVersions": {
81
+ "type": "object",
82
+ "additionalProperties": {
83
+ "type": "string"
84
+ }
85
+ }
86
+ }
87
+ },
88
+ "attempt": {
89
+ "type": "object",
90
+ "additionalProperties": false,
91
+ "required": [
92
+ "attemptId",
93
+ "runId",
94
+ "status",
95
+ "terminalState",
96
+ "startedAt",
97
+ "endedAt",
98
+ "durationMs",
99
+ "interactionDriver",
100
+ "classification",
101
+ "cleanup",
102
+ "partialArtifacts"
103
+ ],
104
+ "properties": {
105
+ "attemptId": {
106
+ "type": "string",
107
+ "minLength": 1
108
+ },
109
+ "attemptNumber": {
110
+ "type": "integer",
111
+ "minimum": 1
112
+ },
113
+ "maxAttempts": {
114
+ "type": "integer",
115
+ "minimum": 1
116
+ },
117
+ "retryOfAttemptId": {
118
+ "type": "string",
119
+ "minLength": 1
120
+ },
121
+ "retryReason": {
122
+ "type": "string",
123
+ "minLength": 1
124
+ },
125
+ "runId": {
126
+ "type": "string"
127
+ },
128
+ "status": {
129
+ "type": "string",
130
+ "enum": ["passed", "failed"]
131
+ },
132
+ "terminalState": {
133
+ "$ref": "#/$defs/terminalState"
134
+ },
135
+ "startedAt": {
136
+ "type": "string"
137
+ },
138
+ "endedAt": {
139
+ "type": "string"
140
+ },
141
+ "durationMs": {
142
+ "type": "number",
143
+ "minimum": 0
144
+ },
145
+ "interactionDriver": {
146
+ "type": "string"
147
+ },
148
+ "comparisonLane": {
149
+ "type": "string"
150
+ },
151
+ "classification": {
152
+ "type": "object",
153
+ "additionalProperties": false,
154
+ "required": ["category"],
155
+ "properties": {
156
+ "category": {
157
+ "type": "string",
158
+ "enum": ["none", "product", "runner", "environment", "timeout", "cancelled", "instrumentation", "evidence", "unknown"]
159
+ },
160
+ "code": {
161
+ "type": "string",
162
+ "minLength": 1
163
+ },
164
+ "message": {
165
+ "type": "string",
166
+ "minLength": 1
167
+ },
168
+ "retryable": {
169
+ "type": "boolean"
170
+ }
171
+ }
172
+ },
173
+ "cleanup": {
174
+ "type": "object",
175
+ "additionalProperties": false,
176
+ "required": ["status"],
177
+ "properties": {
178
+ "status": {
179
+ "type": "string",
180
+ "enum": ["not-required", "passed", "failed", "partial", "unknown"]
181
+ },
182
+ "message": {
183
+ "type": "string",
184
+ "minLength": 1
185
+ },
186
+ "artifacts": {
187
+ "type": "array",
188
+ "items": {
189
+ "type": "string",
190
+ "minLength": 1
191
+ }
192
+ }
193
+ }
194
+ },
195
+ "partialArtifacts": {
196
+ "type": "object",
197
+ "additionalProperties": false,
198
+ "required": ["valid", "reason"],
199
+ "properties": {
200
+ "valid": {
201
+ "type": "boolean"
202
+ },
203
+ "reason": {
204
+ "type": "string",
205
+ "minLength": 1
206
+ },
207
+ "paths": {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "string",
211
+ "minLength": 1
212
+ }
213
+ }
214
+ }
215
+ }
216
+ }
217
+ },
218
+ "environment": {
219
+ "type": "object",
220
+ "additionalProperties": false,
221
+ "required": ["platform", "bundleId", "runtimeTarget", "preconditions", "postconditions"],
222
+ "properties": {
223
+ "platform": {
224
+ "type": "string",
225
+ "enum": ["ios", "android"]
226
+ },
227
+ "bundleId": {
228
+ "type": "string"
229
+ },
230
+ "runtimeTarget": {
231
+ "type": "object",
232
+ "additionalProperties": false,
233
+ "required": ["name", "udid"],
234
+ "properties": {
235
+ "name": {
236
+ "type": "string"
237
+ },
238
+ "udid": {
239
+ "type": "string"
240
+ }
241
+ }
242
+ },
243
+ "nodeVersion": {
244
+ "type": "string"
245
+ },
246
+ "preconditions": {
247
+ "type": "object",
248
+ "additionalProperties": false,
249
+ "required": [
250
+ "installedState",
251
+ "appDataState",
252
+ "authState",
253
+ "initialRoute",
254
+ "foregroundState",
255
+ "lifecyclePhase",
256
+ "deviceLockState",
257
+ "permissions",
258
+ "locale",
259
+ "timezone",
260
+ "theme",
261
+ "fontScale",
262
+ "orientation",
263
+ "networkState",
264
+ "animations"
265
+ ],
266
+ "properties": {
267
+ "installedState": {
268
+ "$ref": "#/$defs/lifecycleAssertion"
269
+ },
270
+ "appDataState": {
271
+ "$ref": "#/$defs/lifecycleAssertion"
272
+ },
273
+ "authState": {
274
+ "$ref": "#/$defs/lifecycleAssertion"
275
+ },
276
+ "initialRoute": {
277
+ "$ref": "#/$defs/lifecycleAssertion"
278
+ },
279
+ "foregroundState": {
280
+ "$ref": "#/$defs/lifecycleAssertion"
281
+ },
282
+ "lifecyclePhase": {
283
+ "$ref": "#/$defs/lifecycleStateAssertion"
284
+ },
285
+ "deviceLockState": {
286
+ "$ref": "#/$defs/lifecycleAssertion"
287
+ },
288
+ "permissions": {
289
+ "$ref": "#/$defs/lifecycleAssertion"
290
+ },
291
+ "locale": {
292
+ "$ref": "#/$defs/lifecycleAssertion"
293
+ },
294
+ "timezone": {
295
+ "$ref": "#/$defs/lifecycleAssertion"
296
+ },
297
+ "theme": {
298
+ "$ref": "#/$defs/lifecycleAssertion"
299
+ },
300
+ "fontScale": {
301
+ "$ref": "#/$defs/lifecycleAssertion"
302
+ },
303
+ "orientation": {
304
+ "$ref": "#/$defs/lifecycleAssertion"
305
+ },
306
+ "networkState": {
307
+ "$ref": "#/$defs/lifecycleAssertion"
308
+ },
309
+ "animations": {
310
+ "$ref": "#/$defs/lifecycleAssertion"
311
+ }
312
+ }
313
+ },
314
+ "postconditions": {
315
+ "type": "object",
316
+ "additionalProperties": false,
317
+ "required": ["appState", "lifecyclePhase", "cleanupState", "dataState", "artifactState"],
318
+ "properties": {
319
+ "appState": {
320
+ "$ref": "#/$defs/lifecycleAssertion"
321
+ },
322
+ "lifecyclePhase": {
323
+ "$ref": "#/$defs/lifecycleStateAssertion"
324
+ },
325
+ "cleanupState": {
326
+ "$ref": "#/$defs/lifecycleAssertion"
327
+ },
328
+ "dataState": {
329
+ "$ref": "#/$defs/lifecycleAssertion"
330
+ },
331
+ "artifactState": {
332
+ "$ref": "#/$defs/lifecycleAssertion"
333
+ }
334
+ }
335
+ }
336
+ }
337
+ },
58
338
  "simulator": {
59
339
  "type": "object",
60
340
  "additionalProperties": false,
@@ -166,12 +446,31 @@
166
446
  "items": {
167
447
  "type": "object",
168
448
  "additionalProperties": false,
169
- "required": ["channel", "kind", "path", "sha256", "sizeBytes", "sourceFileName"],
449
+ "required": [
450
+ "channel",
451
+ "completenessStatus",
452
+ "corruptionStatus",
453
+ "kind",
454
+ "path",
455
+ "redactionStatus",
456
+ "sha256",
457
+ "sizeBytes",
458
+ "sourceFileName",
459
+ "transformations"
460
+ ],
170
461
  "properties": {
171
462
  "channel": {
172
463
  "type": "string",
173
464
  "enum": ["capture", "provider", "signal"]
174
465
  },
466
+ "completenessStatus": {
467
+ "type": "string",
468
+ "enum": ["complete", "truncated", "unknown"]
469
+ },
470
+ "corruptionStatus": {
471
+ "type": "string",
472
+ "enum": ["valid", "corrupt", "unknown"]
473
+ },
175
474
  "kind": {
176
475
  "type": "string",
177
476
  "enum": ["accessibility", "js", "logs", "memory", "network", "profiler", "screenshot", "uiTree", "video"]
@@ -180,6 +479,10 @@
180
479
  "type": "string",
181
480
  "minLength": 1
182
481
  },
482
+ "redactionStatus": {
483
+ "type": "string",
484
+ "enum": ["not-redacted", "redacted", "unknown"]
485
+ },
183
486
  "sha256": {
184
487
  "type": "string",
185
488
  "pattern": "^[a-f0-9]{64}$"
@@ -191,6 +494,15 @@
191
494
  "sourceFileName": {
192
495
  "type": "string",
193
496
  "minLength": 1
497
+ },
498
+ "transformations": {
499
+ "type": "array",
500
+ "minItems": 1,
501
+ "uniqueItems": true,
502
+ "items": {
503
+ "type": "string",
504
+ "enum": ["copied", "normalized", "redacted", "truncated", "compressed", "transcoded", "unknown"]
505
+ }
194
506
  }
195
507
  }
196
508
  }
@@ -200,5 +512,134 @@
200
512
  "failureReason": {
201
513
  "type": ["string", "null"]
202
514
  }
515
+ },
516
+ "$defs": {
517
+ "provenanceCohort": {
518
+ "type": "object",
519
+ "additionalProperties": false,
520
+ "properties": {
521
+ "appVersion": {
522
+ "type": "string"
523
+ },
524
+ "appId": {
525
+ "type": "string"
526
+ },
527
+ "buildId": {
528
+ "type": "string"
529
+ },
530
+ "buildMode": {
531
+ "type": "string"
532
+ },
533
+ "commandTransport": {
534
+ "type": "string"
535
+ },
536
+ "deviceClass": {
537
+ "type": "string"
538
+ },
539
+ "featureFlags": {
540
+ "type": "object",
541
+ "additionalProperties": {
542
+ "type": ["boolean", "string", "number", "null"]
543
+ }
544
+ },
545
+ "osVersion": {
546
+ "type": "string"
547
+ },
548
+ "platform": {
549
+ "type": "string"
550
+ },
551
+ "providers": {
552
+ "type": "array",
553
+ "items": {
554
+ "type": "object",
555
+ "additionalProperties": false,
556
+ "properties": {
557
+ "name": {
558
+ "type": "string"
559
+ },
560
+ "version": {
561
+ "type": "string"
562
+ }
563
+ }
564
+ }
565
+ },
566
+ "runnerName": {
567
+ "type": "string"
568
+ },
569
+ "runnerVersion": {
570
+ "type": "string"
571
+ },
572
+ "seedIdentity": {
573
+ "type": "string"
574
+ }
575
+ }
576
+ },
577
+ "terminalState": {
578
+ "type": "string",
579
+ "enum": ["passed", "failed", "timeout", "cancelled", "aborted", "inconclusive", "unsupported", "skipped", "unhealthy"]
580
+ },
581
+ "lifecycleState": {
582
+ "type": "string",
583
+ "enum": [
584
+ "unknown",
585
+ "cold-launch",
586
+ "warm-launch",
587
+ "hot-launch",
588
+ "resume",
589
+ "foreground",
590
+ "background",
591
+ "force-stop",
592
+ "process-death",
593
+ "scene-recreation",
594
+ "activity-recreation",
595
+ "os-reclaim",
596
+ "reboot",
597
+ "relaunch"
598
+ ]
599
+ },
600
+ "lifecycleAssertion": {
601
+ "type": "object",
602
+ "additionalProperties": false,
603
+ "required": ["value", "evidence"],
604
+ "properties": {
605
+ "value": {
606
+ "type": ["string", "number", "boolean", "null"]
607
+ },
608
+ "evidence": {
609
+ "type": "string",
610
+ "enum": ["not-asserted", "unknown", "asserted", "observed", "inferred"]
611
+ },
612
+ "source": {
613
+ "type": "string",
614
+ "minLength": 1
615
+ },
616
+ "artifact": {
617
+ "type": "string",
618
+ "minLength": 1
619
+ }
620
+ }
621
+ },
622
+ "lifecycleStateAssertion": {
623
+ "type": "object",
624
+ "additionalProperties": false,
625
+ "required": ["value", "evidence"],
626
+ "properties": {
627
+ "value": {
628
+ "$ref": "#/$defs/lifecycleState"
629
+ },
630
+ "evidence": {
631
+ "type": "string",
632
+ "enum": ["not-asserted", "unknown", "asserted", "observed", "inferred"]
633
+ },
634
+ "source": {
635
+ "type": "string",
636
+ "minLength": 1
637
+ },
638
+ "artifact": {
639
+ "type": "string",
640
+ "minLength": 1
641
+ }
642
+ }
643
+ }
203
644
  }
204
645
  }
@@ -60,6 +60,13 @@
60
60
  "$ref": "#/$defs/driverAction"
61
61
  }
62
62
  },
63
+ "uiContexts": {
64
+ "type": "array",
65
+ "uniqueItems": true,
66
+ "items": {
67
+ "$ref": "#/$defs/uiContext"
68
+ }
69
+ },
63
70
  "artifactOutputs": {
64
71
  "type": "array",
65
72
  "uniqueItems": true,
@@ -143,6 +150,19 @@
143
150
  "collectPerfSignals"
144
151
  ]
145
152
  },
153
+ "uiContext": {
154
+ "type": "string",
155
+ "enum": [
156
+ "app",
157
+ "systemDialog",
158
+ "notificationShade",
159
+ "externalBrowser",
160
+ "webView",
161
+ "shareSheet",
162
+ "picker",
163
+ "otherApp"
164
+ ]
165
+ },
146
166
  "providerCommand": {
147
167
  "type": "object",
148
168
  "additionalProperties": false,