diff --git a/ci.global.json b/ci.global.json
index ce67766b..d20023b3 100644
--- a/ci.global.json
+++ b/ci.global.json
@@ -1,5 +1,5 @@
{
"sdk": {
- "version": "10.0.201"
+ "version": "10.0.203"
}
}
diff --git a/src/Roastery/Roastery.csproj b/src/Roastery/Roastery.csproj
index 8b6a076c..3a9f8487 100644
--- a/src/Roastery/Roastery.csproj
+++ b/src/Roastery/Roastery.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/src/SeqCli/Api/ApiConstants.cs b/src/SeqCli/Api/ApiConstants.cs
index 58e5576b..138382dd 100644
--- a/src/SeqCli/Api/ApiConstants.cs
+++ b/src/SeqCli/Api/ApiConstants.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Api/SeqConnectionFactory.cs b/src/SeqCli/Api/SeqConnectionFactory.cs
index 76c4bf18..1f4c5859 100644
--- a/src/SeqCli/Api/SeqConnectionFactory.cs
+++ b/src/SeqCli/Api/SeqConnectionFactory.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/AppLoader.cs b/src/SeqCli/Apps/AppLoader.cs
index 90872ef2..c0a03ff5 100644
--- a/src/SeqCli/Apps/AppLoader.cs
+++ b/src/SeqCli/Apps/AppLoader.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppDefinition.cs b/src/SeqCli/Apps/Definitions/AppDefinition.cs
index 5c9e1773..2d8a6488 100644
--- a/src/SeqCli/Apps/Definitions/AppDefinition.cs
+++ b/src/SeqCli/Apps/Definitions/AppDefinition.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs b/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
index c8c1223a..4b9741dc 100644
--- a/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
+++ b/src/SeqCli/Apps/Definitions/AppDefinitionFormatter.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppMetadataReader.cs b/src/SeqCli/Apps/Definitions/AppMetadataReader.cs
index 58269661..2bab3789 100644
--- a/src/SeqCli/Apps/Definitions/AppMetadataReader.cs
+++ b/src/SeqCli/Apps/Definitions/AppMetadataReader.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs b/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
index 9ded07b5..15bcd293 100644
--- a/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
+++ b/src/SeqCli/Apps/Definitions/AppPlatformDefinition.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs b/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
index 00ebeb8e..5fdbb82b 100644
--- a/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
+++ b/src/SeqCli/Apps/Definitions/AppSettingDefinition.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppSettingType.cs b/src/SeqCli/Apps/Definitions/AppSettingType.cs
index c2e9175a..e749b641 100644
--- a/src/SeqCli/Apps/Definitions/AppSettingType.cs
+++ b/src/SeqCli/Apps/Definitions/AppSettingType.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Definitions/AppSettingValue.cs b/src/SeqCli/Apps/Definitions/AppSettingValue.cs
index 246a640a..037d4b1d 100644
--- a/src/SeqCli/Apps/Definitions/AppSettingValue.cs
+++ b/src/SeqCli/Apps/Definitions/AppSettingValue.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Hosting/AppActivator.cs b/src/SeqCli/Apps/Hosting/AppActivator.cs
index 7f084174..6c747de6 100644
--- a/src/SeqCli/Apps/Hosting/AppActivator.cs
+++ b/src/SeqCli/Apps/Hosting/AppActivator.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Hosting/AppHost.cs b/src/SeqCli/Apps/Hosting/AppHost.cs
index 09a5c62e..3f48e118 100644
--- a/src/SeqCli/Apps/Hosting/AppHost.cs
+++ b/src/SeqCli/Apps/Hosting/AppHost.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Apps/Hosting/EventFormat.cs b/src/SeqCli/Apps/Hosting/EventFormat.cs
index f9bd960e..1ff23253 100644
--- a/src/SeqCli/Apps/Hosting/EventFormat.cs
+++ b/src/SeqCli/Apps/Hosting/EventFormat.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Command.cs b/src/SeqCli/Cli/Command.cs
index b0ed94df..4b366b49 100644
--- a/src/SeqCli/Cli/Command.cs
+++ b/src/SeqCli/Cli/Command.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/CommandAttribute.cs b/src/SeqCli/Cli/CommandAttribute.cs
index 60facce0..332fcd08 100644
--- a/src/SeqCli/Cli/CommandAttribute.cs
+++ b/src/SeqCli/Cli/CommandAttribute.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/CommandFeature.cs b/src/SeqCli/Cli/CommandFeature.cs
index 80997d58..2be4024f 100644
--- a/src/SeqCli/Cli/CommandFeature.cs
+++ b/src/SeqCli/Cli/CommandFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/CommandLineHost.cs b/src/SeqCli/Cli/CommandLineHost.cs
index d48eb561..8b1298fe 100644
--- a/src/SeqCli/Cli/CommandLineHost.cs
+++ b/src/SeqCli/Cli/CommandLineHost.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/CommandMetadata.cs b/src/SeqCli/Cli/CommandMetadata.cs
index cc7bf027..ae631bf7 100644
--- a/src/SeqCli/Cli/CommandMetadata.cs
+++ b/src/SeqCli/Cli/CommandMetadata.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs b/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
index 5ebbfb08..fe514434 100644
--- a/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
+++ b/src/SeqCli/Cli/Commands/ApiKey/CreateCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs b/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
index 3e2a9dbf..4cd44f5c 100644
--- a/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
+++ b/src/SeqCli/Cli/Commands/ApiKey/ListCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs b/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
index b3789c91..ac5900b8 100644
--- a/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
+++ b/src/SeqCli/Cli/Commands/ApiKey/RemoveCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/App/DefineCommand.cs b/src/SeqCli/Cli/Commands/App/DefineCommand.cs
index 56909bbb..40e2a54f 100644
--- a/src/SeqCli/Cli/Commands/App/DefineCommand.cs
+++ b/src/SeqCli/Cli/Commands/App/DefineCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/App/RunCommand.cs b/src/SeqCli/Cli/Commands/App/RunCommand.cs
index a3590f46..be6542c8 100644
--- a/src/SeqCli/Cli/Commands/App/RunCommand.cs
+++ b/src/SeqCli/Cli/Commands/App/RunCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs b/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
index a23b46bc..5deb9852 100644
--- a/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
+++ b/src/SeqCli/Cli/Commands/Config/LegacyCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018-2021 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs b/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
index 89dc94c1..7d9cc7a2 100644
--- a/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
+++ b/src/SeqCli/Cli/Commands/Dashboard/ListCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs b/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
index c16dc0a9..28c0845c 100644
--- a/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
+++ b/src/SeqCli/Cli/Commands/Dashboard/RemoveCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs b/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
index 4d78f61b..80ed95e9 100644
--- a/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
+++ b/src/SeqCli/Cli/Commands/Dashboard/RenderCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -181,7 +181,7 @@ static string BuildSqlQuery(ChartQueryPart query, DateTime rangeStart, DateTime
foreach (var measurement in query.Measurements)
sql.Select(measurement.Value, measurement.Label);
- sql.FromStream = true;
+ sql.From = query.DataSource.ToString().ToLowerInvariant();
sql.Where($"@Timestamp >= DateTime('{rangeStart:O}')");
sql.Where($"@Timestamp < DateTime('{rangeEnd:O}')");
diff --git a/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs b/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
index 2e9aa26e..8ae6927b 100644
--- a/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
+++ b/src/SeqCli/Cli/Commands/Events/DeleteCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2026 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs b/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
index 38784e73..d660404b 100644
--- a/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
+++ b/src/SeqCli/Cli/Commands/ExpressionIndex/RemoveCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs b/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
index 2a4543ff..306e4dc0 100644
--- a/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
+++ b/src/SeqCli/Cli/Commands/Feed/CreateCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Feed/ListCommand.cs b/src/SeqCli/Cli/Commands/Feed/ListCommand.cs
index d4b15670..f203018f 100644
--- a/src/SeqCli/Cli/Commands/Feed/ListCommand.cs
+++ b/src/SeqCli/Cli/Commands/Feed/ListCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs b/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
index 4710d24f..898b55f0 100644
--- a/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
+++ b/src/SeqCli/Cli/Commands/Feed/RemoveCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs b/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
index fadb3a80..e08fb32c 100644
--- a/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
+++ b/src/SeqCli/Cli/Commands/Forwarder/InstallCommand.cs
@@ -15,7 +15,6 @@
using System;
using System.Diagnostics.CodeAnalysis;
using System.IO;
-using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Threading.Tasks;
using SeqCli.Cli.Features;
diff --git a/src/SeqCli/Cli/Commands/HelpCommand.cs b/src/SeqCli/Cli/Commands/HelpCommand.cs
index fe502899..f926e341 100644
--- a/src/SeqCli/Cli/Commands/HelpCommand.cs
+++ b/src/SeqCli/Cli/Commands/HelpCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Index/ListCommand.cs b/src/SeqCli/Cli/Commands/Index/ListCommand.cs
index 780e510b..9452f36d 100644
--- a/src/SeqCli/Cli/Commands/Index/ListCommand.cs
+++ b/src/SeqCli/Cli/Commands/Index/ListCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs b/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
index 27517e29..da742ed1 100644
--- a/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
+++ b/src/SeqCli/Cli/Commands/Index/SuppressCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/IngestCommand.cs b/src/SeqCli/Cli/Commands/IngestCommand.cs
index 3eb2f822..b965ddb3 100644
--- a/src/SeqCli/Cli/Commands/IngestCommand.cs
+++ b/src/SeqCli/Cli/Commands/IngestCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/LogCommand.cs b/src/SeqCli/Cli/Commands/LogCommand.cs
index a360ba32..6873f9e6 100644
--- a/src/SeqCli/Cli/Commands/LogCommand.cs
+++ b/src/SeqCli/Cli/Commands/LogCommand.cs
@@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/PrintCommand.cs b/src/SeqCli/Cli/Commands/PrintCommand.cs
index 51d845ab..4eca68ec 100644
--- a/src/SeqCli/Cli/Commands/PrintCommand.cs
+++ b/src/SeqCli/Cli/Commands/PrintCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/QueryCommand.cs b/src/SeqCli/Cli/Commands/QueryCommand.cs
index 95b63481..17381bea 100644
--- a/src/SeqCli/Cli/Commands/QueryCommand.cs
+++ b/src/SeqCli/Cli/Commands/QueryCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs b/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
index 5947752d..4c9c5bdb 100644
--- a/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
+++ b/src/SeqCli/Cli/Commands/RetentionPolicy/CreateCommand.cs
@@ -14,6 +14,7 @@
using System;
using System.Threading.Tasks;
+using Seq.Api.Model.Shared;
using Seq.Api.Model.Signals;
using SeqCli.Api;
using SeqCli.Cli.Features;
@@ -26,7 +27,7 @@
namespace SeqCli.Cli.Commands.RetentionPolicy;
[Command("retention", "create", "Create a retention policy",
- Example = "seqcli retention create --after 30d --delete-all-events")]
+ Example = "seqcli retention create --after 30d --data-source stream --delete-all")]
class CreateCommand : Command
{
readonly ConnectionFeature _connection;
@@ -34,7 +35,8 @@ class CreateCommand : Command
readonly StoragePathFeature _storagePath;
string? _afterDuration;
- bool _deleteAllEvents;
+ bool _deleteAll;
+ string? _dataSource;
string? _deleteMatchingSignal;
public CreateCommand()
@@ -43,21 +45,36 @@ public CreateCommand()
"after=",
"A duration after which the policy will delete events, e.g. `7d`",
v => _afterDuration = ArgumentString.Normalize(v));
-
+
Options.Add(
- "delete-all-events",
- "The policy should delete all events (currently the only supported option)",
- _ => _deleteAllEvents = true);
+ "data-source=",
+ "The data source to delete records from (`stream` for log events and traces, or `series` for metrics); defaults to `stream`",
+ v => _dataSource = ArgumentString.Normalize(v));
+
+ Options.Add(
+ "delete-all",
+ "The policy should delete all records in the target data source after the specified duration",
+ _ => _deleteAll = true);
Options.Add(
"delete=",
- "Stream incoming events to this app instance as they're ingested; optionally accepts a signal expression limiting which events should be streamed",
+ "A signal expression identifying events that should be deleted; not supported by the `series` data source",
s =>
{
_deleteMatchingSignal = s;
}
);
-
+
+ // Maintained for compatibility in Seq 2026.x; intended to be retired in 2027.
+ Options.Add(
+ "delete-all-events",
+ "The policy should delete all events from `stream`",
+ _ =>
+ {
+ _deleteAll = true;
+ _dataSource = null;
+ }, hidden: true);
+
_connection = Enable();
_output = Enable();
_storagePath = Enable();
@@ -71,11 +88,11 @@ protected override async Task Run()
SignalExpressionPart? removedSignalExpression;
// Exactly one of `delete-all-events` or `delete` must be specified
- if (_deleteAllEvents)
+ if (_deleteAll)
{
if (!string.IsNullOrEmpty(_deleteMatchingSignal))
{
- Log.Error("Only one of the `delete-all-events` or `delete` options may be specified");
+ Log.Error("Only one of the `--delete-all` or `--delete` options may be specified");
return 1;
}
@@ -83,7 +100,7 @@ protected override async Task Run()
}
else if (string.IsNullOrEmpty(_deleteMatchingSignal))
{
- Log.Error("Either the `delete-all-events` or `delete` options must be specified");
+ Log.Error("One of either the `--delete-all` or `--delete` options must be specified");
return 1;
}
else
@@ -93,15 +110,34 @@ protected override async Task Run()
if (_afterDuration == null)
{
- Log.Error("A duration must be specified using `after`");
+ Log.Error("A duration must be specified using `--after`");
return 1;
}
var duration = DurationMoniker.ToTimeSpan(_afterDuration);
-
+
+ if (_dataSource == null)
+ {
+ Log.Error("Use `--data-source` to specify `stream` or `series` as the retention target");
+ return 1;
+ }
+
+ if (!Enum.TryParse(_dataSource, ignoreCase: true, out DataSource dataSource))
+ {
+ Log.Error("The `--data-source` option supports `stream` and `series`");
+ return 1;
+ }
+
+ if (removedSignalExpression != null && dataSource != DataSource.Stream)
+ {
+ Log.Error("The `--delete` option is only valid when `--data-source` is `stream`");
+ return 1;
+ }
+
var policy = await connection.RetentionPolicies.TemplateAsync();
policy.RetentionTime = duration;
policy.RemovedSignalExpression = removedSignalExpression;
+ policy.DataSource = dataSource;
policy = await connection.RetentionPolicies.AddAsync(policy);
diff --git a/src/SeqCli/Cli/Commands/SearchCommand.cs b/src/SeqCli/Cli/Commands/SearchCommand.cs
index 41a7539b..2d096195 100644
--- a/src/SeqCli/Cli/Commands/SearchCommand.cs
+++ b/src/SeqCli/Cli/Commands/SearchCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs b/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs
index 414d124a..43ef8187 100644
--- a/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs
+++ b/src/SeqCli/Cli/Commands/Signal/CreateCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs b/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs
index d810c8b5..2e0c0741 100644
--- a/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs
+++ b/src/SeqCli/Cli/Commands/Signal/ImportCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Signal/ListCommand.cs b/src/SeqCli/Cli/Commands/Signal/ListCommand.cs
index 24932b36..883d1448 100644
--- a/src/SeqCli/Cli/Commands/Signal/ListCommand.cs
+++ b/src/SeqCli/Cli/Commands/Signal/ListCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs b/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs
index 75a5a397..06f65a60 100644
--- a/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs
+++ b/src/SeqCli/Cli/Commands/Signal/RemoveCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/TailCommand.cs b/src/SeqCli/Cli/Commands/TailCommand.cs
index 26510b84..75fa33b4 100644
--- a/src/SeqCli/Cli/Commands/TailCommand.cs
+++ b/src/SeqCli/Cli/Commands/TailCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/User/CreateCommand.cs b/src/SeqCli/Cli/Commands/User/CreateCommand.cs
index e670b9f7..c2adc9c0 100644
--- a/src/SeqCli/Cli/Commands/User/CreateCommand.cs
+++ b/src/SeqCli/Cli/Commands/User/CreateCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/User/ListCommand.cs b/src/SeqCli/Cli/Commands/User/ListCommand.cs
index 52965047..62ae3979 100644
--- a/src/SeqCli/Cli/Commands/User/ListCommand.cs
+++ b/src/SeqCli/Cli/Commands/User/ListCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/User/RemoveCommand.cs b/src/SeqCli/Cli/Commands/User/RemoveCommand.cs
index 8616fafa..c855c2ad 100644
--- a/src/SeqCli/Cli/Commands/User/RemoveCommand.cs
+++ b/src/SeqCli/Cli/Commands/User/RemoveCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/VersionCommand.cs b/src/SeqCli/Cli/Commands/VersionCommand.cs
index 411d7523..69050da1 100644
--- a/src/SeqCli/Cli/Commands/VersionCommand.cs
+++ b/src/SeqCli/Cli/Commands/VersionCommand.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Commands/View/CreateCommand.cs b/src/SeqCli/Cli/Commands/View/CreateCommand.cs
new file mode 100644
index 00000000..dfecae50
--- /dev/null
+++ b/src/SeqCli/Cli/Commands/View/CreateCommand.cs
@@ -0,0 +1,112 @@
+// Copyright © Datalust and contributors.
+//
+// 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.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Seq.Api.Model.Shared;
+using Seq.Api.Model.Signals;
+using SeqCli.Api;
+using SeqCli.Cli.Features;
+using SeqCli.Config;
+using SeqCli.Util;
+using Serilog;
+
+namespace SeqCli.Cli.Commands.View;
+
+[Command("view", "create", "Create a metrics view",
+ Example = "seqcli view create -t 'API' -g '@Scope.name' -f \"@Resource.service.name = 'seq_cafe_web'\"")]
+class CreateCommand : Command
+{
+ readonly ConnectionFeature _connection;
+ readonly OutputFormatFeature _output;
+ readonly StoragePathFeature _storagePath;
+
+ string? _title, _description, _filter;
+ readonly List _groups = [];
+ bool _isProtected;
+
+ public CreateCommand()
+ {
+ Options.Add(
+ "t=|title=",
+ "A title for the view",
+ t => _title = ArgumentString.Normalize(t));
+
+ Options.Add(
+ "description=",
+ "A description for the view",
+ d => _description = ArgumentString.Normalize(d));
+
+ Options.Add(
+ "f=|filter=",
+ "Expression filter to associate with the view",
+ f => _filter = ArgumentString.Normalize(f));
+
+ Options.Add(
+ "g=|group=",
+ "Group key expression to associate with the view; this argument can be used multiple times",
+ c => _groups.Add(ArgumentString.Normalize(c) ?? throw new ArgumentException("Group keys require a value.")));
+
+ Options.Add(
+ "protected",
+ "Specify that the view is editable only by administrators",
+ _ => _isProtected = true);
+
+ _connection = Enable();
+ _output = Enable();
+ _storagePath = Enable();
+ }
+
+ protected override async Task Run()
+ {
+ var config = RuntimeConfigurationLoader.Load(_storagePath);
+ var connection = SeqConnectionFactory.Connect(_connection, config);
+
+ if (string.IsNullOrEmpty(_title))
+ {
+ Log.Error("A title must be specified");
+ return 1;
+ }
+
+ var view = await connection.Views.TemplateAsync();
+ view.OwnerId = null;
+
+ view.Title = _title;
+ view.Description = _description;
+ view.IsProtected = _isProtected;
+
+ if (_filter != null)
+ {
+ view.Filters = new[]
+ {
+ new DescriptiveFilterPart
+ {
+ Filter = (await connection.Expressions.ToStrictAsync(_filter)).StrictExpression,
+ FilterNonStrict = _filter
+ }
+ }.ToList();
+ }
+
+ foreach (var group in _groups)
+ view.GroupKeyExpressions.Add(group);
+
+ view = await connection.Views.AddAsync(view);
+
+ _output.GetOutputFormat(config).WriteEntity(view);
+
+ return 0;
+ }
+}
\ No newline at end of file
diff --git a/src/SeqCli/Cli/Commands/View/ListCommand.cs b/src/SeqCli/Cli/Commands/View/ListCommand.cs
new file mode 100644
index 00000000..5acc0f0a
--- /dev/null
+++ b/src/SeqCli/Cli/Commands/View/ListCommand.cs
@@ -0,0 +1,56 @@
+// Copyright © Datalust and contributors.
+//
+// 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.
+
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using SeqCli.Api;
+using SeqCli.Cli.Features;
+using SeqCli.Config;
+
+namespace SeqCli.Cli.Commands.View;
+
+[Command("view", "list", "List available metrics views", Example="seqcli view list")]
+class ListCommand : Command
+{
+ readonly EntityIdentityFeature _entityIdentity;
+ readonly ConnectionFeature _connection;
+ readonly OutputFormatFeature _output;
+ readonly EntityOwnerFeature _entityOwner;
+ readonly StoragePathFeature _storagePath;
+
+ public ListCommand()
+ {
+ _entityIdentity = Enable(new EntityIdentityFeature("view", "list"));
+ _entityOwner = Enable(new EntityOwnerFeature("view", "list", "listed", _entityIdentity));
+ _output = Enable();
+ _storagePath = Enable();
+ _connection = Enable();
+ }
+
+ protected override async Task Run()
+ {
+ var config = RuntimeConfigurationLoader.Load(_storagePath);
+ var connection = SeqConnectionFactory.Connect(_connection, config);
+
+ var list = _entityIdentity.Id != null ? [await connection.Views.FindAsync(_entityIdentity.Id)]
+ :
+ (await connection.Views.ListAsync(ownerId: _entityOwner.OwnerId, shared: _entityOwner.IncludeShared))
+ .Where(signal => _entityIdentity.Title == null || _entityIdentity.Title == signal.Title);
+
+ _output.GetOutputFormat(config).ListEntities(list);
+
+ return 0;
+ }
+}
\ No newline at end of file
diff --git a/src/SeqCli/Cli/Commands/View/RemoveCommand.cs b/src/SeqCli/Cli/Commands/View/RemoveCommand.cs
new file mode 100644
index 00000000..b5569e11
--- /dev/null
+++ b/src/SeqCli/Cli/Commands/View/RemoveCommand.cs
@@ -0,0 +1,70 @@
+// Copyright © Datalust and contributors.
+//
+// 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.
+
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using SeqCli.Api;
+using SeqCli.Cli.Features;
+using SeqCli.Config;
+using Serilog;
+
+namespace SeqCli.Cli.Commands.View;
+
+[Command("view", "remove", "Remove a metrics view from the server",
+ Example = "seqcli view remove -t 'Test View'")]
+class RemoveCommand : Command
+{
+ readonly EntityIdentityFeature _entityIdentity;
+ readonly ConnectionFeature _connection;
+ readonly EntityOwnerFeature _entityOwner;
+ readonly StoragePathFeature _storagePath;
+
+ public RemoveCommand()
+ {
+ _entityIdentity = Enable(new EntityIdentityFeature("view", "remove"));
+ _entityOwner = Enable(new EntityOwnerFeature("view", "remove", "removed", _entityIdentity));
+ _connection = Enable();
+ _storagePath = Enable();
+ }
+
+ protected override async Task Run()
+ {
+ if (_entityIdentity.Title == null && _entityIdentity.Id == null)
+ {
+ Log.Error("A `title` or `id` must be specified");
+ return 1;
+ }
+
+ var config = RuntimeConfigurationLoader.Load(_storagePath);
+ var connection = SeqConnectionFactory.Connect(_connection, config);
+
+ var toRemove = _entityIdentity.Id != null ? [await connection.Views.FindAsync(_entityIdentity.Id)]
+ :
+ (await connection.Views.ListAsync(ownerId: _entityOwner.OwnerId, shared: _entityOwner.IncludeShared))
+ .Where(signal => _entityIdentity.Title == signal.Title)
+ .ToArray();
+
+ if (!toRemove.Any())
+ {
+ Log.Error("No matching view was found");
+ return 1;
+ }
+
+ foreach (var signal in toRemove)
+ await connection.Views.RemoveAsync(signal);
+
+ return 0;
+ }
+}
\ No newline at end of file
diff --git a/src/SeqCli/Cli/Commands/View/UpdateCommand.cs b/src/SeqCli/Cli/Commands/View/UpdateCommand.cs
new file mode 100644
index 00000000..a1a20b6b
--- /dev/null
+++ b/src/SeqCli/Cli/Commands/View/UpdateCommand.cs
@@ -0,0 +1,24 @@
+// Copyright © Datalust Pty Ltd and Contributors
+//
+// 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.
+
+using Seq.Api;
+
+namespace SeqCli.Cli.Commands.View;
+
+[Command("view", "update",
+ "Update an existing metrics view",
+ Example="seqcli view update --json '{...}'")]
+class UpdateCommand():
+ Shared.UpdateCommand("view", nameof(SeqConnection.Views));
+
\ No newline at end of file
diff --git a/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs b/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs
index cf4999d1..1554708e 100644
--- a/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs
+++ b/src/SeqCli/Cli/Commands/Workspace/CreateCommand.cs
@@ -37,7 +37,7 @@ public CreateCommand()
Options.Add(
"c=|content=",
- "The id of a dashboard, signal, or saved query to include in the workspace",
+ "The id of a dashboard, signal, saved query, or view to include in the workspace",
d => _include.Add(ArgumentString.Normalize(d)));
Options.Add(
@@ -65,6 +65,7 @@ protected override async Task Run()
workspace.Content.DashboardIds.AddRange(_include.Where(s => s?.StartsWith("dashboard-") ?? false));
workspace.Content.QueryIds.AddRange(_include.Where(s => s?.StartsWith("sqlquery-") ?? false));
workspace.Content.SignalIds.AddRange(_include.Where(s => s?.StartsWith("signal-") ?? false));
+ workspace.Content.ViewIds.AddRange(_include.Where(s => s?.StartsWith("view-") ?? false));
workspace = await connection.Workspaces.AddAsync(workspace);
diff --git a/src/SeqCli/Cli/Features/ConnectionFeature.cs b/src/SeqCli/Cli/Features/ConnectionFeature.cs
index e832e8c9..11c2c59c 100644
--- a/src/SeqCli/Cli/Features/ConnectionFeature.cs
+++ b/src/SeqCli/Cli/Features/ConnectionFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/DateRangeFeature.cs b/src/SeqCli/Cli/Features/DateRangeFeature.cs
index b88f60cf..509afc50 100644
--- a/src/SeqCli/Cli/Features/DateRangeFeature.cs
+++ b/src/SeqCli/Cli/Features/DateRangeFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/EntityIdentityFeature.cs b/src/SeqCli/Cli/Features/EntityIdentityFeature.cs
index a6f9dab2..57aceee2 100644
--- a/src/SeqCli/Cli/Features/EntityIdentityFeature.cs
+++ b/src/SeqCli/Cli/Features/EntityIdentityFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/EntityOwnerFeature.cs b/src/SeqCli/Cli/Features/EntityOwnerFeature.cs
index ae0f5188..d2f56bc6 100644
--- a/src/SeqCli/Cli/Features/EntityOwnerFeature.cs
+++ b/src/SeqCli/Cli/Features/EntityOwnerFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/FileInputFeature.cs b/src/SeqCli/Cli/Features/FileInputFeature.cs
index a38110f2..3c4ed0a5 100644
--- a/src/SeqCli/Cli/Features/FileInputFeature.cs
+++ b/src/SeqCli/Cli/Features/FileInputFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs b/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs
index af7c308d..910d0aa2 100644
--- a/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs
+++ b/src/SeqCli/Cli/Features/InvalidDataHandlingFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/PropertiesFeature.cs b/src/SeqCli/Cli/Features/PropertiesFeature.cs
index 3000952a..fd0dde48 100644
--- a/src/SeqCli/Cli/Features/PropertiesFeature.cs
+++ b/src/SeqCli/Cli/Features/PropertiesFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs b/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs
index 97892e73..19f6fe10 100644
--- a/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs
+++ b/src/SeqCli/Cli/Features/SendFailureHandlingFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/SettingNameFeature.cs b/src/SeqCli/Cli/Features/SettingNameFeature.cs
index c089c2a6..025ac25a 100644
--- a/src/SeqCli/Cli/Features/SettingNameFeature.cs
+++ b/src/SeqCli/Cli/Features/SettingNameFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/SignalExpressionFeature.cs b/src/SeqCli/Cli/Features/SignalExpressionFeature.cs
index bc190249..54522c15 100644
--- a/src/SeqCli/Cli/Features/SignalExpressionFeature.cs
+++ b/src/SeqCli/Cli/Features/SignalExpressionFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Features/UserIdentityFeature.cs b/src/SeqCli/Cli/Features/UserIdentityFeature.cs
index 8a9cc748..c9976f3d 100644
--- a/src/SeqCli/Cli/Features/UserIdentityFeature.cs
+++ b/src/SeqCli/Cli/Features/UserIdentityFeature.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/ICommandMetadata.cs b/src/SeqCli/Cli/ICommandMetadata.cs
index 89143c23..55a0bb21 100644
--- a/src/SeqCli/Cli/ICommandMetadata.cs
+++ b/src/SeqCli/Cli/ICommandMetadata.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Cli/Printing.cs b/src/SeqCli/Cli/Printing.cs
index 2784f16c..96b726b4 100644
--- a/src/SeqCli/Cli/Printing.cs
+++ b/src/SeqCli/Cli/Printing.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Config/SeqCliConfig.cs b/src/SeqCli/Config/SeqCliConfig.cs
index 4a0bec4f..c28f9f89 100644
--- a/src/SeqCli/Config/SeqCliConfig.cs
+++ b/src/SeqCli/Config/SeqCliConfig.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Config/SeqCliConnectionConfig.cs b/src/SeqCli/Config/SeqCliConnectionConfig.cs
index e5af87ca..4fe093cf 100644
--- a/src/SeqCli/Config/SeqCliConnectionConfig.cs
+++ b/src/SeqCli/Config/SeqCliConnectionConfig.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Config/SeqCliOutputConfig.cs b/src/SeqCli/Config/SeqCliOutputConfig.cs
index 18529c90..9fa2626d 100644
--- a/src/SeqCli/Config/SeqCliOutputConfig.cs
+++ b/src/SeqCli/Config/SeqCliOutputConfig.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs b/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs
index 6b83458f..b07a25ac 100644
--- a/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs
+++ b/src/SeqCli/Forwarder/ServiceProcess/SeqCliForwarderWindowsService.cs
@@ -1,4 +1,4 @@
-// Copyright 2020 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Ingestion/InvalidDataHandling.cs b/src/SeqCli/Ingestion/InvalidDataHandling.cs
index 0e88b914..facceb01 100644
--- a/src/SeqCli/Ingestion/InvalidDataHandling.cs
+++ b/src/SeqCli/Ingestion/InvalidDataHandling.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Ingestion/JsonLogEventReader.cs b/src/SeqCli/Ingestion/JsonLogEventReader.cs
index 7d5d9d90..719da10c 100644
--- a/src/SeqCli/Ingestion/JsonLogEventReader.cs
+++ b/src/SeqCli/Ingestion/JsonLogEventReader.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Ingestion/LogShipper.cs b/src/SeqCli/Ingestion/LogShipper.cs
index 337e5008..97060913 100644
--- a/src/SeqCli/Ingestion/LogShipper.cs
+++ b/src/SeqCli/Ingestion/LogShipper.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs b/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs
index 7846358e..7146c7e7 100644
--- a/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs
+++ b/src/SeqCli/Ingestion/ScalarPropertyEnricher.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Ingestion/SendFailureHandling.cs b/src/SeqCli/Ingestion/SendFailureHandling.cs
index ae9cb221..91a38833 100644
--- a/src/SeqCli/Ingestion/SendFailureHandling.cs
+++ b/src/SeqCli/Ingestion/SendFailureHandling.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Mapping/LevelMapping.cs b/src/SeqCli/Mapping/LevelMapping.cs
index 99d16aa8..ff79087b 100644
--- a/src/SeqCli/Mapping/LevelMapping.cs
+++ b/src/SeqCli/Mapping/LevelMapping.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs b/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs
index d422af32..d32e6666 100644
--- a/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs
+++ b/src/SeqCli/Output/RedundantEventTypeRemovalEnricher.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/PlainText/Framing/Frame.cs b/src/SeqCli/PlainText/Framing/Frame.cs
index 7c0dbf44..0c81c7e7 100644
--- a/src/SeqCli/PlainText/Framing/Frame.cs
+++ b/src/SeqCli/PlainText/Framing/Frame.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/PlainText/Framing/FrameReader.cs b/src/SeqCli/PlainText/Framing/FrameReader.cs
index 3488b3ec..b117b9e1 100644
--- a/src/SeqCli/PlainText/Framing/FrameReader.cs
+++ b/src/SeqCli/PlainText/Framing/FrameReader.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs b/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs
index bab68619..adf1f87d 100644
--- a/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs
+++ b/src/SeqCli/PlainText/LogEvents/LogEventBuilder.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs b/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs
index 35024ea7..614c927f 100644
--- a/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs
+++ b/src/SeqCli/PlainText/LogEvents/TextOnlyException.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Program.cs b/src/SeqCli/Program.cs
index c6e12e12..f58599da 100644
--- a/src/SeqCli/Program.cs
+++ b/src/SeqCli/Program.cs
@@ -1,4 +1,4 @@
-// Copyright 2018-2019 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/SeqCli.csproj b/src/SeqCli/SeqCli.csproj
index 6d99f8a8..ce5d3ea0 100644
--- a/src/SeqCli/SeqCli.csproj
+++ b/src/SeqCli/SeqCli.csproj
@@ -32,21 +32,21 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/src/SeqCli/SeqCliModule.cs b/src/SeqCli/SeqCliModule.cs
index 2cfc7fb7..0c1cb00e 100644
--- a/src/SeqCli/SeqCliModule.cs
+++ b/src/SeqCli/SeqCliModule.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Signals/SignalExpressionParser.cs b/src/SeqCli/Signals/SignalExpressionParser.cs
index b4970bd0..ed3e12db 100644
--- a/src/SeqCli/Signals/SignalExpressionParser.cs
+++ b/src/SeqCli/Signals/SignalExpressionParser.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Signals/SignalExpressionToken.cs b/src/SeqCli/Signals/SignalExpressionToken.cs
index 6b4becfb..1968aef1 100644
--- a/src/SeqCli/Signals/SignalExpressionToken.cs
+++ b/src/SeqCli/Signals/SignalExpressionToken.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Signals/SignalExpressionTokenizer.cs b/src/SeqCli/Signals/SignalExpressionTokenizer.cs
index 2e667529..853677e4 100644
--- a/src/SeqCli/Signals/SignalExpressionTokenizer.cs
+++ b/src/SeqCli/Signals/SignalExpressionTokenizer.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Syntax/CombinedFilterBuilder.cs b/src/SeqCli/Syntax/CombinedFilterBuilder.cs
index 90753295..21de240d 100644
--- a/src/SeqCli/Syntax/CombinedFilterBuilder.cs
+++ b/src/SeqCli/Syntax/CombinedFilterBuilder.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Syntax/DurationMoniker.cs b/src/SeqCli/Syntax/DurationMoniker.cs
index c02a2398..a579ff8d 100644
--- a/src/SeqCli/Syntax/DurationMoniker.cs
+++ b/src/SeqCli/Syntax/DurationMoniker.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Syntax/QueryBuilder.cs b/src/SeqCli/Syntax/QueryBuilder.cs
index b2338ec4..41e3459f 100644
--- a/src/SeqCli/Syntax/QueryBuilder.cs
+++ b/src/SeqCli/Syntax/QueryBuilder.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -21,18 +21,18 @@ namespace SeqCli.Syntax;
class QueryBuilder
{
- readonly List<(string, string)> _columns = new();
+ readonly List<(string, string?)> _columns = new();
readonly List _where = new();
readonly List _groupBy = new();
readonly List _having = new();
- public void Select(string value, string label)
+ public void Select(string value, string? label)
{
if (value == null) throw new ArgumentNullException(nameof(value));
_columns.Add((value, label));
}
- public bool FromStream { get; set; }
+ public string? From { get; set; }
public void Where(string predicate)
{
@@ -74,8 +74,8 @@ public string Build()
result.Append($" as {label}");
}
- if (FromStream)
- result.Append(" from stream");
+ if (From is {} from)
+ result.Append($" from {from}");
if (_where.Any())
{
diff --git a/src/SeqCli/Util/ArgumentString.cs b/src/SeqCli/Util/ArgumentString.cs
index 90c539e8..4544d395 100644
--- a/src/SeqCli/Util/ArgumentString.cs
+++ b/src/SeqCli/Util/ArgumentString.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Util/DirectoryExt.cs b/src/SeqCli/Util/DirectoryExt.cs
index 0d67992b..36728957 100644
--- a/src/SeqCli/Util/DirectoryExt.cs
+++ b/src/SeqCli/Util/DirectoryExt.cs
@@ -1,4 +1,4 @@
-// Copyright 2019 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Util/Presentation.cs b/src/SeqCli/Util/Presentation.cs
index b6e498d2..125ee15b 100644
--- a/src/SeqCli/Util/Presentation.cs
+++ b/src/SeqCli/Util/Presentation.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/src/SeqCli/Util/UserScopeDataProtection.cs b/src/SeqCli/Util/UserScopeDataProtection.cs
index 481019fe..3b8afb33 100644
--- a/src/SeqCli/Util/UserScopeDataProtection.cs
+++ b/src/SeqCli/Util/UserScopeDataProtection.cs
@@ -1,4 +1,4 @@
-// Copyright 2018 Datalust Pty Ltd and Contributors
+// Copyright © Datalust and contributors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs b/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs
index 4c29aff9..e7baad65 100644
--- a/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs
+++ b/test/SeqCli.EndToEnd/Dashboard/RenderTestCase.cs
@@ -7,6 +7,7 @@
namespace SeqCli.EndToEnd.Dashboard;
+[CliTestCase(MinimumApiVersion = "2026.1.0")]
public class RenderTestCase : ICliTestCase
{
public Task ExecuteAsync(
diff --git a/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs b/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs
index 2a64a0e8..7116cf9e 100644
--- a/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs
+++ b/test/SeqCli.EndToEnd/RetentionPolicy/RetentionPolicyBasicsTestCase.cs
@@ -18,7 +18,7 @@ public async Task ExecuteAsync(SeqConnection connection, ILogger logger, CliComm
exit = runner.Exec("retention list", "-i retentionpolicy-missing");
Assert.Equal(1, exit);
- exit = runner.Exec("retention create", "--after 10h --delete-all-events");
+ exit = runner.Exec("retention create", "--after 10h --data-source stream --delete-all");
Assert.Equal(0, exit);
var id = runner.LastRunProcess.Output.Trim();
@@ -36,13 +36,13 @@ public async Task ExecuteAsync(SeqConnection connection, ILogger logger, CliComm
Assert.Equal(1, exit);
var deleteSignal = "signal-m33303,(signal-m33301~signal-m33302)";
- exit = runner.Exec("retention create", $"--after 10h --delete \"{deleteSignal}\"");
+ exit = runner.Exec("retention create", $"--after 10h --data-source stream --delete \"{deleteSignal}\"");
Assert.Equal(0, exit);
exit = runner.Exec("retention create", "--after 10h");
Assert.Equal(1, exit);
- exit = runner.Exec("retention create", $"--after 10h --delete-all-events --delete \"{deleteSignal}\"");
+ exit = runner.Exec("retention create", $"--after 10h --data-source stream --delete-all --delete \"{deleteSignal}\"");
Assert.Equal(1, exit);
}
}
\ No newline at end of file
diff --git a/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs b/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs
index 1b5dc311..aa751ad1 100644
--- a/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs
+++ b/test/SeqCli.EndToEnd/Templates/TemplateExportImportTestCase.cs
@@ -8,7 +8,7 @@
namespace SeqCli.EndToEnd.Templates;
-[CliTestCase(MinimumApiVersion = "2024.3.0")]
+[CliTestCase(MinimumApiVersion = "2026.1.0")]
public class TemplateExportImportTestCase : ICliTestCase
{
readonly TestDataFolder _testDataFolder;
diff --git a/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs b/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs
index e76c2f2c..114466cc 100644
--- a/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs
+++ b/test/SeqCli.EndToEnd/Workspace/WorkspaceBasicsTestCase.cs
@@ -7,6 +7,7 @@
namespace SeqCli.EndToEnd.Workspace;
+[CliTestCase(MinimumApiVersion = "2026.1.0")]
class WorkspaceBasicsTestCase : ICliTestCase
{
public async Task ExecuteAsync(
diff --git a/test/SeqCli.Tests/SeqCli.Tests.csproj b/test/SeqCli.Tests/SeqCli.Tests.csproj
index 41b33c8d..e1bc6937 100644
--- a/test/SeqCli.Tests/SeqCli.Tests.csproj
+++ b/test/SeqCli.Tests/SeqCli.Tests.csproj
@@ -3,7 +3,7 @@
net10.0
-
+
all