wslc: align docker_schema with bundled dockerd v25.0.3 (API v1.44) (#40552)
* Align docker_schema with bundled dockerd v25.0.3 (API v1.44) WSLC talks to a bundled dockerd v25.0.3 (Docker API v1.44). Several entries in docker_schema.h drifted toward documented-but-not-shipped types or were defensive in the wrong way. None of these are observable user-facing bugs on a stock daemon today, but each is a latent crash or misbehavior waiting on the right wire payload from a third-party driver, future daemon, or TTY exec. Authoritative source: https://github.com/moby/moby/tree/v25.0.3/api Schema fixes: * ContainerState enum: prepend {Unknown, nullptr} so an unrecognized state string from the daemon falls back to Unknown rather than silently decoding as the first map entry (Created). * HostConfig.ShmSize: change std::optional<ULONGLONG> -> std::int64_t. Docker's wire type is signed int64 and 0 already means "use daemon default", so the optional indirection added nothing. * Volume.Status: change optional<map<string,string>> -> optional<map<string, nlohmann::json>>. Docker's wire schema is map[string]any; third-party volume drivers may publish numbers, bools, or nested objects which would currently throw type_error during deserialize. * Image.Size, InspectImage.Size: change uint64_t -> int64_t to match the daemon's int64 wire type. Cast at consumer sites that feed ULONGLONG ABI fields. * CreateExec / StartExec ConsoleSize: replace NLOHMANN_DEFINE_TYPE_INTRUSIVE_* with explicit to_json that omits the field when empty. Docker treats an empty array as an explicit 0x0 console for TTY execs; we were unconditionally serializing []. * CreatedContainer.Name: removed (Docker's POST /containers/create response only contains Id and Warnings; Name is supplied as a query parameter, not echoed back). Switched to WITH_DEFAULT for parity with surrounding types. Doc: * Updated two API doc URL references from v1.52 to v1.44 with a note about the bundled dockerd version. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * wslc: align Size/ShmSize types with docker int64 end-to-end Per PR review: replace boundary static_casts with consistent signed 64-bit types across IDL, SDK, service models, and CLI schema. Mirrors the existing MemoryBytes/NanoCpus precedent. - IDL: WSLCImageInformation.Size, WSLCContainerOptions.ShmSize -> LONGLONG - SDK: WslcImageInfo.sizeBytes -> int64_t - Models: ImageInformation::Size, ContainerOptions::ShmSize -> int64_t - Schema: InspectImage::Size -> int64_t - Launcher: m_shmSize/SetShmSize -> int64_t - Validation: GetMemorySizeFromString returns int64_t Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>