AIGuiders.Platform.Modeling.Gdl.Core
0.1.0
dotnet add package AIGuiders.Platform.Modeling.Gdl.Core --version 0.1.0
NuGet\Install-Package AIGuiders.Platform.Modeling.Gdl.Core -Version 0.1.0
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Core" Version="0.1.0" />
<PackageVersion Include="AIGuiders.Platform.Modeling.Gdl.Core" Version="0.1.0" />
<PackageReference Include="AIGuiders.Platform.Modeling.Gdl.Core" />
paket add AIGuiders.Platform.Modeling.Gdl.Core --version 0.1.0
#r "nuget: AIGuiders.Platform.Modeling.Gdl.Core, 0.1.0"
#:package AIGuiders.Platform.Modeling.Gdl.Core@0.1.0
#addin nuget:?package=AIGuiders.Platform.Modeling.Gdl.Core&version=0.1.0
#tool nuget:?package=AIGuiders.Platform.Modeling.Gdl.Core&version=0.1.0
AIGuiders.Platform.Modeling.Gdl.Core
Typed spine for GDL document projects — a closed discriminated union over document payloads (catalog, deck, display, cockpit logic) plus the composed project model.
What you get
GdlDocumentRef— stable reference to one document:LogicalPath+Quarry(the token before.gdlin the file name, e.g.deck,catalog)GdlFragment— the closed discriminated union of document payloads:Catalog of CatalogPayload— planet + resolved route rows (row IR fromGdl.Command)Deck of DeckPayload— attention presets + zone bindings from*.deck.gdlDisplay of DisplayBindingPayload— screen-binding profile (alias ofGdl.Presentation.DisplayBindingProfile)CockpitLogic of CockpitLogicPayload— rule-graph IR (alias ofGdl.Parse.CockpitLogic.CockpitRuleGraph)
DeckPreset— one attention preset: name, optionalTopology,ForwardZoneId,MfdZoneIds,EicasPolicyGdlProjectEntry/GdlProjectManifest/GdlProject— composed declare-time project: manifest (name, workspace root) + typed document entriesGdlSpine— helpers for tests and C# mappers:documentRef, plus sampledashSpecStudioDeck/dashSpecStudioProject
Quick start
open AIGuiders.Platform.Modeling.Gdl.Core
let project : GdlProject =
{ Manifest = { Name = "studio"; WorkspaceRoot = "." }
Documents =
[ { Ref = GdlSpine.documentRef "deck/studio.deck.gdl" "deck"
Fragment = GdlFragment.Deck(GdlSpine.dashSpecStudioDeck ()) } ] }
let deckCount =
project.Documents
|> List.filter (fun entry ->
match entry.Fragment with
| GdlFragment.Deck _ -> true
| _ -> false)
|> List.length
Problem
- Declarative toolchains end up with several kinds of hand-edited files — command catalogs, screen-layout decks, rule files, binding profiles.
- Each parser naturally produces its own model, so anything that loads a whole workspace (an editor, a build check, a generator) glues those models together by hand — and adding a new file kind ripples through every consumer with no compiler help.
Solution
- One closed union (
GdlFragment) over the four typed payloads: consumers pattern-match, and when a document kind is added the compiler flags every match that needs updating. - A project is just a manifest plus a list of
{ Ref; Fragment }entries — trivially serializable, walkable, and diffable. - This is the SSOT for the GDL project model, owned by the F# monorepo per FSHARP-ADR-0001; the language itself is named and specified in GUIDERS-ADR-0059, with the
configbranch extending the same spine (GUIDERS-ADR-0064). In this repo it already carries the deck graph consumed byModeling.Ide.Sessionand the cross-document checks ofModeling.Gdl.Validation.
When not to use
- Not a parser — text-to-payload lives in the sibling
Gdl.Parse.*packages; here everything is already typed IR. - The payload set is closed by design: a new document kind means a new version of this package, not a consumer-side extension point.
- Two payloads are type aliases of sibling packages, so referencing this package pulls in
Gdl.Presentation,Gdl.Command, andGdl.Parse.CockpitLogic— if you need only one payload, reference that package directly.
Learn more
- FSHARP-ADR-0001 — GDL spine ownership
- GUIDERS-ADR-0059 — GDL hyperlane
- GUIDERS-ADR-0064 — Config GDL quarry family
MIT · Source & issues · part of the Guiders federation
| Product | Versions 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. |
-
net10.0
- AIGuiders.Platform.Modeling.Gdl.Command (>= 0.1.0)
- AIGuiders.Platform.Modeling.Gdl.Parse.CockpitLogic (>= 0.1.0)
- AIGuiders.Platform.Modeling.Gdl.Presentation (>= 0.1.0)
- FSharp.Core (>= 10.1.401)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on AIGuiders.Platform.Modeling.Gdl.Core:
| Package | Downloads |
|---|---|
|
AIGuiders.Platform.Modeling.Gdl.Validation
GDL project validation — cross-ref and quarry rules. |
|
|
AIGuiders.Platform.Modeling.Gdl.Parse.Catalog
GDL catalog quarry parser — F# mirror of Platform Authoring.Command.Catalog (phase 1: structure + spine mapping). Parity gaps vs C# authoring emit path: profile bundle resolution (ICatalogBundleLibrary / CatalogProfileResolver), command-profile cross-validation, import-alias bundle path resolution, full notation grammar wire validation (C# injects keyboard parsers), CatalogPhraseSlotIndex codegen inputs. |
|
|
AIGuiders.Platform.Modeling.Gdl.Parse.Deck
GDL deck quarry parser — F# mirror of Platform Authoring.Deck. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0 | 122 | 10/24/2026 |