AIGuiders.Platform.Modeling.Notations.Argument 0.1.0

dotnet add package AIGuiders.Platform.Modeling.Notations.Argument --version 0.1.0
                    
NuGet\Install-Package AIGuiders.Platform.Modeling.Notations.Argument -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AIGuiders.Platform.Modeling.Notations.Argument" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AIGuiders.Platform.Modeling.Notations.Argument" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="AIGuiders.Platform.Modeling.Notations.Argument" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AIGuiders.Platform.Modeling.Notations.Argument --version 0.1.0
                    
#r "nuget: AIGuiders.Platform.Modeling.Notations.Argument, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AIGuiders.Platform.Modeling.Notations.Argument@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AIGuiders.Platform.Modeling.Notations.Argument&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=AIGuiders.Platform.Modeling.Notations.Argument&version=0.1.0
                    
Install as a Cake Tool

AIGuiders.Platform.Modeling.Notations.Argument

A notation-neutral schema for command argument tails: slot definitions, reader ids, and one normalized result type that every argument syntax lands in.

What you get

  • ArgumentSlot — one accepted slot: Name, Kind, LongOption, ShortOption
  • ArgumentSlotKind — what a slot carries:
    • Flag — present/absent switch
    • Value — named value
    • Positional — position-significant token
  • ArgumentNotationProfile — a command's declared tail: ReaderId + Slots, with IsEmpty and a static Merge (non-empty incoming fields win, empty incoming keeps existing)
  • ArgumentReaders — the canonical reader id literals:
    • Kv = "kv", Cli = "cli", Positional = "positional", Delimited = "delimited", Colon = "colon", Raw = "raw"
  • NormalizedArguments — the one normalized result: Raw text, Slots dictionary, ReaderId; constructors FromRaw / FromSlots

Quick start

open AIGuiders.Platform.Modeling.Notations.Argument

// Declare the argument tail a command accepts — syntax-neutral
let profile =
    ArgumentNotationProfile(
        ArgumentReaders.Kv,
        [| ArgumentSlot("file", ArgumentSlotKind.Positional)
           ArgumentSlot("force", ArgumentSlotKind.Flag) |])

// Whatever syntax the user typed, your reader normalizes it to one shape
let args = NormalizedArguments.FromRaw("README.md --force", ArgumentReaders.Cli)

Problem

  • Command argument tails come in many dialects: space-separated tokens, key=value pairs, bare flags, positional arguments — and every plugin or UI hand-rolls its own stringly-typed parsing of them.
  • Consumers (completion lists, validation, docs) have no shared way to ask "what arguments does this command accept, and what did the user actually pass?"

Solution

  • One neutral slot schema to declare what a command accepts, and one normalized result type to carry what the user passed — many syntaxes, one IR, reader ids to tag which syntax produced it.
  • The argument branch of the Guiders Notations family, used across its command surfaces — ADR-0021.

When not to use

  • No parsing here: the package is schema + result IR only — turning key=value or CLI text into NormalizedArguments is your reader's job (the platform ships profile-driven readers separately).
  • ArgumentNotationProfile.Merge is coarse: a non-empty incoming slot list replaces the whole list; slots are never merged one by one.
  • C#-wire interop style: mutable, null-tolerant classes — not immutable F# records, and nothing validates slot names or option spellings.

Learn more


MIT · Source & issues · part of the Guiders federation

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on AIGuiders.Platform.Modeling.Notations.Argument:

Package Downloads
AIGuiders.Platform.Modeling.Notations.Command

Command notation wire and invocation surfaces SSOT (GUIDERS-ADR-0021, ADR-0008).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 107 10/24/2026