@relayfile/sdk 0.10.63 → 0.10.65

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,1682 @@
1
+ [
2
+ {
3
+ "name": "setup",
4
+ "description": "Sign in, connect an integration, and mount the workspace",
5
+ "options": [
6
+ {
7
+ "flags": "--cloud-api-url <url>",
8
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
9
+ },
10
+ {
11
+ "flags": "--cloud-token <token>",
12
+ "description": "Relayfile Cloud access token; skips browser login when set"
13
+ },
14
+ {
15
+ "flags": "--workspace <name>",
16
+ "description": "workspace name to create"
17
+ },
18
+ {
19
+ "flags": "--provider <provider>",
20
+ "description": "integration provider to connect; use none to skip"
21
+ },
22
+ {
23
+ "flags": "--backend <backend>",
24
+ "description": "integration backend to request (nango or composio)"
25
+ },
26
+ {
27
+ "flags": "--local-dir <dir>",
28
+ "description": "local mount directory"
29
+ },
30
+ {
31
+ "flags": "--no-open",
32
+ "description": "print browser URLs instead of opening them",
33
+ "defaultValue": false
34
+ },
35
+ {
36
+ "flags": "--skip-mount",
37
+ "description": "finish after setup without starting the mount process",
38
+ "defaultValue": false
39
+ },
40
+ {
41
+ "flags": "--once",
42
+ "description": "run one mount sync cycle and exit",
43
+ "defaultValue": false
44
+ },
45
+ {
46
+ "flags": "--login-timeout <duration>",
47
+ "description": "cloud login timeout",
48
+ "defaultValue": "5m0s"
49
+ },
50
+ {
51
+ "flags": "--connect-timeout <duration>",
52
+ "description": "integration connection timeout",
53
+ "defaultValue": "5m0s"
54
+ }
55
+ ]
56
+ },
57
+ {
58
+ "name": "login",
59
+ "description": "Sign in via agent-relay cloud login (or --api-key for self-hosted)",
60
+ "options": [
61
+ {
62
+ "flags": "--server <url>",
63
+ "description": "relayfile server URL (only used with --api-key)"
64
+ },
65
+ {
66
+ "flags": "--token <token>",
67
+ "description": "relayfile API token"
68
+ },
69
+ {
70
+ "flags": "--cloud-api-url <url>",
71
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
72
+ },
73
+ {
74
+ "flags": "--cloud-token <token>",
75
+ "description": "Relayfile Cloud access token; skips browser login when set"
76
+ },
77
+ {
78
+ "flags": "--api-key",
79
+ "description": "use the legacy API-key flow against --server instead of the cloud browser login",
80
+ "defaultValue": false
81
+ },
82
+ {
83
+ "flags": "--no-open",
84
+ "description": "print the cloud sign-in URL instead of opening it",
85
+ "defaultValue": false
86
+ },
87
+ {
88
+ "flags": "--login-timeout <duration>",
89
+ "description": "cloud login timeout",
90
+ "defaultValue": "5m0s"
91
+ },
92
+ {
93
+ "flags": "--workspace <name>",
94
+ "description": "workspace name or id to refresh; defaults to the active workspace"
95
+ },
96
+ {
97
+ "flags": "--skip-workspace-refresh",
98
+ "description": "sign into the cloud only; do not refresh the workspace token",
99
+ "defaultValue": false
100
+ },
101
+ {
102
+ "flags": "--provision-messaging-only",
103
+ "description": "create a separate Relayfile-backed workspace when the active Agent Relay workspace is messaging-only",
104
+ "defaultValue": false
105
+ }
106
+ ]
107
+ },
108
+ {
109
+ "name": "logout",
110
+ "description": "Clear Relayfile credentials from this machine"
111
+ },
112
+ {
113
+ "name": "workspace",
114
+ "description": "Create, join, select via agent-relay, list, show current, or delete locally tracked workspaces",
115
+ "subcommands": [
116
+ {
117
+ "name": "create",
118
+ "description": "Create a workspace on the relayfile server",
119
+ "args": [
120
+ {
121
+ "name": "name",
122
+ "description": "workspace name",
123
+ "required": true
124
+ }
125
+ ],
126
+ "options": [
127
+ {
128
+ "flags": "--token <token>",
129
+ "description": "relayfile token override"
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ "name": "join",
135
+ "description": "Join an existing workspace by id and track it locally",
136
+ "args": [
137
+ {
138
+ "name": "workspace-id",
139
+ "description": "workspace id to join",
140
+ "required": true
141
+ }
142
+ ],
143
+ "options": [
144
+ {
145
+ "flags": "--cloud-api-url <url>",
146
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
147
+ },
148
+ {
149
+ "flags": "--cloud-token <token>",
150
+ "description": "Relayfile Cloud access token; skips browser login when set"
151
+ },
152
+ {
153
+ "flags": "--name <name>",
154
+ "description": "local workspace name"
155
+ },
156
+ {
157
+ "flags": "--write",
158
+ "description": "request read/write workspace token scopes",
159
+ "defaultValue": false
160
+ },
161
+ {
162
+ "flags": "--no-open",
163
+ "description": "print browser URLs instead of opening them",
164
+ "defaultValue": false
165
+ },
166
+ {
167
+ "flags": "--login-timeout <duration>",
168
+ "description": "cloud login timeout",
169
+ "defaultValue": "5m0s"
170
+ }
171
+ ]
172
+ },
173
+ {
174
+ "name": "use",
175
+ "description": "Select the active workspace for later commands",
176
+ "args": [
177
+ {
178
+ "name": "name",
179
+ "description": "workspace name or id",
180
+ "required": true
181
+ }
182
+ ]
183
+ },
184
+ {
185
+ "name": "list",
186
+ "description": "List locally tracked workspaces",
187
+ "options": [
188
+ {
189
+ "flags": "--server <url>",
190
+ "description": "relayfile server URL override"
191
+ },
192
+ {
193
+ "flags": "--token <token>",
194
+ "description": "relayfile token override"
195
+ },
196
+ {
197
+ "flags": "--names-only",
198
+ "description": "print bare workspace names without an active marker",
199
+ "defaultValue": false
200
+ }
201
+ ]
202
+ },
203
+ {
204
+ "name": "current",
205
+ "description": "Show the active workspace",
206
+ "options": [
207
+ {
208
+ "flags": "--token <token>",
209
+ "description": "relayfile token override"
210
+ },
211
+ {
212
+ "flags": "--verbose",
213
+ "description": "include workspace id and selection source",
214
+ "defaultValue": false
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "name": "view",
220
+ "description": "Manage read-only aliases into a registered workspace mirror",
221
+ "subcommands": [
222
+ {
223
+ "name": "add",
224
+ "description": "Create an alias directory pointing into the canonical mirror",
225
+ "args": [
226
+ {
227
+ "name": "remote-path",
228
+ "description": "remote path to expose",
229
+ "required": true
230
+ },
231
+ {
232
+ "name": "local-dir",
233
+ "description": "local alias directory",
234
+ "required": true
235
+ }
236
+ ],
237
+ "options": [
238
+ {
239
+ "flags": "--workspace <name>",
240
+ "description": "workspace name or id"
241
+ },
242
+ {
243
+ "flags": "--replace",
244
+ "description": "replace an existing relayfile view symlink",
245
+ "defaultValue": false
246
+ }
247
+ ]
248
+ },
249
+ {
250
+ "name": "list",
251
+ "description": "List alias directories registered for a workspace",
252
+ "options": [
253
+ {
254
+ "flags": "--workspace <name>",
255
+ "description": "workspace name or id"
256
+ },
257
+ {
258
+ "flags": "--json",
259
+ "description": "emit JSON",
260
+ "defaultValue": false
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "name": "remove",
266
+ "description": "Remove an alias directory",
267
+ "args": [
268
+ {
269
+ "name": "local-dir",
270
+ "description": "local alias directory",
271
+ "required": true
272
+ }
273
+ ],
274
+ "options": [
275
+ {
276
+ "flags": "--workspace <name>",
277
+ "description": "workspace name or id"
278
+ }
279
+ ]
280
+ }
281
+ ]
282
+ },
283
+ {
284
+ "name": "status",
285
+ "description": "Show sync status for a workspace",
286
+ "args": [
287
+ {
288
+ "name": "workspace",
289
+ "description": "workspace name or id; defaults to the active workspace",
290
+ "required": false
291
+ }
292
+ ],
293
+ "options": [
294
+ {
295
+ "flags": "--workspace <name>",
296
+ "description": "workspace name or id"
297
+ },
298
+ {
299
+ "flags": "--json",
300
+ "description": "emit JSON",
301
+ "defaultValue": false
302
+ }
303
+ ]
304
+ },
305
+ {
306
+ "name": "delete",
307
+ "description": "Delete a locally tracked workspace",
308
+ "args": [
309
+ {
310
+ "name": "name",
311
+ "description": "workspace name or id",
312
+ "required": true
313
+ }
314
+ ],
315
+ "options": [
316
+ {
317
+ "flags": "--yes",
318
+ "description": "skip confirmation prompt",
319
+ "defaultValue": false
320
+ }
321
+ ]
322
+ }
323
+ ]
324
+ },
325
+ {
326
+ "name": "integration",
327
+ "description": "Connect, discover, list, disconnect, or adopt workspace integrations",
328
+ "subcommands": [
329
+ {
330
+ "name": "connect",
331
+ "description": "Connect a provider integration to a workspace",
332
+ "args": [
333
+ {
334
+ "name": "provider",
335
+ "description": "provider id, e.g. github or linear",
336
+ "required": true
337
+ }
338
+ ],
339
+ "options": [
340
+ {
341
+ "flags": "--workspace <name>",
342
+ "description": "workspace name or id"
343
+ },
344
+ {
345
+ "flags": "--cloud-api-url <url>",
346
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
347
+ },
348
+ {
349
+ "flags": "--backend <backend>",
350
+ "description": "integration backend to request (nango or composio)"
351
+ },
352
+ {
353
+ "flags": "--no-open",
354
+ "description": "print the hosted URL instead of opening it",
355
+ "defaultValue": false
356
+ },
357
+ {
358
+ "flags": "--timeout <duration>",
359
+ "description": "integration readiness timeout",
360
+ "defaultValue": "5m0s"
361
+ },
362
+ {
363
+ "flags": "--wait-sync",
364
+ "description": "wait for initial sync before returning",
365
+ "defaultValue": false
366
+ }
367
+ ]
368
+ },
369
+ {
370
+ "name": "available",
371
+ "description": "List providers available to connect",
372
+ "aliases": [
373
+ "catalog",
374
+ "providers"
375
+ ],
376
+ "options": [
377
+ {
378
+ "flags": "--cloud-api-url <url>",
379
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
380
+ },
381
+ {
382
+ "flags": "--backend <backend>",
383
+ "description": "filter by backend (nango or composio)"
384
+ },
385
+ {
386
+ "flags": "--search <query>",
387
+ "description": "search provider id, display name, category, or backend"
388
+ },
389
+ {
390
+ "flags": "--json",
391
+ "description": "emit JSON",
392
+ "defaultValue": false
393
+ },
394
+ {
395
+ "flags": "--refresh",
396
+ "description": "refresh the cached provider catalog",
397
+ "defaultValue": false
398
+ }
399
+ ]
400
+ },
401
+ {
402
+ "name": "search",
403
+ "description": "Search the provider catalog",
404
+ "args": [
405
+ {
406
+ "name": "query",
407
+ "description": "search query",
408
+ "required": true
409
+ }
410
+ ],
411
+ "options": [
412
+ {
413
+ "flags": "--cloud-api-url <url>",
414
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
415
+ },
416
+ {
417
+ "flags": "--backend <backend>",
418
+ "description": "filter by backend (nango or composio)"
419
+ },
420
+ {
421
+ "flags": "--json",
422
+ "description": "emit JSON",
423
+ "defaultValue": false
424
+ },
425
+ {
426
+ "flags": "--refresh",
427
+ "description": "refresh the cached provider catalog",
428
+ "defaultValue": false
429
+ }
430
+ ]
431
+ },
432
+ {
433
+ "name": "list",
434
+ "description": "List a workspace's connected integrations",
435
+ "options": [
436
+ {
437
+ "flags": "--workspace <name>",
438
+ "description": "workspace name or id"
439
+ },
440
+ {
441
+ "flags": "--json",
442
+ "description": "emit JSON",
443
+ "defaultValue": false
444
+ },
445
+ {
446
+ "flags": "--cloud-api-url <url>",
447
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
448
+ },
449
+ {
450
+ "flags": "--cloud-token <token>",
451
+ "description": "Relayfile Cloud access token"
452
+ }
453
+ ]
454
+ },
455
+ {
456
+ "name": "disconnect",
457
+ "description": "Disconnect a provider integration",
458
+ "args": [
459
+ {
460
+ "name": "provider",
461
+ "description": "provider id",
462
+ "required": true
463
+ }
464
+ ],
465
+ "options": [
466
+ {
467
+ "flags": "--workspace <name>",
468
+ "description": "workspace name or id"
469
+ },
470
+ {
471
+ "flags": "--cloud-api-url <url>",
472
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
473
+ },
474
+ {
475
+ "flags": "--yes",
476
+ "description": "skip confirmation",
477
+ "defaultValue": false
478
+ }
479
+ ]
480
+ },
481
+ {
482
+ "name": "adopt",
483
+ "description": "Adopt an existing Nango connection as a workspace integration",
484
+ "args": [
485
+ {
486
+ "name": "provider",
487
+ "description": "provider id",
488
+ "required": true
489
+ }
490
+ ],
491
+ "options": [
492
+ {
493
+ "flags": "--workspace <name>",
494
+ "description": "workspace name or id"
495
+ },
496
+ {
497
+ "flags": "--cloud-api-url <url>",
498
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
499
+ },
500
+ {
501
+ "flags": "--connection-id <id>",
502
+ "description": "Nango connection id to adopt (required)"
503
+ },
504
+ {
505
+ "flags": "--provider-config-key <key>",
506
+ "description": "optional Nango providerConfigKey override"
507
+ },
508
+ {
509
+ "flags": "--yes",
510
+ "description": "skip confirmation",
511
+ "defaultValue": false
512
+ }
513
+ ]
514
+ },
515
+ {
516
+ "name": "set-metadata",
517
+ "description": "Set provider connection metadata as KEY=VALUE pairs",
518
+ "args": [
519
+ {
520
+ "name": "provider",
521
+ "description": "provider id",
522
+ "required": true
523
+ },
524
+ {
525
+ "name": "assignments",
526
+ "description": "one or more KEY=VALUE metadata assignments",
527
+ "required": true,
528
+ "variadic": true
529
+ }
530
+ ],
531
+ "options": [
532
+ {
533
+ "flags": "--workspace <name>",
534
+ "description": "workspace name or id"
535
+ },
536
+ {
537
+ "flags": "--cloud-api-url <url>",
538
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
539
+ },
540
+ {
541
+ "flags": "--yes",
542
+ "description": "skip confirmation",
543
+ "defaultValue": false
544
+ }
545
+ ]
546
+ },
547
+ {
548
+ "name": "bind",
549
+ "description": "Bind a provider resource or path glob to a relay channel",
550
+ "args": [
551
+ {
552
+ "name": "provider",
553
+ "description": "provider id",
554
+ "required": false
555
+ },
556
+ {
557
+ "name": "resource",
558
+ "description": "provider resource or path glob",
559
+ "required": false
560
+ }
561
+ ],
562
+ "options": [
563
+ {
564
+ "flags": "--list",
565
+ "description": "list active relay bindings as JSON",
566
+ "defaultValue": false
567
+ },
568
+ {
569
+ "flags": "--json",
570
+ "description": "accepted for consistency with other JSON-emitting integration commands",
571
+ "defaultValue": false
572
+ },
573
+ {
574
+ "flags": "--channel <channel>",
575
+ "description": "relay channel to receive provider records"
576
+ },
577
+ {
578
+ "flags": "--webhook <id>",
579
+ "description": "RelayCast inbound webhook id"
580
+ },
581
+ {
582
+ "flags": "--webhook-token <token>",
583
+ "description": "RelayCast inbound webhook token"
584
+ },
585
+ {
586
+ "flags": "--subscription <id>",
587
+ "description": "relay integration subscription id"
588
+ },
589
+ {
590
+ "flags": "--webhook-subscription <id>",
591
+ "description": "relayfile-cloud inbound webhook subscription id"
592
+ },
593
+ {
594
+ "flags": "--webhook-subscription-workspace <id>",
595
+ "description": "workspace the webhook subscription was created in (pairs with --webhook-subscription)"
596
+ }
597
+ ]
598
+ },
599
+ {
600
+ "name": "resolve-path",
601
+ "description": "Resolve a provider resource to its relayfile path",
602
+ "args": [
603
+ {
604
+ "name": "provider",
605
+ "description": "provider id",
606
+ "required": true
607
+ },
608
+ {
609
+ "name": "resource",
610
+ "description": "provider resource identifier",
611
+ "required": true
612
+ }
613
+ ],
614
+ "options": [
615
+ {
616
+ "flags": "--json",
617
+ "description": "emit JSON",
618
+ "defaultValue": false
619
+ }
620
+ ]
621
+ },
622
+ {
623
+ "name": "unbind",
624
+ "description": "Remove a relay binding for a provider",
625
+ "args": [
626
+ {
627
+ "name": "provider",
628
+ "description": "provider id",
629
+ "required": true
630
+ },
631
+ {
632
+ "name": "resource",
633
+ "description": "path glob or resource to unbind; may be passed as --resource instead",
634
+ "required": false
635
+ }
636
+ ],
637
+ "options": [
638
+ {
639
+ "flags": "--resource <resource>",
640
+ "description": "path glob/resource to unbind"
641
+ }
642
+ ]
643
+ },
644
+ {
645
+ "name": "writeback-secret",
646
+ "description": "Print the writeback secret for a bound relay channel",
647
+ "options": [
648
+ {
649
+ "flags": "--workspace <name>",
650
+ "description": "workspace name or id"
651
+ },
652
+ {
653
+ "flags": "--channel <channel>",
654
+ "description": "relay channel the binding delivers to"
655
+ },
656
+ {
657
+ "flags": "--json",
658
+ "description": "emit JSON",
659
+ "defaultValue": false
660
+ }
661
+ ]
662
+ }
663
+ ]
664
+ },
665
+ {
666
+ "name": "ops",
667
+ "description": "List or replay dead-lettered writeback ops",
668
+ "subcommands": [
669
+ {
670
+ "name": "list",
671
+ "description": "List dead-lettered writeback ops",
672
+ "options": [
673
+ {
674
+ "flags": "--workspace <name>",
675
+ "description": "workspace name or id"
676
+ },
677
+ {
678
+ "flags": "--json",
679
+ "description": "emit JSON",
680
+ "defaultValue": false
681
+ },
682
+ {
683
+ "flags": "--no-refresh",
684
+ "description": "skip refreshing the local mirror from the server",
685
+ "defaultValue": false
686
+ },
687
+ {
688
+ "flags": "--server <url>",
689
+ "description": "relayfile server URL override"
690
+ },
691
+ {
692
+ "flags": "--token <token>",
693
+ "description": "relayfile token override"
694
+ }
695
+ ]
696
+ },
697
+ {
698
+ "name": "replay",
699
+ "description": "Replay one dead-lettered writeback op",
700
+ "args": [
701
+ {
702
+ "name": "op-id",
703
+ "description": "dead-lettered operation id",
704
+ "required": true
705
+ }
706
+ ],
707
+ "options": [
708
+ {
709
+ "flags": "--workspace <name>",
710
+ "description": "workspace name or id"
711
+ },
712
+ {
713
+ "flags": "--cloud-api-url <url>",
714
+ "description": "Relayfile Cloud API URL (default: $RELAYFILE_CLOUD_API_URL or https://agentrelay.com/cloud)"
715
+ }
716
+ ]
717
+ }
718
+ ]
719
+ },
720
+ {
721
+ "name": "writeback",
722
+ "description": "Inspect or retry local writeback failures",
723
+ "subcommands": [
724
+ {
725
+ "name": "list",
726
+ "description": "List local writeback items by state",
727
+ "options": [
728
+ {
729
+ "flags": "--state <state>",
730
+ "description": "writeback state: pending or dead"
731
+ },
732
+ {
733
+ "flags": "--workspace <name>",
734
+ "description": "workspace name or id"
735
+ },
736
+ {
737
+ "flags": "--json",
738
+ "description": "emit JSON",
739
+ "defaultValue": false
740
+ }
741
+ ]
742
+ },
743
+ {
744
+ "name": "push",
745
+ "description": "Push a local file to the workspace and wait for its receipt",
746
+ "args": [
747
+ {
748
+ "name": "local-path",
749
+ "description": "local mirror path to push",
750
+ "required": true
751
+ }
752
+ ],
753
+ "options": [
754
+ {
755
+ "flags": "--workspace <name>",
756
+ "description": "workspace name or id"
757
+ },
758
+ {
759
+ "flags": "--server <url>",
760
+ "description": "relayfile server URL override"
761
+ },
762
+ {
763
+ "flags": "--token <token>",
764
+ "description": "relayfile token override"
765
+ },
766
+ {
767
+ "flags": "--json",
768
+ "description": "emit JSON",
769
+ "defaultValue": false
770
+ },
771
+ {
772
+ "flags": "--timeout <duration>",
773
+ "description": "operation receipt wait timeout",
774
+ "defaultValue": "1m30s"
775
+ }
776
+ ]
777
+ },
778
+ {
779
+ "name": "update",
780
+ "description": "Update a workspace file from its local mirror copy",
781
+ "args": [
782
+ {
783
+ "name": "local-path",
784
+ "description": "local mirror path to update",
785
+ "required": true
786
+ }
787
+ ],
788
+ "options": [
789
+ {
790
+ "flags": "--workspace <name>",
791
+ "description": "workspace name or id"
792
+ },
793
+ {
794
+ "flags": "--server <url>",
795
+ "description": "relayfile server URL override"
796
+ },
797
+ {
798
+ "flags": "--token <token>",
799
+ "description": "relayfile token override"
800
+ },
801
+ {
802
+ "flags": "--json",
803
+ "description": "emit JSON",
804
+ "defaultValue": false
805
+ },
806
+ {
807
+ "flags": "--timeout <duration>",
808
+ "description": "operation receipt wait timeout",
809
+ "defaultValue": "1m30s"
810
+ }
811
+ ]
812
+ },
813
+ {
814
+ "name": "delete",
815
+ "description": "Delete a workspace file via its local mirror path",
816
+ "args": [
817
+ {
818
+ "name": "local-path",
819
+ "description": "local mirror path to delete",
820
+ "required": true
821
+ }
822
+ ],
823
+ "options": [
824
+ {
825
+ "flags": "--workspace <name>",
826
+ "description": "workspace name or id"
827
+ },
828
+ {
829
+ "flags": "--server <url>",
830
+ "description": "relayfile server URL override"
831
+ },
832
+ {
833
+ "flags": "--token <token>",
834
+ "description": "relayfile token override"
835
+ },
836
+ {
837
+ "flags": "--json",
838
+ "description": "emit JSON",
839
+ "defaultValue": false
840
+ },
841
+ {
842
+ "flags": "--timeout <duration>",
843
+ "description": "operation receipt wait timeout",
844
+ "defaultValue": "1m30s"
845
+ }
846
+ ]
847
+ },
848
+ {
849
+ "name": "status",
850
+ "description": "Show local pending, failed, and dead-lettered writebacks",
851
+ "args": [
852
+ {
853
+ "name": "workspace",
854
+ "description": "workspace name or id; defaults to the active workspace",
855
+ "required": false
856
+ }
857
+ ],
858
+ "options": [
859
+ {
860
+ "flags": "--json",
861
+ "description": "emit JSON",
862
+ "defaultValue": false
863
+ }
864
+ ]
865
+ },
866
+ {
867
+ "name": "retry",
868
+ "description": "Re-enqueue a local dead-lettered writeback op",
869
+ "args": [
870
+ {
871
+ "name": "workspace",
872
+ "description": "workspace name or id; defaults to the active workspace",
873
+ "required": false
874
+ }
875
+ ],
876
+ "options": [
877
+ {
878
+ "flags": "--op-id <id>",
879
+ "description": "dead-lettered operation id (also accepted as --opId)"
880
+ }
881
+ ]
882
+ },
883
+ {
884
+ "name": "skip-stuck",
885
+ "description": "Walk the events cursor past stuck (404) events without waiting the treat-as-deleted timer",
886
+ "args": [
887
+ {
888
+ "name": "workspace",
889
+ "description": "workspace name or id; defaults to the active workspace",
890
+ "required": false
891
+ }
892
+ ],
893
+ "options": [
894
+ {
895
+ "flags": "--workspace <name>",
896
+ "description": "workspace name or id"
897
+ },
898
+ {
899
+ "flags": "--max <n>",
900
+ "description": "maximum number of stuck events to skip (0 = unbounded)",
901
+ "defaultValue": 0
902
+ },
903
+ {
904
+ "flags": "--json",
905
+ "description": "emit JSON",
906
+ "defaultValue": false
907
+ }
908
+ ]
909
+ },
910
+ {
911
+ "name": "sweep-drafts",
912
+ "description": "Remove hand-named draft files left behind under a workspace subtree",
913
+ "args": [
914
+ {
915
+ "name": "workspace",
916
+ "description": "workspace name or id; defaults to the active workspace",
917
+ "required": false
918
+ }
919
+ ],
920
+ "options": [
921
+ {
922
+ "flags": "--path-prefix <prefix>",
923
+ "description": "restrict the sweep to a subtree"
924
+ },
925
+ {
926
+ "flags": "--pattern <glob>",
927
+ "description": "basename glob for hand-named drafts (repeatable), e.g. wb-*.json"
928
+ },
929
+ {
930
+ "flags": "--apply",
931
+ "description": "execute removals (default is a dry run)",
932
+ "defaultValue": false
933
+ },
934
+ {
935
+ "flags": "--json",
936
+ "description": "emit JSON",
937
+ "defaultValue": false
938
+ },
939
+ {
940
+ "flags": "--server <url>",
941
+ "description": "relayfile server URL override"
942
+ },
943
+ {
944
+ "flags": "--token <token>",
945
+ "description": "relayfile token override"
946
+ }
947
+ ]
948
+ }
949
+ ]
950
+ },
951
+ {
952
+ "name": "digest",
953
+ "description": "Regenerate workspace digests",
954
+ "subcommands": [
955
+ {
956
+ "name": "rebuild",
957
+ "description": "Regenerate daily, weekly, or date-stamped digest artifacts",
958
+ "options": [
959
+ {
960
+ "flags": "--window <window>",
961
+ "description": "digest window: today, yesterday, this-week, last-week, or YYYY-MM-DD"
962
+ },
963
+ {
964
+ "flags": "--workspace <name>",
965
+ "description": "workspace name or id"
966
+ },
967
+ {
968
+ "flags": "--json",
969
+ "description": "print machine-readable JSON",
970
+ "defaultValue": false
971
+ }
972
+ ]
973
+ }
974
+ ]
975
+ },
976
+ {
977
+ "name": "pull",
978
+ "description": "Trigger an immediate sync refresh for one or all providers",
979
+ "options": [
980
+ {
981
+ "flags": "--workspace <name>",
982
+ "description": "workspace name or id"
983
+ },
984
+ {
985
+ "flags": "--provider <provider>",
986
+ "description": "provider id (default: refresh all connected providers)"
987
+ },
988
+ {
989
+ "flags": "--reason <text>",
990
+ "description": "free-form reason recorded server-side",
991
+ "defaultValue": "manual"
992
+ },
993
+ {
994
+ "flags": "--server <url>",
995
+ "description": "relayfile server URL override"
996
+ },
997
+ {
998
+ "flags": "--token <token>",
999
+ "description": "relayfile token override"
1000
+ }
1001
+ ]
1002
+ },
1003
+ {
1004
+ "name": "mount",
1005
+ "description": "Mirror a remote workspace to a local directory; add --background to detach",
1006
+ "aliases": [
1007
+ "start",
1008
+ "on"
1009
+ ],
1010
+ "args": [
1011
+ {
1012
+ "name": "workspace",
1013
+ "description": "workspace name or id; defaults to the active workspace",
1014
+ "required": false
1015
+ },
1016
+ {
1017
+ "name": "local-dir",
1018
+ "description": "local mirror directory",
1019
+ "required": false
1020
+ }
1021
+ ],
1022
+ "options": [
1023
+ {
1024
+ "flags": "--server <url>",
1025
+ "description": "relayfile server URL"
1026
+ },
1027
+ {
1028
+ "flags": "--token <token>",
1029
+ "description": "bearer token"
1030
+ },
1031
+ {
1032
+ "flags": "--creds-file <file>",
1033
+ "description": "delegated relayfile credentials file"
1034
+ },
1035
+ {
1036
+ "flags": "--remote-path <path>",
1037
+ "description": "remote root path (may be repeated)"
1038
+ },
1039
+ {
1040
+ "flags": "--paths-file <file>",
1041
+ "description": "file containing remote root paths, as a JSON array or newline-separated list"
1042
+ },
1043
+ {
1044
+ "flags": "--local-layout <layout>",
1045
+ "description": "local directory layout: exact or scoped"
1046
+ },
1047
+ {
1048
+ "flags": "--provider <provider>",
1049
+ "description": "event provider filter"
1050
+ },
1051
+ {
1052
+ "flags": "--state-file <file>",
1053
+ "description": "state file path"
1054
+ },
1055
+ {
1056
+ "flags": "--state-dir <dir>",
1057
+ "description": "directory for private mount state"
1058
+ },
1059
+ {
1060
+ "flags": "--mount-kind <kind>",
1061
+ "description": "private state identity kind: daemon, flush, or initial-sync"
1062
+ },
1063
+ {
1064
+ "flags": "--local-dir <dir>",
1065
+ "description": "local mirror directory"
1066
+ },
1067
+ {
1068
+ "flags": "--mode <mode>",
1069
+ "description": "mount mode: poll (recommended) or fuse"
1070
+ },
1071
+ {
1072
+ "flags": "--interval <duration>",
1073
+ "description": "sync interval"
1074
+ },
1075
+ {
1076
+ "flags": "--interval-jitter <ratio>",
1077
+ "description": "sync interval jitter ratio (0.0-1.0)"
1078
+ },
1079
+ {
1080
+ "flags": "--timeout <duration>",
1081
+ "description": "per-sync timeout"
1082
+ },
1083
+ {
1084
+ "flags": "--bootstrap-timeout <duration>",
1085
+ "description": "hard cap for the one-time/full-tree bootstrap pull (0 = unbounded while making progress)"
1086
+ },
1087
+ {
1088
+ "flags": "--bootstrap-max-files-per-cycle <n>",
1089
+ "description": "maximum files materialized per resumable tree-bootstrap cycle (-1 = legacy unbounded tree behavior)"
1090
+ },
1091
+ {
1092
+ "flags": "--full-pull-min-interval <duration>",
1093
+ "description": "minimum wall-clock interval between completed periodic full-tree audits (-1 disables the time guard)"
1094
+ },
1095
+ {
1096
+ "flags": "--cursor-timeout <duration>",
1097
+ "description": "independent timeout for events-cursor resolution"
1098
+ },
1099
+ {
1100
+ "flags": "--full-reconcile",
1101
+ "description": "force one full reconcile regardless of bootstrap-complete state (escape hatch)"
1102
+ },
1103
+ {
1104
+ "flags": "--websocket",
1105
+ "description": "enable websocket event streaming when available"
1106
+ },
1107
+ {
1108
+ "flags": "--low-memory",
1109
+ "description": "reduce mount memory use by omitting per-file public state and deferring content reads"
1110
+ },
1111
+ {
1112
+ "flags": "--pprof-addr <addr>",
1113
+ "description": "optional pprof listen address, e.g. 127.0.0.1:6060"
1114
+ },
1115
+ {
1116
+ "flags": "--memlog-interval <duration>",
1117
+ "description": "optional interval for logging runtime memory stats"
1118
+ },
1119
+ {
1120
+ "flags": "--background",
1121
+ "description": "detach and keep syncing in the background",
1122
+ "defaultValue": false
1123
+ },
1124
+ {
1125
+ "flags": "--pid-file <file>",
1126
+ "description": "pid file path for background mode"
1127
+ },
1128
+ {
1129
+ "flags": "--log-file <file>",
1130
+ "description": "log file path for background mode"
1131
+ },
1132
+ {
1133
+ "flags": "--daemonized",
1134
+ "description": "internal flag used by relayfile mount --background",
1135
+ "defaultValue": false
1136
+ },
1137
+ {
1138
+ "flags": "--once",
1139
+ "description": "run one sync cycle and exit",
1140
+ "defaultValue": false
1141
+ },
1142
+ {
1143
+ "flags": "--reset-after-clobber",
1144
+ "description": "acknowledge a mount-root clobber and authorize daemon to recreate the directory"
1145
+ },
1146
+ {
1147
+ "flags": "--rehome",
1148
+ "description": "allow re-homing an already-registered workspace mirror to a different LOCAL_DIR",
1149
+ "defaultValue": false
1150
+ }
1151
+ ],
1152
+ "subcommands": [
1153
+ {
1154
+ "name": "checkpoint-seal",
1155
+ "description": "Seal a mount checkpoint for controller-driven cutover",
1156
+ "options": [
1157
+ {
1158
+ "flags": "--root <path>",
1159
+ "description": "absolute local mount root"
1160
+ },
1161
+ {
1162
+ "flags": "--lifecycle-id <id>",
1163
+ "description": "stable controller-persisted cutover lifecycle id"
1164
+ },
1165
+ {
1166
+ "flags": "--session <id>",
1167
+ "description": "live session identifier"
1168
+ },
1169
+ {
1170
+ "flags": "--generation <n>",
1171
+ "description": "strictly increasing migration generation",
1172
+ "defaultValue": 0
1173
+ },
1174
+ {
1175
+ "flags": "--timeout <duration>",
1176
+ "description": "checkpoint deadline",
1177
+ "defaultValue": "30s"
1178
+ },
1179
+ {
1180
+ "flags": "--ttl <duration>",
1181
+ "description": "server receipt TTL"
1182
+ },
1183
+ {
1184
+ "flags": "--json",
1185
+ "description": "emit the machine contract",
1186
+ "defaultValue": false
1187
+ }
1188
+ ],
1189
+ "hidden": true
1190
+ },
1191
+ {
1192
+ "name": "resume-seal",
1193
+ "description": "Resume a sealed mount checkpoint on the destination host",
1194
+ "options": [
1195
+ {
1196
+ "flags": "--root <path>",
1197
+ "description": "absolute local mount root"
1198
+ },
1199
+ {
1200
+ "flags": "--timeout <duration>",
1201
+ "description": "resume readiness deadline"
1202
+ },
1203
+ {
1204
+ "flags": "--json",
1205
+ "description": "emit the machine contract",
1206
+ "defaultValue": false
1207
+ }
1208
+ ],
1209
+ "hidden": true
1210
+ },
1211
+ {
1212
+ "name": "verify-seal",
1213
+ "description": "Verify a resumed mount checkpoint and recover if needed",
1214
+ "options": [
1215
+ {
1216
+ "flags": "--root <path>",
1217
+ "description": "absolute local mount root"
1218
+ },
1219
+ {
1220
+ "flags": "--timeout <duration>",
1221
+ "description": "verification and recovery deadline"
1222
+ },
1223
+ {
1224
+ "flags": "--json",
1225
+ "description": "emit the machine contract",
1226
+ "defaultValue": false
1227
+ }
1228
+ ],
1229
+ "hidden": true
1230
+ },
1231
+ {
1232
+ "name": "handback-seal",
1233
+ "description": "Drain and hand a verified mount back to its original host",
1234
+ "options": [
1235
+ {
1236
+ "flags": "--root <path>",
1237
+ "description": "absolute local mount root"
1238
+ },
1239
+ {
1240
+ "flags": "--timeout <duration>",
1241
+ "description": "final drain and handback deadline"
1242
+ },
1243
+ {
1244
+ "flags": "--json",
1245
+ "description": "emit the machine contract",
1246
+ "defaultValue": false
1247
+ }
1248
+ ],
1249
+ "hidden": true
1250
+ }
1251
+ ]
1252
+ },
1253
+ {
1254
+ "name": "restart",
1255
+ "description": "Stop and start a workspace's mount in one step (--foreground to attach)",
1256
+ "args": [
1257
+ {
1258
+ "name": "workspace",
1259
+ "description": "workspace name or id; defaults to the active workspace",
1260
+ "required": false
1261
+ }
1262
+ ],
1263
+ "options": [
1264
+ {
1265
+ "flags": "--foreground",
1266
+ "description": "run the restarted mount in the foreground instead of detaching",
1267
+ "defaultValue": false
1268
+ }
1269
+ ]
1270
+ },
1271
+ {
1272
+ "name": "supervisor",
1273
+ "description": "Install/uninstall/status launchd (macOS) or systemd (Linux) service for auto-restart",
1274
+ "subcommands": [
1275
+ {
1276
+ "name": "install",
1277
+ "description": "Install the auto-restart service for a workspace mount",
1278
+ "args": [
1279
+ {
1280
+ "name": "workspace",
1281
+ "description": "workspace name or id; defaults to the active workspace",
1282
+ "required": false
1283
+ }
1284
+ ],
1285
+ "options": [
1286
+ {
1287
+ "flags": "--server <url>",
1288
+ "description": "relayfile server URL override"
1289
+ },
1290
+ {
1291
+ "flags": "--token <token>",
1292
+ "description": "relayfile token override"
1293
+ },
1294
+ {
1295
+ "flags": "--provider <provider>",
1296
+ "description": "filter to a specific provider (e.g. linear, notion)"
1297
+ },
1298
+ {
1299
+ "flags": "--path <glob>",
1300
+ "description": "glob path filter (e.g. /linear/issues/**)"
1301
+ },
1302
+ {
1303
+ "flags": "--event <type>",
1304
+ "description": "event type filter: file.created, file.updated, file.deleted"
1305
+ },
1306
+ {
1307
+ "flags": "--run <command>",
1308
+ "description": "shell command per event; supports {{path}}, {{type}}, {{provider}}, {{revision}}, {{event}}"
1309
+ },
1310
+ {
1311
+ "flags": "--format <format>",
1312
+ "description": "output format when --run is not set: text or json",
1313
+ "defaultValue": "text"
1314
+ }
1315
+ ]
1316
+ },
1317
+ {
1318
+ "name": "uninstall",
1319
+ "description": "Remove the auto-restart service",
1320
+ "aliases": [
1321
+ "remove"
1322
+ ]
1323
+ },
1324
+ {
1325
+ "name": "status",
1326
+ "description": "Show the auto-restart service state"
1327
+ }
1328
+ ]
1329
+ },
1330
+ {
1331
+ "name": "tree",
1332
+ "description": "List a remote workspace path",
1333
+ "aliases": [
1334
+ "ls"
1335
+ ],
1336
+ "args": [
1337
+ {
1338
+ "name": "workspace",
1339
+ "description": "workspace name or id; defaults to the active workspace",
1340
+ "required": false
1341
+ },
1342
+ {
1343
+ "name": "path",
1344
+ "description": "remote path to list; defaults to /",
1345
+ "required": false
1346
+ }
1347
+ ],
1348
+ "options": [
1349
+ {
1350
+ "flags": "--server <url>",
1351
+ "description": "relayfile server URL override"
1352
+ },
1353
+ {
1354
+ "flags": "--token <token>",
1355
+ "description": "relayfile token override"
1356
+ },
1357
+ {
1358
+ "flags": "--path <path>",
1359
+ "description": "remote path to list",
1360
+ "defaultValue": "/"
1361
+ },
1362
+ {
1363
+ "flags": "--depth <n>",
1364
+ "description": "tree depth",
1365
+ "defaultValue": 1
1366
+ },
1367
+ {
1368
+ "flags": "--json",
1369
+ "description": "print the raw JSON response",
1370
+ "defaultValue": false
1371
+ }
1372
+ ]
1373
+ },
1374
+ {
1375
+ "name": "read",
1376
+ "description": "Print a remote file's content",
1377
+ "aliases": [
1378
+ "cat"
1379
+ ],
1380
+ "args": [
1381
+ {
1382
+ "name": "workspace",
1383
+ "description": "workspace name or id; defaults to the active workspace",
1384
+ "required": false
1385
+ },
1386
+ {
1387
+ "name": "path",
1388
+ "description": "remote file path (required; the sole positional when no workspace is given)",
1389
+ "required": false
1390
+ }
1391
+ ],
1392
+ "options": [
1393
+ {
1394
+ "flags": "--server <url>",
1395
+ "description": "relayfile server URL override"
1396
+ },
1397
+ {
1398
+ "flags": "--token <token>",
1399
+ "description": "relayfile token override"
1400
+ },
1401
+ {
1402
+ "flags": "--output <file>",
1403
+ "description": "output file path or - for stdout",
1404
+ "defaultValue": "-"
1405
+ },
1406
+ {
1407
+ "flags": "--json",
1408
+ "description": "print the raw JSON response",
1409
+ "defaultValue": false
1410
+ }
1411
+ ]
1412
+ },
1413
+ {
1414
+ "name": "seed",
1415
+ "description": "Upload a directory tree with bulk writes",
1416
+ "args": [
1417
+ {
1418
+ "name": "workspace",
1419
+ "description": "workspace name or id; defaults to the active workspace",
1420
+ "required": false
1421
+ },
1422
+ {
1423
+ "name": "dir",
1424
+ "description": "local directory to upload; defaults to the current directory",
1425
+ "required": false
1426
+ }
1427
+ ],
1428
+ "options": [
1429
+ {
1430
+ "flags": "--server <url>",
1431
+ "description": "relayfile server URL override"
1432
+ },
1433
+ {
1434
+ "flags": "--token <token>",
1435
+ "description": "relayfile token override"
1436
+ }
1437
+ ]
1438
+ },
1439
+ {
1440
+ "name": "export",
1441
+ "description": "Export a workspace as json, tar, or patch",
1442
+ "args": [
1443
+ {
1444
+ "name": "workspace",
1445
+ "description": "workspace name or id; defaults to the active workspace",
1446
+ "required": false
1447
+ }
1448
+ ],
1449
+ "options": [
1450
+ {
1451
+ "flags": "--server <url>",
1452
+ "description": "relayfile server URL override"
1453
+ },
1454
+ {
1455
+ "flags": "--token <token>",
1456
+ "description": "relayfile token override"
1457
+ },
1458
+ {
1459
+ "flags": "--format <format>",
1460
+ "description": "export format: tar, json, or patch",
1461
+ "defaultValue": "json"
1462
+ },
1463
+ {
1464
+ "flags": "--output <file>",
1465
+ "description": "output file path or - for stdout",
1466
+ "defaultValue": "-"
1467
+ }
1468
+ ]
1469
+ },
1470
+ {
1471
+ "name": "status",
1472
+ "description": "Show sync status and local mirror state for a workspace",
1473
+ "args": [
1474
+ {
1475
+ "name": "workspace",
1476
+ "description": "workspace name or id; defaults to the active workspace",
1477
+ "required": false
1478
+ }
1479
+ ],
1480
+ "options": [
1481
+ {
1482
+ "flags": "--server <url>",
1483
+ "description": "relayfile server URL override"
1484
+ },
1485
+ {
1486
+ "flags": "--token <token>",
1487
+ "description": "relayfile token override"
1488
+ },
1489
+ {
1490
+ "flags": "--json",
1491
+ "description": "emit JSON",
1492
+ "defaultValue": false
1493
+ }
1494
+ ]
1495
+ },
1496
+ {
1497
+ "name": "stop",
1498
+ "description": "Stop a background mount",
1499
+ "aliases": [
1500
+ "off"
1501
+ ],
1502
+ "args": [
1503
+ {
1504
+ "name": "workspace",
1505
+ "description": "workspace name or id; defaults to the active workspace",
1506
+ "required": false
1507
+ }
1508
+ ]
1509
+ },
1510
+ {
1511
+ "name": "logs",
1512
+ "description": "Print the background mount log",
1513
+ "args": [
1514
+ {
1515
+ "name": "workspace",
1516
+ "description": "workspace name or id; defaults to the active workspace",
1517
+ "required": false
1518
+ }
1519
+ ],
1520
+ "options": [
1521
+ {
1522
+ "flags": "--lines <n>",
1523
+ "description": "number of lines to print",
1524
+ "defaultValue": 40
1525
+ }
1526
+ ]
1527
+ },
1528
+ {
1529
+ "name": "observer",
1530
+ "description": "Open the hosted file observer for a workspace",
1531
+ "args": [
1532
+ {
1533
+ "name": "workspace",
1534
+ "description": "workspace name or id; defaults to the active workspace",
1535
+ "required": false
1536
+ }
1537
+ ],
1538
+ "options": [
1539
+ {
1540
+ "flags": "--server <url>",
1541
+ "description": "relayfile server URL override"
1542
+ },
1543
+ {
1544
+ "flags": "--token <token>",
1545
+ "description": "relayfile token override"
1546
+ },
1547
+ {
1548
+ "flags": "--url <url>",
1549
+ "description": "observer URL (default: $RELAYFILE_OBSERVER_URL or the hosted observer)"
1550
+ },
1551
+ {
1552
+ "flags": "--no-open",
1553
+ "description": "print the observer URL without opening a browser",
1554
+ "defaultValue": false
1555
+ }
1556
+ ]
1557
+ },
1558
+ {
1559
+ "name": "listen",
1560
+ "description": "Stream workspace file events, optionally running a command per event",
1561
+ "aliases": [
1562
+ "watch"
1563
+ ],
1564
+ "args": [
1565
+ {
1566
+ "name": "workspace",
1567
+ "description": "workspace name or id; defaults to the active workspace",
1568
+ "required": false
1569
+ }
1570
+ ],
1571
+ "options": [
1572
+ {
1573
+ "flags": "--server <url>",
1574
+ "description": "relayfile server URL override"
1575
+ },
1576
+ {
1577
+ "flags": "--token <token>",
1578
+ "description": "relayfile token override"
1579
+ },
1580
+ {
1581
+ "flags": "--provider <provider>",
1582
+ "description": "filter to a specific provider (e.g. linear, notion)"
1583
+ },
1584
+ {
1585
+ "flags": "--path <glob>",
1586
+ "description": "glob path filter (e.g. /linear/issues/**)"
1587
+ },
1588
+ {
1589
+ "flags": "--event <type>",
1590
+ "description": "event type filter: file.created, file.updated, file.deleted"
1591
+ },
1592
+ {
1593
+ "flags": "--run <command>",
1594
+ "description": "shell command per event; supports {{path}}, {{type}}, {{provider}}, {{revision}}, {{event}}"
1595
+ },
1596
+ {
1597
+ "flags": "--format <format>",
1598
+ "description": "output format when --run is not set: text or json",
1599
+ "defaultValue": "text"
1600
+ },
1601
+ {
1602
+ "flags": "--background",
1603
+ "description": "run in background; logs to ~/.relayfile/listen.log",
1604
+ "defaultValue": false
1605
+ },
1606
+ {
1607
+ "flags": "--daemonized",
1608
+ "description": "internal flag used by relayfile listen --background",
1609
+ "defaultValue": false
1610
+ }
1611
+ ]
1612
+ },
1613
+ {
1614
+ "name": "control-plane",
1615
+ "description": "Serve the local relayfile control-plane socket",
1616
+ "subcommands": [
1617
+ {
1618
+ "name": "serve",
1619
+ "description": "Serve the control-plane unix socket",
1620
+ "options": [
1621
+ {
1622
+ "flags": "--sock <path>",
1623
+ "description": "unix socket path (default: the per-user relayfile socket)"
1624
+ }
1625
+ ]
1626
+ }
1627
+ ]
1628
+ },
1629
+ {
1630
+ "name": "dev",
1631
+ "description": "Print workspace context, then stream file events like `listen`",
1632
+ "args": [
1633
+ {
1634
+ "name": "workspace",
1635
+ "description": "workspace name or id; defaults to the active workspace",
1636
+ "required": false
1637
+ }
1638
+ ],
1639
+ "options": [
1640
+ {
1641
+ "flags": "--server <url>",
1642
+ "description": "relayfile server URL override"
1643
+ },
1644
+ {
1645
+ "flags": "--token <token>",
1646
+ "description": "relayfile token override"
1647
+ },
1648
+ {
1649
+ "flags": "--provider <provider>",
1650
+ "description": "filter to a specific provider (e.g. linear, notion)"
1651
+ },
1652
+ {
1653
+ "flags": "--path <glob>",
1654
+ "description": "glob path filter (e.g. /linear/issues/**)"
1655
+ },
1656
+ {
1657
+ "flags": "--event <type>",
1658
+ "description": "event type filter: file.created, file.updated, file.deleted"
1659
+ },
1660
+ {
1661
+ "flags": "--run <command>",
1662
+ "description": "shell command per event; supports {{path}}, {{type}}, {{provider}}, {{revision}}, {{event}}"
1663
+ },
1664
+ {
1665
+ "flags": "--format <format>",
1666
+ "description": "output format when --run is not set: text or json",
1667
+ "defaultValue": "text"
1668
+ },
1669
+ {
1670
+ "flags": "--background",
1671
+ "description": "run in background; logs to ~/.relayfile/listen.log",
1672
+ "defaultValue": false
1673
+ },
1674
+ {
1675
+ "flags": "--daemonized",
1676
+ "description": "internal flag used by relayfile listen --background",
1677
+ "defaultValue": false
1678
+ }
1679
+ ],
1680
+ "hidden": true
1681
+ }
1682
+ ]