From eaa7093cd6c17251c55ce729f54bf973f9418da8 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Wed, 20 May 2026 04:48:55 -0400 Subject: [PATCH] .NET CLI: register the five new bulk subcommands in IsKnownGatewayCommand MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous commit added read-bulk / write-bulk / write2-bulk / write-secured-bulk / write-secured2-bulk dispatch cases to RunCoreAsync but left them out of IsKnownGatewayCommand, so the .NET CLI rejected them at the pre-dispatch gate and printed the usage banner instead of running the new code paths. Surfaced when the live e2e exercised the read-bulk phase against the deployed gateway — the call routed through the unknown-command path before reaching the protobuf builder. Also extends WriteUsage with one line per new subcommand so the banner documents the new surface. Live e2e against the deployed gateway now passes for all five clients (dotnet, go, rust, python, java) with 4/4 tags returning was_cached=true after the subscribe-bulk + read-bulk path, confirming the worker MxAccessValueCache populates from real MXAccess OnDataChange events and round-trips through every client''s JSON parser. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs b/clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs index 11888e9..8032d2a 100644 --- a/clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs +++ b/clients/dotnet/MxGateway.Client.Cli/MxGatewayClientCli.cs @@ -1234,6 +1234,11 @@ public static class MxGatewayClientCli or "advise" or "subscribe-bulk" or "unsubscribe-bulk" + or "read-bulk" + or "write-bulk" + or "write2-bulk" + or "write-secured-bulk" + or "write-secured2-bulk" or "stream-events" or "write" or "write2" @@ -1284,6 +1289,11 @@ public static class MxGatewayClientCli writer.WriteLine("mxgw-dotnet register --session-id --client-name [--json]"); writer.WriteLine("mxgw-dotnet add-item --session-id --server-handle --item [--json]"); writer.WriteLine("mxgw-dotnet advise --session-id --server-handle --item-handle [--json]"); + writer.WriteLine("mxgw-dotnet read-bulk --session-id --server-handle --items [--timeout-ms ] [--json]"); + writer.WriteLine("mxgw-dotnet write-bulk --session-id --server-handle --item-handles --type --values [--user-id ] [--json]"); + writer.WriteLine("mxgw-dotnet write2-bulk --session-id --server-handle --item-handles --type --values [--timestamp ] [--user-id ] [--json]"); + writer.WriteLine("mxgw-dotnet write-secured-bulk --session-id --server-handle --item-handles --type --values --current-user-id [--verifier-user-id ] [--json]"); + writer.WriteLine("mxgw-dotnet write-secured2-bulk --session-id --server-handle --item-handles --type --values [--timestamp ] --current-user-id [--verifier-user-id ] [--json]"); writer.WriteLine("mxgw-dotnet subscribe-bulk --session-id --server-handle --items [--json]"); writer.WriteLine("mxgw-dotnet unsubscribe-bulk --session-id --server-handle --item-handles [--json]"); writer.WriteLine("mxgw-dotnet stream-events --session-id [--max-events ] [--json]");