Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -758,10 +758,21 @@ tw managed-identities credentials -o my-org -n hpc1 add -l my_linux_user -k ~/.s

## Agents

Run `tw agents -h` to view the supported operations: `list`, `view`, `add`, `update`, `delete`, `enable`, and `disable`. Agents must be enabled for the organization.
Run `tw agents -h` to view the supported operations: `list`, `view`, `add`, `update`, `delete`, `enable`, `disable`, `launch`, and `runs list|view`. Agents must be enabled for the organization.

```bash
tw agents add -w my-org/my-workspace -n triage --instructions-file triage.md
tw agents launch -w my-org/my-workspace -n triage
tw agents runs list -w my-org/my-workspace
```

## Lineage

Run `tw lineage -h` to view the supported operations: `resolve`, `view`, `search`, `upstream`, and `downstream`. Lineage must be enabled for the workspace.

```bash
tw lineage resolve -w my-org/my-workspace --file-path s3://bucket/results/out.bam
tw lineage upstream -w my-org/my-workspace -i <lid>
```

## Audit logs
Expand All @@ -785,7 +796,7 @@ tw audit-logs export --after 2026-09-01T00:00:00Z --before 2026-09-30T23:59:59Z
- `tw runs star|unstar`, `tw runs view log [--next <cursor>]`, and `tw runs delete -i <id>,<id>`.
- `tw pipelines schema`: show a pipeline's parameter schema.
- `tw actions add cron|bucket`.
- `tw studios star|unstar|extend|rename-checkpoint`. `--mount-data-uris` also accepts a folder inside a data link.
- `tw studios star|unstar|extend|logs|rename-checkpoint`. `--mount-data-uris` also accepts a folder inside a data link.
- `tw data-links delete-content|download-script`.
- `tw datasets add --url`, `tw datasets update --url`, and `tw datasets disable-version`.

Expand Down
147 changes: 147 additions & 0 deletions conf/reflect-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,12 @@
"allDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.LineageCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.ManagedIdentitiesCmd",
"queryAllDeclaredMethods":true,
Expand Down Expand Up @@ -469,6 +475,13 @@
"fields":[{"name":"ref"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.agents.LaunchCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"agentRef"}, {"name":"instructions"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.agents.ListCmd",
"queryAllDeclaredMethods":true,
Expand All @@ -490,6 +503,26 @@
"fields":[{"name":"ref"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.agents.runs.ListCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"filter"}, {"name":"paginationOptions"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.agents.runs.RunsCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.agents.runs.ViewCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"id"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.auditlogs.AuditLogsFilterOptions",
"queryAllDeclaredMethods":true,
Expand Down Expand Up @@ -1638,6 +1671,71 @@
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.AbstractLineageCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.commands.lineage.AbstractNavigateCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"lidOptions"}, {"name":"type"}, {"name":"workspace"}]
},
{
"name":"io.seqera.tower.cli.commands.lineage.DownstreamCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.LidOptions",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"lid"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.ResolveCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"source"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.ResolveCmd$Run",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"runName"}, {"name":"sessionId"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.ResolveCmd$Source",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"filePath"}, {"name":"run"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.SearchCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"max"}, {"name":"pageToken"}, {"name":"query"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.UpstreamCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.lineage.ViewCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"lidOptions"}, {"name":"summary"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.managedidentities.AbstractManagedIdentitiesCmd",
"queryAllDeclaredMethods":true,
Expand Down Expand Up @@ -2374,6 +2472,13 @@
"queryAllDeclaredMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.studios.LogsCmd",
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true,
"fields":[{"name":"maxLength"}, {"name":"next"}, {"name":"studioRefOptions"}, {"name":"workspace"}],
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"io.seqera.tower.cli.commands.studios.ParentStudioRefOptions",
"allDeclaredFields":true,
Expand Down Expand Up @@ -2773,6 +2878,24 @@
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.agents.AgentLaunched",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.agents.AgentRunView",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.agents.AgentRunsList",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.agents.AgentUpdated",
"allDeclaredFields":true,
Expand Down Expand Up @@ -3034,6 +3157,24 @@
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.lineage.LineageRecordView",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.lineage.LineageRecordsList",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.lineage.LineageResolved",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.managedidentities.ManagedCredentialsAdded",
"allDeclaredFields":true,
Expand Down Expand Up @@ -3508,6 +3649,12 @@
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.studios.StudioLog",
"allDeclaredFields":true,
"queryAllDeclaredMethods":true,
"queryAllDeclaredConstructors":true
},
{
"name":"io.seqera.tower.cli.responses.studios.StudioStarred",
"allDeclaredFields":true,
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/io/seqera/tower/cli/Tower.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import io.seqera.tower.cli.commands.DatasetsCmd;
import io.seqera.tower.cli.commands.InfoCmd;
import io.seqera.tower.cli.commands.LaunchCmd;
import io.seqera.tower.cli.commands.LineageCmd;
import io.seqera.tower.cli.commands.ManagedIdentitiesCmd;
import io.seqera.tower.cli.commands.MembersCmd;
import io.seqera.tower.cli.commands.OrganizationsCmd;
Expand Down Expand Up @@ -76,6 +77,7 @@
InfoCmd.class,
LabelsCmd.class,
LaunchCmd.class,
LineageCmd.class,
ManagedIdentitiesCmd.class,
MembersCmd.class,
OrganizationsCmd.class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import io.seqera.tower.api.IdentitiesApi;
import io.seqera.tower.api.LabelsApi;
import io.seqera.tower.api.LaunchApi;
import io.seqera.tower.api.LineageApi;
import io.seqera.tower.api.NextflowApi;
import io.seqera.tower.api.OrgsApi;
import io.seqera.tower.api.PipelineSchemasApi;
Expand Down Expand Up @@ -255,6 +256,10 @@ protected LaunchApi launchApi() throws ApiException {
return launchApi == null ? new LaunchApi(apiClient()) : launchApi;
}

protected LineageApi lineageApi() throws ApiException {
return new LineageApi(apiClient());
}

protected NextflowApi nextflowApi() throws ApiException {
return nextflowApi == null ? new NextflowApi(apiClient()) : nextflowApi;
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/io/seqera/tower/cli/commands/AgentsCmd.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@
import io.seqera.tower.cli.commands.agents.DeleteCmd;
import io.seqera.tower.cli.commands.agents.DisableCmd;
import io.seqera.tower.cli.commands.agents.EnableCmd;
import io.seqera.tower.cli.commands.agents.LaunchCmd;
import io.seqera.tower.cli.commands.agents.ListCmd;
import io.seqera.tower.cli.commands.agents.UpdateCmd;
import io.seqera.tower.cli.commands.agents.ViewCmd;
import io.seqera.tower.cli.commands.agents.runs.RunsCmd;
import picocli.CommandLine.Command;

@Command(
Expand All @@ -37,6 +39,8 @@
DeleteCmd.class,
EnableCmd.class,
DisableCmd.class,
LaunchCmd.class,
RunsCmd.class,
}
)
public class AgentsCmd extends AbstractRootCmd {
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/io/seqera/tower/cli/commands/LineageCmd.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright 2021-2026, Seqera.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


package io.seqera.tower.cli.commands;

import io.seqera.tower.cli.commands.lineage.DownstreamCmd;
import io.seqera.tower.cli.commands.lineage.ResolveCmd;
import io.seqera.tower.cli.commands.lineage.SearchCmd;
import io.seqera.tower.cli.commands.lineage.UpstreamCmd;
import io.seqera.tower.cli.commands.lineage.ViewCmd;
import picocli.CommandLine.Command;

@Command(
name = "lineage",
description = "Explore data lineage records. Lineage must be enabled for the workspace.",
subcommands = {
ResolveCmd.class,
ViewCmd.class,
SearchCmd.class,
UpstreamCmd.class,
DownstreamCmd.class,
}
)
public class LineageCmd extends AbstractRootCmd {
}
2 changes: 2 additions & 0 deletions src/main/java/io/seqera/tower/cli/commands/StudiosCmd.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import io.seqera.tower.cli.commands.studios.CheckpointsCmd;
import io.seqera.tower.cli.commands.studios.DeleteCmd;
import io.seqera.tower.cli.commands.studios.ExtendCmd;
import io.seqera.tower.cli.commands.studios.LogsCmd;
import io.seqera.tower.cli.commands.studios.RenameCheckpointCmd;
import io.seqera.tower.cli.commands.studios.StarCmd;
import io.seqera.tower.cli.commands.studios.UnstarCmd;
Expand Down Expand Up @@ -50,6 +51,7 @@
StarCmd.class,
UnstarCmd.class,
ExtendCmd.class,
LogsCmd.class,
}
)
public class StudiosCmd extends AbstractRootCmd {
Expand Down
Loading
Loading