aspera-cli 4.27.0 → 4.27.2

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 (142) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +46 -1
  4. data/CONTRIBUTING.md +1 -7
  5. data/TODO.md +50 -0
  6. data/docs/README.md +709 -489
  7. data/lib/aspera/agent/base.rb +10 -2
  8. data/lib/aspera/agent/connect.rb +7 -7
  9. data/lib/aspera/agent/desktop.rb +3 -3
  10. data/lib/aspera/agent/direct.rb +48 -19
  11. data/lib/aspera/agent/factory.rb +3 -3
  12. data/lib/aspera/agent/httpgw.rb +55 -14
  13. data/lib/aspera/agent/node.rb +2 -2
  14. data/lib/aspera/agent/transferd.rb +12 -12
  15. data/lib/aspera/api/aoc.rb +28 -28
  16. data/lib/aspera/api/cos_node.rb +10 -9
  17. data/lib/aspera/api/faspex.rb +2 -2
  18. data/lib/aspera/api/httpgw.rb +20 -20
  19. data/lib/aspera/api/node.rb +31 -53
  20. data/lib/aspera/ascmd.rb +13 -13
  21. data/lib/aspera/ascp/installation.rb +43 -36
  22. data/lib/aspera/ascp/management.rb +6 -6
  23. data/lib/aspera/assert.rb +12 -13
  24. data/lib/aspera/cli/ascp_actions.rb +7 -7
  25. data/lib/aspera/cli/async_transfer_store.rb +49 -5
  26. data/lib/aspera/cli/bootstrapper.rb +9 -9
  27. data/lib/aspera/cli/command_registry.rb +1 -1
  28. data/lib/aspera/cli/command_spec.rb +6 -3
  29. data/lib/aspera/cli/context.rb +3 -3
  30. data/lib/aspera/cli/extended_value.rb +26 -26
  31. data/lib/aspera/cli/formatter.rb +76 -54
  32. data/lib/aspera/cli/gem_checker.rb +1 -1
  33. data/lib/aspera/cli/hints.rb +2 -2
  34. data/lib/aspera/cli/http.rb +22 -29
  35. data/lib/aspera/cli/mailer.rb +7 -7
  36. data/lib/aspera/cli/mcp_tool.rb +31 -4
  37. data/lib/aspera/cli/option_declarator.rb +77 -0
  38. data/lib/aspera/cli/options.schema.yaml +273 -3
  39. data/lib/aspera/cli/parser.rb +539 -280
  40. data/lib/aspera/cli/plugins/alee.rb +1 -1
  41. data/lib/aspera/cli/plugins/aoc.rb +303 -314
  42. data/lib/aspera/cli/plugins/ats.rb +25 -21
  43. data/lib/aspera/cli/plugins/base.rb +357 -186
  44. data/lib/aspera/cli/plugins/basic_auth.rb +0 -12
  45. data/lib/aspera/cli/plugins/config.rb +76 -73
  46. data/lib/aspera/cli/plugins/console.rb +8 -8
  47. data/lib/aspera/cli/plugins/cos.rb +4 -3
  48. data/lib/aspera/cli/plugins/factory.rb +2 -2
  49. data/lib/aspera/cli/plugins/faspex5.rb +259 -248
  50. data/lib/aspera/cli/plugins/faspio.rb +7 -2
  51. data/lib/aspera/cli/plugins/httpgw.rb +1 -1
  52. data/lib/aspera/cli/plugins/mcp.rb +11 -11
  53. data/lib/aspera/cli/plugins/node.rb +227 -283
  54. data/lib/aspera/cli/plugins/orchestrator.rb +23 -23
  55. data/lib/aspera/cli/plugins/preview.rb +61 -64
  56. data/lib/aspera/cli/plugins/server.rb +36 -31
  57. data/lib/aspera/cli/plugins/shares.rb +174 -135
  58. data/lib/aspera/cli/preset_actions.rb +39 -19
  59. data/lib/aspera/cli/preset_manager.rb +74 -32
  60. data/lib/aspera/cli/result.rb +18 -16
  61. data/lib/aspera/cli/runner.rb +75 -39
  62. data/lib/aspera/cli/secret_finder.rb +1 -1
  63. data/lib/aspera/cli/sync_actions.rb +36 -35
  64. data/lib/aspera/cli/terminal_formatter.rb +2 -2
  65. data/lib/aspera/cli/transfer_actions.rb +17 -10
  66. data/lib/aspera/cli/transfer_agent.rb +44 -44
  67. data/lib/aspera/cli/transfer_progress.rb +7 -7
  68. data/lib/aspera/cli/vault_manager.rb +34 -12
  69. data/lib/aspera/cli/version.rb +1 -1
  70. data/lib/aspera/cli/wizard.rb +17 -20
  71. data/lib/aspera/colors.rb +3 -3
  72. data/lib/aspera/command_line_builder.rb +17 -16
  73. data/lib/aspera/command_line_converter.rb +1 -1
  74. data/lib/aspera/coverage.rb +1 -2
  75. data/lib/aspera/data_repository.rb +1 -1
  76. data/lib/aspera/dot_container.rb +8 -8
  77. data/lib/aspera/environment.rb +13 -13
  78. data/lib/aspera/faspex_gw.rb +4 -4
  79. data/lib/aspera/faspex_postproc.rb +14 -9
  80. data/lib/aspera/graphql.rb +4 -2
  81. data/lib/aspera/hash_ext.rb +2 -2
  82. data/lib/aspera/json_rpc/client.rb +1 -1
  83. data/lib/aspera/keychain/base.rb +10 -3
  84. data/lib/aspera/keychain/encrypted_hash.rb +92 -17
  85. data/lib/aspera/keychain/factory.rb +17 -5
  86. data/lib/aspera/keychain/hashicorp_vault.rb +1 -1
  87. data/lib/aspera/keychain/macos_security.rb +23 -25
  88. data/lib/aspera/keychain/one_password_api.rb +86 -0
  89. data/lib/aspera/keychain/one_password_base.rb +34 -0
  90. data/lib/aspera/keychain/one_password_cli.rb +98 -0
  91. data/lib/aspera/link_header.rb +2 -2
  92. data/lib/aspera/log.rb +13 -13
  93. data/lib/aspera/markdown.rb +5 -5
  94. data/lib/aspera/nagios.rb +8 -8
  95. data/lib/aspera/node_simulator.rb +33 -27
  96. data/lib/aspera/oauth/base.rb +4 -5
  97. data/lib/aspera/oauth/boot.rb +3 -3
  98. data/lib/aspera/oauth/factory.rb +5 -5
  99. data/lib/aspera/oauth/jwt.rb +5 -7
  100. data/lib/aspera/oauth/web.rb +4 -4
  101. data/lib/aspera/persistency_action_once.rb +4 -4
  102. data/lib/aspera/persistency_folder.rb +8 -8
  103. data/lib/aspera/preview/file_types.rb +4 -4
  104. data/lib/aspera/preview/generator.rb +49 -46
  105. data/lib/aspera/preview/options.rb +3 -2
  106. data/lib/aspera/preview/terminal.rb +5 -5
  107. data/lib/aspera/preview/utils.rb +65 -18
  108. data/lib/aspera/products/connect.rb +2 -2
  109. data/lib/aspera/products/desktop.rb +1 -1
  110. data/lib/aspera/products/other.rb +2 -2
  111. data/lib/aspera/products/transferd.rb +3 -3
  112. data/lib/aspera/proxy_auto_config.rb +10 -10
  113. data/lib/aspera/rest.rb +149 -115
  114. data/lib/aspera/rest_error_analyzer.rb +3 -3
  115. data/lib/aspera/rest_list.rb +10 -9
  116. data/lib/aspera/schema/IBM Aspera Node API-4.4.6.yaml +6232 -0
  117. data/lib/aspera/schema/IBM Aspera faspio Gateway API-1.0.0.yaml +249 -0
  118. data/lib/aspera/schema/IBM Aspera on Cloud API-0.2.6-enhanced.yaml +39 -0
  119. data/lib/aspera/schema/IBM_Aspera_Shares.yaml +4653 -0
  120. data/lib/aspera/schema/documentation.rb +17 -11
  121. data/lib/aspera/schema/reader.rb +78 -4
  122. data/lib/aspera/schema/registry.rb +26 -7
  123. data/lib/aspera/secret_hider.rb +5 -5
  124. data/lib/aspera/ssh.rb +64 -31
  125. data/lib/aspera/ssl.rb +3 -3
  126. data/lib/aspera/sync/database.rb +2 -2
  127. data/lib/aspera/sync/operations.rb +13 -13
  128. data/lib/aspera/temp_file_manager.rb +24 -4
  129. data/lib/aspera/transfer/faux_file.rb +2 -2
  130. data/lib/aspera/transfer/parameters.rb +15 -15
  131. data/lib/aspera/transfer/resumer.rb +9 -9
  132. data/lib/aspera/transfer/spec.rb +1 -1
  133. data/lib/aspera/transfer/spec.schema.yaml +1 -0
  134. data/lib/aspera/uri_reader.rb +52 -15
  135. data/lib/aspera/web_auth.rb +6 -5
  136. data/lib/aspera/web_server_simple.rb +9 -9
  137. data/lib/aspera/yaml.rb +4 -4
  138. data.tar.gz.sig +0 -0
  139. metadata +10 -4
  140. metadata.gz.sig +0 -0
  141. data/lib/aspera/cli/plugins/faspex.rb +0 -576
  142. data/lib/aspera/transfer/uri.rb +0 -56
@@ -29,6 +29,69 @@ components:
29
29
  type: boolean
30
30
  description: Show passwords and secrets in logs.
31
31
  default: false
32
+ McpServerOptions:
33
+ type: object
34
+ description: MCP server configuration for the `mcp server` command.
35
+ properties:
36
+ transport:
37
+ type: string
38
+ description: Transport used by the MCP server.
39
+ enum: [stdio, http]
40
+ default: stdio
41
+ extra_args:
42
+ type: array
43
+ description: Flags prepended to every `ascli` command.
44
+ items:
45
+ type: string
46
+ max_text_bytes:
47
+ type: integer
48
+ description: Maximum number of bytes for JSON text content in list results.
49
+ default: 100000
50
+ max_line_bytes:
51
+ type: integer
52
+ description: Maximum JSON frame size for stdio transport.
53
+ default: 4194304
54
+ port:
55
+ type: integer
56
+ description: TCP port for HTTP transport.
57
+ default: 3000
58
+ bind:
59
+ type: string
60
+ description: Bind address for HTTP transport.
61
+ default: 127.0.0.1
62
+ stateless:
63
+ type: boolean
64
+ description: Run HTTP transport in stateless mode.
65
+ default: false
66
+ allowed_origins:
67
+ type: array
68
+ description: Allowed HTTP origin values.
69
+ items:
70
+ type: string
71
+ allowed_hosts:
72
+ type: array
73
+ description: Allowed HTTP host values.
74
+ items:
75
+ type: string
76
+ session_idle_timeout:
77
+ type: integer
78
+ description: HTTP session idle timeout in seconds.
79
+ max_sessions:
80
+ type: integer
81
+ description: Maximum number of HTTP sessions.
82
+ instructions:
83
+ type: string
84
+ description: Instructions shown to the AI client.
85
+ description:
86
+ type: string
87
+ description: Description advertised by the MCP server.
88
+ protocol_version:
89
+ type: string
90
+ description: MCP protocol version, for example `2024-11-05`.
91
+ validate_tool_call_arguments:
92
+ type: boolean
93
+ description: Validate MCP tool call arguments.
94
+ default: true
32
95
  DirectAgentOptions:
33
96
  type: object
34
97
  description: Parameters for the `ascp` transfer agent.
@@ -354,6 +417,38 @@ components:
354
417
  name:
355
418
  type: string
356
419
  description: Name of the keychain to use.
420
+ VaultOnePasswordOptions:
421
+ type: object
422
+ description: 1Password secret store (Connect REST API or CLI).
423
+ required:
424
+ - type
425
+ - source
426
+ properties:
427
+ type:
428
+ type: string
429
+ description: Vault type selector.
430
+ enum: [1password]
431
+ source:
432
+ type: string
433
+ description: Backend source. Use `api` for the Connect REST API, `cli` for the `op` CLI.
434
+ enum: [api, cli]
435
+ default: api
436
+ url:
437
+ type: string
438
+ description: Base URL of the 1Password Connect server (required when `source` is `api`).
439
+ example: "http://localhost:8080"
440
+ vault_id:
441
+ type: string
442
+ description: ID of the 1Password vault to use (required when `source` is `api`).
443
+ token:
444
+ type: string
445
+ description: Bearer token for the Connect API (required when `source` is `api`). Defaults to the value of `vault_password`.
446
+ vault:
447
+ type: string
448
+ description: Name or ID of the 1Password vault to use with the CLI (used when `source` is `cli`). Uses the default vault if omitted.
449
+ account:
450
+ type: string
451
+ description: Account shorthand for `op` (used when `source` is `cli`). Uses the default account if omitted.
357
452
  VaultFileOptions:
358
453
  type: object
359
454
  description: Encrypted file secret store.
@@ -370,6 +465,27 @@ components:
370
465
  Path to the encrypted vault file.
371
466
  Relative paths are resolved from the configuration folder.
372
467
  default: vault.bin
468
+ VaultSecret:
469
+ type: object
470
+ description: Secret entry in the vault
471
+ required:
472
+ - label
473
+ properties:
474
+ label:
475
+ type: string
476
+ description: Unique identifier for this secret entry
477
+ username:
478
+ type: string
479
+ description: Username associated with the secret
480
+ password:
481
+ type: string
482
+ description: Secret value
483
+ url:
484
+ type: string
485
+ description: URL associated with the secret
486
+ description:
487
+ type: string
488
+ description: Human-readable description of this secret
373
489
  VaultOptions:
374
490
  title: Secret vault configuration
375
491
  description: Secret vault configuration. Set `type` to select the vault backend.
@@ -377,12 +493,14 @@ components:
377
493
  - $ref: "#/components/schemas/VaultHashicorpOptions"
378
494
  - $ref: "#/components/schemas/VaultSystemOptions"
379
495
  - $ref: "#/components/schemas/VaultFileOptions"
496
+ - $ref: "#/components/schemas/VaultOnePasswordOptions"
380
497
  discriminator:
381
498
  propertyName: type
382
499
  mapping:
383
- vault: "#/components/schemas/VaultHashicorpOptions"
384
- system: "#/components/schemas/VaultSystemOptions"
385
- file: "#/components/schemas/VaultFileOptions"
500
+ vault: "#/components/schemas/VaultHashicorpOptions"
501
+ system: "#/components/schemas/VaultSystemOptions"
502
+ file: "#/components/schemas/VaultFileOptions"
503
+ 1password: "#/components/schemas/VaultOnePasswordOptions"
386
504
  ImageOptions:
387
505
  type: object
388
506
  description: Options for displaying images and thumbnails in the terminal.
@@ -437,3 +555,155 @@ components:
437
555
  If `true`, creates a `<ID>.info.json` sidecar file inside the folder
438
556
  containing package metadata.
439
557
  default: false
558
+ NodeBearerTokenOptions:
559
+ type: object
560
+ description: >-
561
+ JWT payload used to generate an Aspera Node bearer token (`node bearer_token`).
562
+ `user_id` is the only mandatory field.
563
+ The CLI strips the `_validity` and `_scope` convenience keys before signing;
564
+ remaining fields are embedded verbatim in the token.
565
+ required:
566
+ - user_id
567
+ properties:
568
+ user_id:
569
+ type: string
570
+ description: Identifier of the user for whom the token is generated.
571
+ example: jdoe
572
+ _validity:
573
+ type: integer
574
+ description: Token lifetime in seconds (convenience key, removed before signing).
575
+ default: 86400
576
+ _scope:
577
+ type: string
578
+ description: >-
579
+ Scope shorthand used to build the `scope` field (convenience key, removed before signing).
580
+ Maps to `node.<access_key>:<scope>`.
581
+ enum: [user, admin]
582
+ default: user
583
+ scope:
584
+ type: string
585
+ description: >-
586
+ Full scope string. Computed automatically from `_scope` when absent.
587
+ Example: `node::ik-00000000-0000-0000-0000-000000000000:user`.
588
+ auth_type:
589
+ type: string
590
+ description: Authentication type embedded in the token.
591
+ default: access_key
592
+ expires_at:
593
+ type: string
594
+ description: >-
595
+ Token expiry timestamp in ISO 8601 format (`YYYY-MM-DDTHH:MM:SSZ`).
596
+ Computed automatically from `_validity` when absent.
597
+ example: "2030-01-01T00:00:00Z"
598
+ NodeSimulatorOptions:
599
+ type: object
600
+ description: >-
601
+ Configuration for the embedded Node API simulator (`node simulator`).
602
+ The simulator starts a local WEBrick server that answers `/ops/transfers`,
603
+ `/ops/transfers/{id}`, `/files/browse`, and `/info` — sufficient to test
604
+ CLI commands against a live Node API without a real HSTS instance.
605
+ properties:
606
+ url:
607
+ type: string
608
+ description: >-
609
+ Address and port the simulator listens on.
610
+ Use `https://` with `cert`/`key` for TLS.
611
+ default: http://localhost:8080
612
+ cert:
613
+ type: string
614
+ description: >-
615
+ Path to the TLS certificate file.
616
+ Accepted formats: PEM (`.pem`) or PKCS12 (`.p12` / `.pfx`).
617
+ example: /path/to/cert.pem
618
+ key:
619
+ type: string
620
+ description: >-
621
+ Path to the PEM private key file, or the PKCS12 passphrase when `cert` is a `.p12`/`.pfx` file.
622
+ example: /path/to/key.pem
623
+ chain:
624
+ type: string
625
+ description: Path to the PEM certificate chain file (appended as extra chain certificates).
626
+ example: /path/to/chain.pem
627
+ browse_root:
628
+ type: string
629
+ description: >-
630
+ Root directory the simulator is allowed to expose via `/files/browse`.
631
+ Requests for paths outside this directory are rejected.
632
+ Defaults to the current working directory.
633
+ example: /data/aspera
634
+ NodeTelemetryOptions:
635
+ type: object
636
+ description: >-
637
+ Configuration for the telemetry reporter (`node telemetry`).
638
+ The command periodically queries `ops/transfers?active_only=true` and sends
639
+ an OpenTelemetry gauge metric to an Instana backend.
640
+ required:
641
+ - url
642
+ - key
643
+ properties:
644
+ url:
645
+ type: string
646
+ description: Base URL of the Instana backend (without `/v1`).
647
+ example: https://my-instana.example.com
648
+ key:
649
+ type: string
650
+ description: Instana API key sent in the `x-instana-key` header.
651
+ example: my-instana-api-key
652
+ interval:
653
+ type: number
654
+ format: float
655
+ description: >-
656
+ Polling interval in seconds. Use `0` for a single-shot run (no loop).
657
+ default: 10
658
+ hostname:
659
+ type: string
660
+ description: >-
661
+ Value sent in the `x-instana-host` header.
662
+ Defaults to the local machine's hostname.
663
+ example: hsts-prod-01
664
+ TableOptions:
665
+ type: object
666
+ description: Terminal table rendering options.
667
+ properties:
668
+ pivot:
669
+ type: string
670
+ description: Control how an object list is displayed (no/yes/single).
671
+ enum: ['no', 'yes', 'single']
672
+ default: 'no'
673
+ OutOptions:
674
+ type: object
675
+ description: Output rendering options (dot-notation sub-properties).
676
+ properties:
677
+ format:
678
+ type: string
679
+ description: Output format.
680
+ enum: [text, nagios, ruby, json, jsonpp, yaml, table, csv, image]
681
+ default: table
682
+ level:
683
+ type: string
684
+ description: Output verbosity level (which information to display).
685
+ enum: [info, data, error]
686
+ default: data
687
+ file:
688
+ type: string
689
+ description: Destination file for results (use `-` for stdout).
690
+ fields:
691
+ description: >-
692
+ Comma-separated list of fields to display, or a special value:
693
+ `ALL` for all fields, `DEF` for default fields.
694
+ Prefix a field name with `-` to exclude it.
695
+ select:
696
+ type: object
697
+ description: Select only matching items from a list (field/value filter or lambda).
698
+ table:
699
+ $ref: "#/components/schemas/TableOptions"
700
+ flat:
701
+ type: boolean
702
+ description: Display deep hash values as additional top-level keys.
703
+ default: true
704
+ secrets:
705
+ type: boolean
706
+ description: Show secrets in command output.
707
+ default: false
708
+ img:
709
+ $ref: "#/components/schemas/ImageOptions"