@petercjl/tuda 0.0.0-stage → 0.1.1

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,1144 @@
1
+ {
2
+ "schema": "guard.command-extension-fixtures.v1",
3
+ "build": {
4
+ "base": "packaged",
5
+ "schema": "guard.command-extension-build.v1",
6
+ "sources": [
7
+ {
8
+ "extension": {
9
+ "action_classes": [
10
+ "Tuda provider-quota use",
11
+ "Tuda managed and exported file writes",
12
+ "Tuda agent configuration changes",
13
+ "Tuda workspace mutations and unknown invocations"
14
+ ],
15
+ "aliases": [],
16
+ "conflicts": [],
17
+ "delegated_protection": null,
18
+ "dependencies": [],
19
+ "description": "Reviews Tuda CLI invocations that can spend provider quota, write managed or exported files, change workspace state, or install agent configuration. Explicit read-only paths narrow this rule; Guard independent floors remain in effect.",
20
+ "ecosystem_ids": [
21
+ "tuda"
22
+ ],
23
+ "executables": [
24
+ "tuda"
25
+ ],
26
+ "extension_id": "command.tuda",
27
+ "homepage": "https://github.com/Davied-H/iterlay",
28
+ "icon": {
29
+ "background": "#0F172A",
30
+ "kind": "react-icon",
31
+ "name": "HiMiniCommandLine"
32
+ },
33
+ "license": "MIT",
34
+ "name": "Tuda command protection",
35
+ "permissions": [
36
+ {
37
+ "action_classes": [
38
+ "Tuda provider-quota use",
39
+ "Tuda managed and exported file writes",
40
+ "Tuda agent configuration changes",
41
+ "Tuda workspace mutations and unknown invocations"
42
+ ],
43
+ "baseline_floor": "review",
44
+ "configurable": true,
45
+ "conflicts": [],
46
+ "default_enabled": true,
47
+ "dependencies": [],
48
+ "deprecated": false,
49
+ "description": "Reviews Tuda CLI invocations that can spend provider quota, write managed or exported files, change workspace state, or install agent configuration. Explicit read-only paths narrow this rule; Guard independent floors remain in effect.",
50
+ "example_command": "tuda image generate --prompt \"Product photo\" --out ./product.png",
51
+ "family": null,
52
+ "fixed_reason": null,
53
+ "implementation_version": "1.0.0",
54
+ "implied_permissions": [],
55
+ "introduced_version": "1.0.0",
56
+ "label": "Tuda state changes, quota use and unclassified calls",
57
+ "permission_id": "command.tuda.permission.side-effects",
58
+ "replacement_permission_id": null,
59
+ "risk_tier": "high",
60
+ "safer_guidance": [
61
+ "Inspect tuda tools list and the requested operation before running it.",
62
+ "Confirm provider cost and reference-image disclosure before generation or editing.",
63
+ "Export to a new destination; --overwrite can replace existing files.",
64
+ "Review add/remove agent configuration changes. Ctrl+C stops waiting, not remote billing."
65
+ ],
66
+ "typed_capabilities": []
67
+ }
68
+ ],
69
+ "project_markers": [],
70
+ "publisher": {
71
+ "id": "community.tuda",
72
+ "display_name": "Community",
73
+ "url": "https://github.com/Davied-H/iterlay"
74
+ },
75
+ "reference_urls": [
76
+ "https://github.com/Davied-H/iterlay/blob/main/cli/src/main.ts",
77
+ "https://github.com/Davied-H/iterlay/blob/main/electron/workspace-tools.ts"
78
+ ],
79
+ "required": false,
80
+ "risk_classes": [
81
+ "execution",
82
+ "filesystem_write",
83
+ "network_egress"
84
+ ],
85
+ "rules": [
86
+ {
87
+ "action_classes": [
88
+ "Tuda provider-quota use",
89
+ "Tuda managed and exported file writes",
90
+ "Tuda agent configuration changes",
91
+ "Tuda workspace mutations and unknown invocations"
92
+ ],
93
+ "default_mode": "review",
94
+ "description": "Reviews Tuda CLI invocations that can spend provider quota, write managed or exported files, change workspace state, or install agent configuration. Explicit read-only paths narrow this rule; Guard independent floors remain in effect.",
95
+ "family": null,
96
+ "matcher": {
97
+ "op": "executable.v1",
98
+ "config": {
99
+ "executables": [
100
+ "tuda",
101
+ "tuda.cmd",
102
+ "tuda.exe"
103
+ ],
104
+ "subcommands": [],
105
+ "allow_leading_options": true,
106
+ "leading_options_with_values": [
107
+ "--agent",
108
+ "--home",
109
+ "--kind",
110
+ "--provider",
111
+ "--model",
112
+ "--prompt",
113
+ "--input",
114
+ "--out",
115
+ "--path",
116
+ "--board",
117
+ "--name",
118
+ "--size",
119
+ "--quality",
120
+ "--style",
121
+ "--background",
122
+ "--n",
123
+ "--reference",
124
+ "--ratio",
125
+ "--duration",
126
+ "--resolution",
127
+ "--timeout",
128
+ "--request-id",
129
+ "--app-path",
130
+ "--user-data-path"
131
+ ],
132
+ "interspersed_options_with_values": [
133
+ "--agent",
134
+ "--home",
135
+ "--kind",
136
+ "--provider",
137
+ "--model",
138
+ "--prompt",
139
+ "--input",
140
+ "--out",
141
+ "--path",
142
+ "--board",
143
+ "--name",
144
+ "--size",
145
+ "--quality",
146
+ "--style",
147
+ "--background",
148
+ "--n",
149
+ "--reference",
150
+ "--ratio",
151
+ "--duration",
152
+ "--resolution",
153
+ "--timeout",
154
+ "--request-id",
155
+ "--app-path",
156
+ "--user-data-path"
157
+ ],
158
+ "interspersed_flags": [
159
+ "--json",
160
+ "--async",
161
+ "--no-launch",
162
+ "--overwrite",
163
+ "--help",
164
+ "--version"
165
+ ],
166
+ "options_with_values": [
167
+ "--agent",
168
+ "--home",
169
+ "--kind",
170
+ "--provider",
171
+ "--model",
172
+ "--prompt",
173
+ "--input",
174
+ "--out",
175
+ "--path",
176
+ "--board",
177
+ "--name",
178
+ "--size",
179
+ "--quality",
180
+ "--style",
181
+ "--background",
182
+ "--n",
183
+ "--reference",
184
+ "--ratio",
185
+ "--duration",
186
+ "--resolution",
187
+ "--timeout",
188
+ "--request-id",
189
+ "--app-path",
190
+ "--user-data-path"
191
+ ],
192
+ "required_flags": [],
193
+ "required_flags_in_all_arguments": true,
194
+ "forbidden_flags": [],
195
+ "fail_secure_unknown_options": true
196
+ }
197
+ },
198
+ "native_capability": null,
199
+ "permission_id": "command.tuda.permission.side-effects",
200
+ "risk_classes": [
201
+ "execution",
202
+ "filesystem_write",
203
+ "network_egress"
204
+ ],
205
+ "rule_id": "command.tuda.side-effects",
206
+ "rule_version": "1.0.0",
207
+ "safe_variants": [
208
+ {
209
+ "variant_id": "read-only",
210
+ "title": "Read-only metadata and task inspection without export or executable override",
211
+ "matcher": {
212
+ "op": "any.v1",
213
+ "config": {},
214
+ "matchers": [
215
+ {
216
+ "op": "executable-path-set.v1",
217
+ "config": {
218
+ "executables": [
219
+ "tuda",
220
+ "tuda.cmd",
221
+ "tuda.exe"
222
+ ],
223
+ "allow_leading_options": true,
224
+ "leading_options_with_values": [
225
+ "--agent",
226
+ "--home",
227
+ "--kind",
228
+ "--provider",
229
+ "--model",
230
+ "--prompt",
231
+ "--input",
232
+ "--out",
233
+ "--path",
234
+ "--board",
235
+ "--name",
236
+ "--size",
237
+ "--quality",
238
+ "--style",
239
+ "--background",
240
+ "--n",
241
+ "--reference",
242
+ "--ratio",
243
+ "--duration",
244
+ "--resolution",
245
+ "--timeout",
246
+ "--request-id",
247
+ "--app-path",
248
+ "--user-data-path"
249
+ ],
250
+ "interspersed_options_with_values": [
251
+ "--agent",
252
+ "--home",
253
+ "--kind",
254
+ "--provider",
255
+ "--model",
256
+ "--prompt",
257
+ "--input",
258
+ "--out",
259
+ "--path",
260
+ "--board",
261
+ "--name",
262
+ "--size",
263
+ "--quality",
264
+ "--style",
265
+ "--background",
266
+ "--n",
267
+ "--reference",
268
+ "--ratio",
269
+ "--duration",
270
+ "--resolution",
271
+ "--timeout",
272
+ "--request-id",
273
+ "--app-path",
274
+ "--user-data-path"
275
+ ],
276
+ "interspersed_flags": [
277
+ "--json",
278
+ "--async",
279
+ "--no-launch",
280
+ "--overwrite",
281
+ "--help",
282
+ "--version"
283
+ ],
284
+ "options_with_values": [
285
+ "--agent",
286
+ "--home",
287
+ "--kind",
288
+ "--provider",
289
+ "--model",
290
+ "--prompt",
291
+ "--input",
292
+ "--out",
293
+ "--path",
294
+ "--board",
295
+ "--name",
296
+ "--size",
297
+ "--quality",
298
+ "--style",
299
+ "--background",
300
+ "--n",
301
+ "--reference",
302
+ "--ratio",
303
+ "--duration",
304
+ "--resolution",
305
+ "--timeout",
306
+ "--request-id",
307
+ "--app-path",
308
+ "--user-data-path"
309
+ ],
310
+ "required_flags": [],
311
+ "required_flags_in_all_arguments": true,
312
+ "forbidden_flags": [
313
+ "--out",
314
+ "--overwrite",
315
+ "--app-path"
316
+ ],
317
+ "fail_secure_unknown_options": true,
318
+ "paths": [
319
+ [
320
+ "status"
321
+ ],
322
+ [
323
+ "doctor"
324
+ ],
325
+ [
326
+ "providers",
327
+ "list"
328
+ ],
329
+ [
330
+ "models",
331
+ "list"
332
+ ],
333
+ [
334
+ "tools",
335
+ "list"
336
+ ],
337
+ [
338
+ "boards",
339
+ "list"
340
+ ],
341
+ [
342
+ "boards",
343
+ "show"
344
+ ],
345
+ [
346
+ "boards",
347
+ "active"
348
+ ],
349
+ [
350
+ "assets",
351
+ "list"
352
+ ],
353
+ [
354
+ "tasks",
355
+ "list"
356
+ ],
357
+ [
358
+ "help"
359
+ ],
360
+ [
361
+ "version"
362
+ ],
363
+ [
364
+ "guard",
365
+ "descriptor"
366
+ ],
367
+ [
368
+ "call",
369
+ "status"
370
+ ],
371
+ [
372
+ "call",
373
+ "list_providers"
374
+ ],
375
+ [
376
+ "call",
377
+ "list_models"
378
+ ],
379
+ [
380
+ "call",
381
+ "list_tasks"
382
+ ],
383
+ [
384
+ "call",
385
+ "list_boards"
386
+ ],
387
+ [
388
+ "call",
389
+ "get_active_board"
390
+ ],
391
+ [
392
+ "call",
393
+ "get_board"
394
+ ],
395
+ [
396
+ "call",
397
+ "get_board_layout"
398
+ ],
399
+ [
400
+ "call",
401
+ "list_assets"
402
+ ],
403
+ [
404
+ "call",
405
+ "get_generation_status"
406
+ ],
407
+ [
408
+ "call",
409
+ "list_modification_requests"
410
+ ],
411
+ [
412
+ "call",
413
+ "get_modification_request"
414
+ ]
415
+ ]
416
+ }
417
+ },
418
+ {
419
+ "op": "executable-path-set.v1",
420
+ "config": {
421
+ "executables": [
422
+ "tuda",
423
+ "tuda.cmd",
424
+ "tuda.exe"
425
+ ],
426
+ "allow_leading_options": true,
427
+ "leading_options_with_values": [
428
+ "--agent",
429
+ "--home",
430
+ "--kind",
431
+ "--provider",
432
+ "--model",
433
+ "--prompt",
434
+ "--input",
435
+ "--out",
436
+ "--path",
437
+ "--board",
438
+ "--name",
439
+ "--size",
440
+ "--quality",
441
+ "--style",
442
+ "--background",
443
+ "--n",
444
+ "--reference",
445
+ "--ratio",
446
+ "--duration",
447
+ "--resolution",
448
+ "--timeout",
449
+ "--request-id",
450
+ "--app-path",
451
+ "--user-data-path"
452
+ ],
453
+ "interspersed_options_with_values": [
454
+ "--agent",
455
+ "--home",
456
+ "--kind",
457
+ "--provider",
458
+ "--model",
459
+ "--prompt",
460
+ "--input",
461
+ "--out",
462
+ "--path",
463
+ "--board",
464
+ "--name",
465
+ "--size",
466
+ "--quality",
467
+ "--style",
468
+ "--background",
469
+ "--n",
470
+ "--reference",
471
+ "--ratio",
472
+ "--duration",
473
+ "--resolution",
474
+ "--timeout",
475
+ "--request-id",
476
+ "--app-path",
477
+ "--user-data-path"
478
+ ],
479
+ "interspersed_flags": [
480
+ "--json",
481
+ "--async",
482
+ "--no-launch",
483
+ "--overwrite",
484
+ "--help",
485
+ "--version"
486
+ ],
487
+ "options_with_values": [
488
+ "--agent",
489
+ "--home",
490
+ "--kind",
491
+ "--provider",
492
+ "--model",
493
+ "--prompt",
494
+ "--input",
495
+ "--out",
496
+ "--path",
497
+ "--board",
498
+ "--name",
499
+ "--size",
500
+ "--quality",
501
+ "--style",
502
+ "--background",
503
+ "--n",
504
+ "--reference",
505
+ "--ratio",
506
+ "--duration",
507
+ "--resolution",
508
+ "--timeout",
509
+ "--request-id",
510
+ "--app-path",
511
+ "--user-data-path"
512
+ ],
513
+ "required_flags": [],
514
+ "required_flags_in_all_arguments": true,
515
+ "forbidden_flags": [
516
+ "--out",
517
+ "--overwrite",
518
+ "--app-path",
519
+ "--kind"
520
+ ],
521
+ "fail_secure_unknown_options": true,
522
+ "paths": [
523
+ [
524
+ "tasks",
525
+ "get"
526
+ ],
527
+ [
528
+ "tasks",
529
+ "wait"
530
+ ]
531
+ ]
532
+ }
533
+ }
534
+ ]
535
+ }
536
+ }
537
+ ],
538
+ "safer_alternatives": [
539
+ "Inspect tuda tools list and the requested operation before running it.",
540
+ "Confirm provider cost and reference-image disclosure before generation or editing.",
541
+ "Export to a new destination; --overwrite can replace existing files.",
542
+ "Review add/remove agent configuration changes. Ctrl+C stops waiting, not remote billing."
543
+ ],
544
+ "severity": "high",
545
+ "title": "Tuda state changes, quota use and unclassified calls"
546
+ }
547
+ ],
548
+ "safer_alternatives": [
549
+ "Inspect tuda tools list and the requested operation before running it.",
550
+ "Confirm provider cost and reference-image disclosure before generation or editing.",
551
+ "Export to a new destination; --overwrite can replace existing files.",
552
+ "Review add/remove agent configuration changes. Ctrl+C stops waiting, not remote billing."
553
+ ],
554
+ "source": "built-in",
555
+ "version": "1.0.0"
556
+ },
557
+ "schema": "guard.command-extension-source.v1"
558
+ }
559
+ ],
560
+ "trust": {
561
+ "classes": {
562
+ "external": [
563
+ "command.agentbridge",
564
+ "command.answerloops",
565
+ "command.appimg",
566
+ "command.blitcp",
567
+ "command.blkcp",
568
+ "command.cloudg",
569
+ "command.cogext",
570
+ "command.cs",
571
+ "command.ctty",
572
+ "command.digline",
573
+ "command.errand",
574
+ "command.faf-cli",
575
+ "command.genclave",
576
+ "command.gitsync",
577
+ "command.google-workspace.gog",
578
+ "command.keibidrop",
579
+ "command.kim",
580
+ "command.kranz",
581
+ "command.mcp-agenthub",
582
+ "command.mcp-asdecided",
583
+ "command.mcp-authyouragent",
584
+ "command.mcp-clipugc",
585
+ "command.mcp-contribos",
586
+ "command.mcp-evernode-mcp",
587
+ "command.mcp-filesystem",
588
+ "command.mcp-instapods",
589
+ "command.mcp-insumer",
590
+ "command.mcp-lattice-talk",
591
+ "command.mcp-loomdesk",
592
+ "command.mcp-pr-ui-compare",
593
+ "command.mcp-reaper",
594
+ "command.mcp-vome-home-assistant",
595
+ "command.mcp-x-reader",
596
+ "command.mcp-xahau-mcp",
597
+ "command.noodle",
598
+ "command.ollama",
599
+ "command.probe",
600
+ "command.remote.essh",
601
+ "command.repo2nb",
602
+ "command.repopy",
603
+ "command.routed",
604
+ "command.skill-base",
605
+ "command.skill-sunset",
606
+ "command.snoboard",
607
+ "command.syngraphe",
608
+ "command.theourgia",
609
+ "command.tui-runner",
610
+ "command.uivoid",
611
+ "command.vttforge",
612
+ "command.xencode",
613
+ "command.xrpl-muse-skill",
614
+ "command.tuda"
615
+ ],
616
+ "first-party": [
617
+ "command.container-runtime",
618
+ "command.data-protection",
619
+ "command.encoded-execution",
620
+ "command.filesystem",
621
+ "command.git",
622
+ "command.guard-self-protection",
623
+ "command.kubernetes-secrets",
624
+ "command.package.go",
625
+ "command.package.jvm",
626
+ "command.package.node",
627
+ "command.package.php",
628
+ "command.package.python",
629
+ "command.package.ruby",
630
+ "command.package.rust",
631
+ "command.package.system",
632
+ "command.shell-mutations",
633
+ "command.system",
634
+ "command.windows"
635
+ ],
636
+ "trusted-library": [
637
+ "command.api-gateway",
638
+ "command.backup.borg",
639
+ "command.backup.rclone",
640
+ "command.backup.restic",
641
+ "command.backup.velero",
642
+ "command.cdn",
643
+ "command.cicd.circleci",
644
+ "command.cicd.github",
645
+ "command.cicd.gitlab",
646
+ "command.cloud.aws",
647
+ "command.cloud.azure",
648
+ "command.cloud.gcp",
649
+ "command.database.mongodb",
650
+ "command.database.mysql",
651
+ "command.database.postgresql",
652
+ "command.database.redis",
653
+ "command.database.sqlite",
654
+ "command.database.supabase",
655
+ "command.dns.aws",
656
+ "command.dns.azure",
657
+ "command.dns.gcp",
658
+ "command.email",
659
+ "command.feature-flags",
660
+ "command.framework.laravel",
661
+ "command.github",
662
+ "command.infrastructure-as-code",
663
+ "command.kubernetes-operations",
664
+ "command.load-balancer",
665
+ "command.messaging.kafka",
666
+ "command.messaging.nats",
667
+ "command.messaging.rabbitmq",
668
+ "command.monitoring",
669
+ "command.payment",
670
+ "command.platform.heroku",
671
+ "command.platform.netlify",
672
+ "command.platform.vercel",
673
+ "command.remote.rsync",
674
+ "command.remote.scp",
675
+ "command.remote.ssh",
676
+ "command.search.elasticsearch",
677
+ "command.storage.aws-s3",
678
+ "command.storage.azure-blob",
679
+ "command.storage.google-cloud",
680
+ "command.storage.minio"
681
+ ]
682
+ },
683
+ "publishers": {
684
+ "hol": {
685
+ "displayName": "Hashgraph Online",
686
+ "id": "hol"
687
+ },
688
+ "hol-curated": {
689
+ "displayName": "HOL curated library",
690
+ "id": "hol-curated"
691
+ }
692
+ },
693
+ "schemaVersion": "guard.extension-trust-class-map.v1"
694
+ }
695
+ },
696
+ "cases": [
697
+ {
698
+ "id": "generate",
699
+ "command": "tuda image generate --prompt \"Product photo\"",
700
+ "enabled_extensions": [
701
+ "command.tuda"
702
+ ],
703
+ "disabled_permissions": [],
704
+ "expected_action": "review",
705
+ "rule_id": "command.tuda.side-effects",
706
+ "expected_effective_segments": [
707
+ 0
708
+ ]
709
+ },
710
+ {
711
+ "id": "edit",
712
+ "command": "tuda image edit --input ./source.png --prompt \"Blue\"",
713
+ "enabled_extensions": [
714
+ "command.tuda"
715
+ ],
716
+ "disabled_permissions": [],
717
+ "expected_action": "review",
718
+ "rule_id": "command.tuda.side-effects",
719
+ "expected_effective_segments": [
720
+ 0
721
+ ]
722
+ },
723
+ {
724
+ "id": "video",
725
+ "command": "tuda video generate --prompt \"Slow pan\"",
726
+ "enabled_extensions": [
727
+ "command.tuda"
728
+ ],
729
+ "disabled_permissions": [],
730
+ "expected_action": "review",
731
+ "rule_id": "command.tuda.side-effects",
732
+ "expected_effective_segments": [
733
+ 0
734
+ ]
735
+ },
736
+ {
737
+ "id": "export",
738
+ "command": "tuda assets export --path assets/a.png --out ./a.png",
739
+ "enabled_extensions": [
740
+ "command.tuda"
741
+ ],
742
+ "disabled_permissions": [],
743
+ "expected_action": "review",
744
+ "rule_id": "command.tuda.side-effects",
745
+ "expected_effective_segments": [
746
+ 0
747
+ ]
748
+ },
749
+ {
750
+ "id": "overwrite",
751
+ "command": "tuda --overwrite assets export --path assets/a.png --out ./a.png",
752
+ "enabled_extensions": [
753
+ "command.tuda"
754
+ ],
755
+ "disabled_permissions": [],
756
+ "expected_action": "review",
757
+ "rule_id": "command.tuda.side-effects",
758
+ "expected_effective_segments": [
759
+ 0
760
+ ]
761
+ },
762
+ {
763
+ "id": "wait-export",
764
+ "command": "tuda --out ./a.png tasks wait task-1",
765
+ "enabled_extensions": [
766
+ "command.tuda"
767
+ ],
768
+ "disabled_permissions": [],
769
+ "expected_action": "review",
770
+ "rule_id": "command.tuda.side-effects",
771
+ "expected_effective_segments": [
772
+ 0
773
+ ]
774
+ },
775
+ {
776
+ "id": "agent-add",
777
+ "command": "tuda --agent codex add",
778
+ "enabled_extensions": [
779
+ "command.tuda"
780
+ ],
781
+ "disabled_permissions": [],
782
+ "expected_action": "review",
783
+ "rule_id": "command.tuda.side-effects",
784
+ "expected_effective_segments": [
785
+ 0
786
+ ]
787
+ },
788
+ {
789
+ "id": "agent-remove",
790
+ "command": "tuda remove --agent claude-code",
791
+ "enabled_extensions": [
792
+ "command.tuda"
793
+ ],
794
+ "disabled_permissions": [],
795
+ "expected_action": "review",
796
+ "rule_id": "command.tuda.side-effects",
797
+ "expected_effective_segments": [
798
+ 0
799
+ ]
800
+ },
801
+ {
802
+ "id": "board-create",
803
+ "command": "tuda boards create --name \"New board\"",
804
+ "enabled_extensions": [
805
+ "command.tuda"
806
+ ],
807
+ "disabled_permissions": [],
808
+ "expected_action": "review",
809
+ "rule_id": "command.tuda.side-effects",
810
+ "expected_effective_segments": [
811
+ 0
812
+ ]
813
+ },
814
+ {
815
+ "id": "call-generate",
816
+ "command": "tuda call generate_image --input '{\"prompt\":\"Blue\"}'",
817
+ "enabled_extensions": [
818
+ "command.tuda"
819
+ ],
820
+ "disabled_permissions": [],
821
+ "expected_action": "review",
822
+ "rule_id": "command.tuda.side-effects",
823
+ "expected_effective_segments": [
824
+ 0
825
+ ]
826
+ },
827
+ {
828
+ "id": "call-mutation",
829
+ "command": "tuda call set_image_version --input '{\"boardId\":\"b\",\"nodeId\":\"n\",\"versionIndex\":1}'",
830
+ "enabled_extensions": [
831
+ "command.tuda"
832
+ ],
833
+ "disabled_permissions": [],
834
+ "expected_action": "review",
835
+ "rule_id": "command.tuda.side-effects",
836
+ "expected_effective_segments": [
837
+ 0
838
+ ]
839
+ },
840
+ {
841
+ "id": "call-read-asset",
842
+ "command": "tuda call read_asset --input '{\"path\":\"assets/private.png\"}'",
843
+ "enabled_extensions": [
844
+ "command.tuda"
845
+ ],
846
+ "disabled_permissions": [],
847
+ "expected_action": "review",
848
+ "rule_id": "command.tuda.side-effects",
849
+ "expected_effective_segments": [
850
+ 0
851
+ ]
852
+ },
853
+ {
854
+ "id": "unknown-call",
855
+ "command": "tuda call future_operation --input '{}'",
856
+ "enabled_extensions": [
857
+ "command.tuda"
858
+ ],
859
+ "disabled_permissions": [],
860
+ "expected_action": "review",
861
+ "rule_id": "command.tuda.side-effects",
862
+ "expected_effective_segments": [
863
+ 0
864
+ ]
865
+ },
866
+ {
867
+ "id": "unknown-command",
868
+ "command": "tuda future mutate",
869
+ "enabled_extensions": [
870
+ "command.tuda"
871
+ ],
872
+ "disabled_permissions": [],
873
+ "expected_action": "review",
874
+ "rule_id": "command.tuda.side-effects",
875
+ "expected_effective_segments": [
876
+ 0
877
+ ]
878
+ },
879
+ {
880
+ "id": "status",
881
+ "command": "tuda status",
882
+ "enabled_extensions": [
883
+ "command.tuda"
884
+ ],
885
+ "disabled_permissions": [],
886
+ "expected_action": "review",
887
+ "rule_id": "command.tuda.side-effects",
888
+ "expected_effective_segments": []
889
+ },
890
+ {
891
+ "id": "boards",
892
+ "command": "tuda --json boards list",
893
+ "enabled_extensions": [
894
+ "command.tuda"
895
+ ],
896
+ "disabled_permissions": [],
897
+ "expected_action": "review",
898
+ "rule_id": "command.tuda.side-effects",
899
+ "expected_effective_segments": []
900
+ },
901
+ {
902
+ "id": "assets",
903
+ "command": "tuda assets list",
904
+ "enabled_extensions": [
905
+ "command.tuda"
906
+ ],
907
+ "disabled_permissions": [],
908
+ "expected_action": "review",
909
+ "rule_id": "command.tuda.side-effects",
910
+ "expected_effective_segments": []
911
+ },
912
+ {
913
+ "id": "versions",
914
+ "command": "tuda boards show b",
915
+ "enabled_extensions": [
916
+ "command.tuda"
917
+ ],
918
+ "disabled_permissions": [],
919
+ "expected_action": "review",
920
+ "rule_id": "command.tuda.side-effects",
921
+ "expected_effective_segments": []
922
+ },
923
+ {
924
+ "id": "wait-read",
925
+ "command": "tuda tasks wait task-1",
926
+ "enabled_extensions": [
927
+ "command.tuda"
928
+ ],
929
+ "disabled_permissions": [],
930
+ "expected_action": "review",
931
+ "rule_id": "command.tuda.side-effects",
932
+ "expected_effective_segments": []
933
+ },
934
+ {
935
+ "id": "call-read",
936
+ "command": "tuda --json call get_board --input '{\"boardId\":\"b\"}'",
937
+ "enabled_extensions": [
938
+ "command.tuda"
939
+ ],
940
+ "disabled_permissions": [],
941
+ "expected_action": "review",
942
+ "rule_id": "command.tuda.side-effects",
943
+ "expected_effective_segments": []
944
+ },
945
+ {
946
+ "id": "tools",
947
+ "command": "tuda tools list",
948
+ "enabled_extensions": [
949
+ "command.tuda"
950
+ ],
951
+ "disabled_permissions": [],
952
+ "expected_action": "review",
953
+ "rule_id": "command.tuda.side-effects",
954
+ "expected_effective_segments": []
955
+ },
956
+ {
957
+ "id": "leading-provider",
958
+ "command": "tuda --provider foo image generate --prompt \"Blue\"",
959
+ "enabled_extensions": [
960
+ "command.tuda"
961
+ ],
962
+ "disabled_permissions": [],
963
+ "expected_action": "review",
964
+ "rule_id": "command.tuda.side-effects",
965
+ "expected_effective_segments": [
966
+ 0
967
+ ]
968
+ },
969
+ {
970
+ "id": "interspersed-options",
971
+ "command": "tuda image --provider foo generate --prompt \"Blue\"",
972
+ "enabled_extensions": [
973
+ "command.tuda"
974
+ ],
975
+ "disabled_permissions": [],
976
+ "expected_action": "review",
977
+ "rule_id": "command.tuda.side-effects",
978
+ "expected_effective_segments": [
979
+ 0
980
+ ]
981
+ },
982
+ {
983
+ "id": "path-spaces",
984
+ "command": "\"/Applications/Tuda App/tuda\" image generate --prompt \"Blue\"",
985
+ "enabled_extensions": [
986
+ "command.tuda"
987
+ ],
988
+ "disabled_permissions": [],
989
+ "expected_action": "review",
990
+ "rule_id": "command.tuda.side-effects",
991
+ "expected_effective_segments": [
992
+ 0
993
+ ]
994
+ },
995
+ {
996
+ "id": "windows-exe",
997
+ "command": "tuda.exe image generate --prompt blue",
998
+ "enabled_extensions": [
999
+ "command.tuda"
1000
+ ],
1001
+ "disabled_permissions": [],
1002
+ "expected_action": "review",
1003
+ "rule_id": "command.tuda.side-effects",
1004
+ "expected_effective_segments": [
1005
+ 0
1006
+ ]
1007
+ },
1008
+ {
1009
+ "id": "wrapper",
1010
+ "command": "env tuda image generate --prompt blue",
1011
+ "enabled_extensions": [
1012
+ "command.tuda"
1013
+ ],
1014
+ "disabled_permissions": [],
1015
+ "expected_action": "block",
1016
+ "rule_id": "command.tuda.side-effects",
1017
+ "expected_effective_segments": []
1018
+ },
1019
+ {
1020
+ "id": "pipeline",
1021
+ "command": "tuda image generate --prompt blue | cat",
1022
+ "enabled_extensions": [
1023
+ "command.tuda"
1024
+ ],
1025
+ "disabled_permissions": [],
1026
+ "expected_action": "review",
1027
+ "rule_id": "command.tuda.side-effects",
1028
+ "expected_effective_segments": [
1029
+ 0
1030
+ ]
1031
+ },
1032
+ {
1033
+ "id": "compound",
1034
+ "command": "tuda boards list; tuda image generate --prompt blue",
1035
+ "enabled_extensions": [
1036
+ "command.tuda"
1037
+ ],
1038
+ "disabled_permissions": [],
1039
+ "expected_action": "review",
1040
+ "rule_id": "command.tuda.side-effects",
1041
+ "expected_effective_segments": [
1042
+ 1
1043
+ ]
1044
+ },
1045
+ {
1046
+ "id": "app-override",
1047
+ "command": "tuda --app-path ./other status",
1048
+ "enabled_extensions": [
1049
+ "command.tuda"
1050
+ ],
1051
+ "disabled_permissions": [],
1052
+ "expected_action": "review",
1053
+ "rule_id": "command.tuda.side-effects",
1054
+ "expected_effective_segments": [
1055
+ 0
1056
+ ]
1057
+ },
1058
+ {
1059
+ "id": "help-word",
1060
+ "command": "tuda help",
1061
+ "enabled_extensions": [
1062
+ "command.tuda"
1063
+ ],
1064
+ "disabled_permissions": [],
1065
+ "expected_action": "review",
1066
+ "rule_id": "command.tuda.side-effects",
1067
+ "expected_effective_segments": []
1068
+ },
1069
+ {
1070
+ "id": "inactive",
1071
+ "command": "tuda image generate --prompt blue",
1072
+ "enabled_extensions": [],
1073
+ "disabled_permissions": [],
1074
+ "expected_action": "review",
1075
+ "rule_id": "command.tuda.side-effects",
1076
+ "expected_effective_segments": []
1077
+ },
1078
+ {
1079
+ "id": "permission-disabled",
1080
+ "command": "tuda image generate --prompt blue",
1081
+ "enabled_extensions": [
1082
+ "command.tuda"
1083
+ ],
1084
+ "disabled_permissions": [
1085
+ "command.tuda.permission.side-effects"
1086
+ ],
1087
+ "expected_action": "block",
1088
+ "rule_id": "command.tuda.side-effects",
1089
+ "expected_effective_segments": [
1090
+ 0
1091
+ ]
1092
+ },
1093
+ {
1094
+ "id": "unrelated",
1095
+ "command": "echo tuda image generate",
1096
+ "enabled_extensions": [
1097
+ "command.tuda"
1098
+ ],
1099
+ "disabled_permissions": [],
1100
+ "expected_action": "allow",
1101
+ "rule_id": "command.tuda.side-effects",
1102
+ "expected_effective_segments": []
1103
+ },
1104
+ {
1105
+ "id": "call-video-poll",
1106
+ "command": "tuda call get_video_generation_status --input '{\"videoGenerationId\":\"v\"}'",
1107
+ "enabled_extensions": [
1108
+ "command.tuda"
1109
+ ],
1110
+ "disabled_permissions": [],
1111
+ "expected_action": "review",
1112
+ "rule_id": "command.tuda.side-effects",
1113
+ "expected_effective_segments": [
1114
+ 0
1115
+ ]
1116
+ },
1117
+ {
1118
+ "id": "task-video-get",
1119
+ "command": "tuda tasks get v --kind video",
1120
+ "enabled_extensions": [
1121
+ "command.tuda"
1122
+ ],
1123
+ "disabled_permissions": [],
1124
+ "expected_action": "review",
1125
+ "rule_id": "command.tuda.side-effects",
1126
+ "expected_effective_segments": [
1127
+ 0
1128
+ ]
1129
+ },
1130
+ {
1131
+ "id": "task-video-wait",
1132
+ "command": "tuda --kind video tasks wait v",
1133
+ "enabled_extensions": [
1134
+ "command.tuda"
1135
+ ],
1136
+ "disabled_permissions": [],
1137
+ "expected_action": "review",
1138
+ "rule_id": "command.tuda.side-effects",
1139
+ "expected_effective_segments": [
1140
+ 0
1141
+ ]
1142
+ }
1143
+ ]
1144
+ }