Skip to content

feat(antd-csharp)!: adopt PaymentMode enum + put/get convention (G2/2)#119

Merged
Nic-dorman merged 1 commit into
mainfrom
nic/g2-rest-typed-static-sdks-payment-mode-rename
May 21, 2026
Merged

feat(antd-csharp)!: adopt PaymentMode enum + put/get convention (G2/2)#119
Nic-dorman merged 1 commit into
mainfrom
nic/g2-rest-typed-static-sdks-payment-mode-rename

Conversation

@Nic-dorman
Copy link
Copy Markdown
Collaborator

Summary

antd-csharp adoption of the renamed antd surface from #115. Same template as
antd-go #116, antd-rust #118, and G1 #117. Second of the G2 (typed-static)
SDKs; java + kotlin + cpp follow in separate PRs.

Stacks on #115; rebases to main once that merges.

What changed

  • New PaymentMode enum (Auto / Merkle / Single) in Models.cs with
    PaymentModeExtensions.ToWire().
  • New result records: DataPutResult, DataPutPublicResult, FilePutResult,
    FilePutPublicResult. PutResult retained for ChunkPutAsync only;
    FileUploadResult removed.
  • REST + gRPC method renames on AntdRestClient and AntdGrpcClient:
    • DataPutPrivateAsyncDataPutAsync (POST /v1/data)
    • DataGetPrivateAsyncDataGetAsync (POST /v1/data/get)
    • FileUploadPublicAsyncFilePutPublicAsync (POST /v1/files/public)
    • FileDownloadPublicAsyncFileGetPublicAsync (POST /v1/files/public/get)
    • NEW: FilePutAsync (POST /v1/files), FileGetAsync (POST /v1/files/get)
  • paymentMode: PaymentMode is a kwarg with PaymentMode.Auto default on
    DataPutAsync, DataPutPublicAsync, DataCostAsync, FilePutAsync,
    FilePutPublicAsync, FileCostAsync (was nullable string before; gRPC
    hardcoded "").
  • IAntdClient interface updated to match.
  • Examples + tests updated. Stale mock URLs fixed
    (/v1/data/private/v1/data/get, /v1/files/upload/public
    /v1/files/public).
  • Proto stubs regenerated via grpc-tools at dotnet build time.

Test plan

  • dotnet build clean on dev2
  • dotnet test — 32/32 pass on dev2
  • ant dev example all -l csharp against the renamed antd daemon — exit 0

🤖 Generated with Claude Code

…est)

Same template as antd-go #116 / antd-rust #118 / G1 #117. New PaymentMode
enum (Auto/Merkle/Single) with ToWire() extension; new result records
DataPutResult, DataPutPublicResult, FilePutResult, FilePutPublicResult;
PutResult kept for ChunkPut only; FileUploadResult removed.

REST + gRPC method renames:
  DataPutPrivateAsync   -> DataPutAsync          (POST /v1/data)
  DataGetPrivateAsync   -> DataGetAsync          (POST /v1/data/get)
  FileUploadPublicAsync -> FilePutPublicAsync    (POST /v1/files/public)
  FileDownloadPublicAsync -> FileGetPublicAsync  (POST /v1/files/public/get)
NEW: FilePutAsync (POST /v1/files), FileGetAsync (POST /v1/files/get)

paymentMode: PaymentMode parameter added to DataPutAsync, DataPutPublicAsync,
DataCostAsync, FilePutAsync, FilePutPublicAsync, FileCostAsync on both
REST and gRPC transports (kwarg with PaymentMode.Auto default; was
stringly typed Option<string?> on REST and hardcoded on gRPC).

Proto stubs regenerate via grpc-tools at dotnet build time.

dotnet build clean; dotnet test 32/32 pass.
ant dev example all -l csharp passes against the renamed antd daemon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Nic-dorman Nic-dorman force-pushed the nic/g2-rest-typed-static-sdks-payment-mode-rename branch from 6fa15c2 to ce19c38 Compare May 21, 2026 15:49
Nic-dorman added a commit that referenced this pull request May 21, 2026
Same template as antd-go #116 / antd-rust #118 / antd-csharp #119 / G1 #117.

- New PaymentMode enum (AUTO/MERKLE/SINGLE) with wireValue() in models.
- New result records: DataPutResult, DataPutPublicResult, FilePutResult,
  FilePutPublicResult. PutResult kept for chunkPut only; FileUploadResult
  removed.
- REST + gRPC method renames on AntdClient, AsyncAntdClient, GrpcAntdClient:
    dataPutPrivate     -> dataPut          (POST /v1/data)
    dataGetPrivate     -> dataGet          (POST /v1/data/get)
    fileUploadPublic   -> filePutPublic    (POST /v1/files/public)
    fileDownloadPublic -> fileGetPublic    (POST /v1/files/public/get)
  NEW: filePut (POST /v1/files), fileGet (POST /v1/files/get)
- paymentMode: PaymentMode parameter added to dataPut, dataPutPublic,
  dataCost, filePut, filePutPublic, fileCost on all three clients
  (REST sync, REST async, gRPC). Overloads provide PaymentMode.AUTO default.
- Proto stubs regenerated via protobuf-gradle-plugin at gradle build time.

gradlew build clean (lib + tests + examples sub-project); 40 tests pass.
ant dev example all -l java passes against the renamed antd daemon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
…est/4)

Same template as antd-go #116 / antd-rust #118 / antd-csharp #119 /
antd-java #120 / G1 #117.

- New PaymentMode enum (AUTO/MERKLE/SINGLE) with wire serializer in Models.kt.
- New result types: DataPutResult, DataPutPublicResult, FilePutResult,
  FilePutPublicResult. PutResult kept for chunkPut only; FileUploadResult
  removed.
- REST + gRPC method renames on IAntdClient, AntdRestClient, AntdGrpcClient:
    dataPutPrivate     -> dataPut          (POST /v1/data)
    dataGetPrivate     -> dataGet          (POST /v1/data/get)
    fileUploadPublic   -> filePutPublic    (POST /v1/files/public)
    fileDownloadPublic -> fileGetPublic    (POST /v1/files/public/get)
  NEW: filePut (POST /v1/files), fileGet (POST /v1/files/get)
- paymentMode: PaymentMode parameter added to dataPut, dataPutPublic,
  dataCost, filePut, filePutPublic, fileCost on both transports. Default
  arg is PaymentMode.AUTO so callers can omit.
- Proto stubs regenerated via copyProtos -> protobuf-gradle-plugin at
  gradle build time (DataService.{Put,Get,Cost}, FileService.{Put,Get,
  PutPublic,GetPublic,Cost}; PutFileRequest/Response shape).

./gradlew :lib:build passes (25 tests). ./gradlew :examples:installDist
clean. ant dev example all -l kotlin runs all six examples to OK.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
Same template as antd-go #116 / antd-rust #118 / antd-csharp #119 /
antd-java #120 / antd-kotlin #123 / G1 #117.

- New `antd::PaymentMode` enum (Auto/Merkle/Single) with
  `payment_mode_wire()` helper in models.hpp.
- New result types: DataPutResult, DataPutPublicResult, FilePutResult,
  FilePutPublicResult. PutResult kept for chunk_put only;
  FileUploadResult removed.
- REST + gRPC method renames on Client (REST sync), AsyncClient, GrpcClient:
    data_put_private     -> data_put          (POST /v1/data)
    data_get_private     -> data_get          (POST /v1/data/get)
    file_upload_public   -> file_put_public   (POST /v1/files/public)
    file_download_public -> file_get_public   (POST /v1/files/public/get)
  NEW: file_put (POST /v1/files), file_get (POST /v1/files/get)
- PaymentMode parameter added (defaulting to PaymentMode::Auto) to
  data_put, data_put_public, data_cost, file_put, file_put_public,
  file_cost on all three transports.
- gRPC client adjusted to the new proto RPC names: DataService.{Put,Get,
  Cost} and FileService.{Put,Get,PutPublic,GetPublic,Cost}; PutFileRequest /
  Put{File,FilePublic}Response field shape; PutPublicDataRequest +
  PutDataRequest now carry payment_mode. Dropped the broken
  `antd/v1/graph.grpc.pb.h` include + graph_stub field (the proto was
  removed pre-v1.0; this code never compiled).

cmake -B build && cmake --build build  -> all targets clean.
ctest --test-dir build                 -> 2/2 pass.
ant dev example all -l cpp             -> all five examples OK.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
… PaymentMode on REST SDKs (G4)

Final fan-out tranche — the four REST-only SDKs that have no proto/gRPC
work to do. Same naming + paymentMode semantics as the typed SDKs (#116,
#117, #118, #119, #120, #121, #122, #123, #124).

Per-SDK summary:

- antd-js: new `PaymentMode` const + types `DataPutResult`,
  `DataPutPublicResult`, `FilePutResult`, `FilePutPublicResult`
  (`FileUploadResult` removed; `PutResult` kept for `chunkPut`).
  Method renames on `RestClient`: `dataPutPrivate` -> `dataPut`,
  `dataGetPrivate` -> `dataGet`, `fileUploadPublic` -> `filePutPublic`,
  `fileDownloadPublic` -> `fileGetPublic`. NEW: `filePut` + `fileGet`.
  `paymentMode` option added to data/file put + cost. package-lock.json
  refresh picks up the existing `ethers` devDep that example 07 imports.

- antd-php: new `PaymentMode` backed enum + readonly result classes; same
  method renames on `AntdClient` (sync + async variants).

- antd-zig: new `PaymentMode` enum with `.wire()`; result-type rename mirrors
  the others; `dataGet` switches to POST /v1/data/get with `data_map` body
  (replaces the old GET-with-querystring path).

- antd-lua: new `models.PaymentMode` table of wire strings; method renames
  on `Client`; `data_get` / `file_get` / `file_put_public` / `file_get_public`
  go through POST bodies on the new routes.

Validated on dev2:
- antd-js: npm test (63/63 pass) + ant dev example all -l js (all six OK).
- antd-php: phpunit (31/31 pass) + ant dev example all -l php (all OK).
- antd-zig: zig 0.14.1 build test (pass) + ant dev example all -l zig.
- antd-lua: busted (26/26 pass) + ant dev example all -l lua (all OK).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Nic-dorman Nic-dorman merged commit b2152ab into main May 21, 2026
Nic-dorman added a commit that referenced this pull request May 21, 2026
…120)

Same template as antd-go #116 / antd-rust #118 / antd-csharp #119 / G1 #117.

- New PaymentMode enum (AUTO/MERKLE/SINGLE) with wireValue() in models.
- New result records: DataPutResult, DataPutPublicResult, FilePutResult,
  FilePutPublicResult. PutResult kept for chunkPut only; FileUploadResult
  removed.
- REST + gRPC method renames on AntdClient, AsyncAntdClient, GrpcAntdClient:
    dataPutPrivate     -> dataPut          (POST /v1/data)
    dataGetPrivate     -> dataGet          (POST /v1/data/get)
    fileUploadPublic   -> filePutPublic    (POST /v1/files/public)
    fileDownloadPublic -> fileGetPublic    (POST /v1/files/public/get)
  NEW: filePut (POST /v1/files), fileGet (POST /v1/files/get)
- paymentMode: PaymentMode parameter added to dataPut, dataPutPublic,
  dataCost, filePut, filePutPublic, fileCost on all three clients
  (REST sync, REST async, gRPC). Overloads provide PaymentMode.AUTO default.
- Proto stubs regenerated via protobuf-gradle-plugin at gradle build time.

gradlew build clean (lib + tests + examples sub-project); 40 tests pass.
ant dev example all -l java passes against the renamed antd daemon.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
…est/4) (#123)

Same template as antd-go #116 / antd-rust #118 / antd-csharp #119 /
antd-java #120 / G1 #117.

- New PaymentMode enum (AUTO/MERKLE/SINGLE) with wire serializer in Models.kt.
- New result types: DataPutResult, DataPutPublicResult, FilePutResult,
  FilePutPublicResult. PutResult kept for chunkPut only; FileUploadResult
  removed.
- REST + gRPC method renames on IAntdClient, AntdRestClient, AntdGrpcClient:
    dataPutPrivate     -> dataPut          (POST /v1/data)
    dataGetPrivate     -> dataGet          (POST /v1/data/get)
    fileUploadPublic   -> filePutPublic    (POST /v1/files/public)
    fileDownloadPublic -> fileGetPublic    (POST /v1/files/public/get)
  NEW: filePut (POST /v1/files), fileGet (POST /v1/files/get)
- paymentMode: PaymentMode parameter added to dataPut, dataPutPublic,
  dataCost, filePut, filePutPublic, fileCost on both transports. Default
  arg is PaymentMode.AUTO so callers can omit.
- Proto stubs regenerated via copyProtos -> protobuf-gradle-plugin at
  gradle build time (DataService.{Put,Get,Cost}, FileService.{Put,Get,
  PutPublic,GetPublic,Cost}; PutFileRequest/Response shape).

./gradlew :lib:build passes (25 tests). ./gradlew :examples:installDist
clean. ant dev example all -l kotlin runs all six examples to OK.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
…/5) (#124)

Same template as antd-go #116 / antd-rust #118 / antd-csharp #119 /
antd-java #120 / antd-kotlin #123 / G1 #117.

- New `antd::PaymentMode` enum (Auto/Merkle/Single) with
  `payment_mode_wire()` helper in models.hpp.
- New result types: DataPutResult, DataPutPublicResult, FilePutResult,
  FilePutPublicResult. PutResult kept for chunk_put only;
  FileUploadResult removed.
- REST + gRPC method renames on Client (REST sync), AsyncClient, GrpcClient:
    data_put_private     -> data_put          (POST /v1/data)
    data_get_private     -> data_get          (POST /v1/data/get)
    file_upload_public   -> file_put_public   (POST /v1/files/public)
    file_download_public -> file_get_public   (POST /v1/files/public/get)
  NEW: file_put (POST /v1/files), file_get (POST /v1/files/get)
- PaymentMode parameter added (defaulting to PaymentMode::Auto) to
  data_put, data_put_public, data_cost, file_put, file_put_public,
  file_cost on all three transports.
- gRPC client adjusted to the new proto RPC names: DataService.{Put,Get,
  Cost} and FileService.{Put,Get,PutPublic,GetPublic,Cost}; PutFileRequest /
  Put{File,FilePublic}Response field shape; PutPublicDataRequest +
  PutDataRequest now carry payment_mode. Dropped the broken
  `antd/v1/graph.grpc.pb.h` include + graph_stub field (the proto was
  removed pre-v1.0; this code never compiled).

cmake -B build && cmake --build build  -> all targets clean.
ctest --test-dir build                 -> 2/2 pass.
ant dev example all -l cpp             -> all five examples OK.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Nic-dorman added a commit that referenced this pull request May 21, 2026
… PaymentMode on REST SDKs (G4) (#125)

Final fan-out tranche — the four REST-only SDKs that have no proto/gRPC
work to do. Same naming + paymentMode semantics as the typed SDKs (#116,
#117, #118, #119, #120, #121, #122, #123, #124).

Per-SDK summary:

- antd-js: new `PaymentMode` const + types `DataPutResult`,
  `DataPutPublicResult`, `FilePutResult`, `FilePutPublicResult`
  (`FileUploadResult` removed; `PutResult` kept for `chunkPut`).
  Method renames on `RestClient`: `dataPutPrivate` -> `dataPut`,
  `dataGetPrivate` -> `dataGet`, `fileUploadPublic` -> `filePutPublic`,
  `fileDownloadPublic` -> `fileGetPublic`. NEW: `filePut` + `fileGet`.
  `paymentMode` option added to data/file put + cost. package-lock.json
  refresh picks up the existing `ethers` devDep that example 07 imports.

- antd-php: new `PaymentMode` backed enum + readonly result classes; same
  method renames on `AntdClient` (sync + async variants).

- antd-zig: new `PaymentMode` enum with `.wire()`; result-type rename mirrors
  the others; `dataGet` switches to POST /v1/data/get with `data_map` body
  (replaces the old GET-with-querystring path).

- antd-lua: new `models.PaymentMode` table of wire strings; method renames
  on `Client`; `data_get` / `file_get` / `file_put_public` / `file_get_public`
  go through POST bodies on the new routes.

Validated on dev2:
- antd-js: npm test (63/63 pass) + ant dev example all -l js (all six OK).
- antd-php: phpunit (31/31 pass) + ant dev example all -l php (all OK).
- antd-zig: zig 0.14.1 build test (pass) + ant dev example all -l zig.
- antd-lua: busted (26/26 pass) + ant dev example all -l lua (all OK).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Nic-dorman Nic-dorman deleted the nic/g2-rest-typed-static-sdks-payment-mode-rename branch May 21, 2026 16:02
Nic-dorman added a commit that referenced this pull request May 21, 2026
Cuts v0.8.0 atop v0.7.1. Substantial breaking-change roll-up of the
put/get rename, the private-file PUT/GET gap close, and several minor
surface cleanups -- bundled here so the v1.0 cut can ship stable on top.

## Breaking (antd daemon)

- feat(antd)!: bind to 127.0.0.1 by default on REST and gRPC (#107).
  Previously bound 0.0.0.0; use --bind-rest / --bind-grpc to override.
- chore: remove dead graph_entry surface from antd proto + 5 SDKs (#92).
  GraphService and its 4 RPCs are gone; REST mounts dropped.
- chore: remove dir_upload_public / dir_download_public surface (#95).
  Use file_put_public on a directory path instead; the daemon recurses.
- feat(antd)!: normalize put/get convention + close private-file PUT and
  GET gaps (#115). Method renames across proto + REST + SDKs:
    data_put_private    -> data_put
    data_get_private    -> data_get
    file_upload_public  -> file_put_public
    file_download_public -> file_get_public
  New: file_put / file_get for the private file path (previously only
  the public variant existed). New typed results: DataPutResult,
  DataPutPublicResult, FilePutResult, FilePutPublicResult; PutResult
  is now annotated as chunk_put only.

## Additive

- feat(antd): honor payment_mode on gRPC put/cost paths and REST cost
  endpoints (#114). Optional kwarg threaded through every put/cost
  signature; empty/omitted maps to "auto" so older clients keep working.
- feat: external-signer public uploads + single-chunk prepare/finalize
  across 15 SDKs (#90).
- docs+spec: openapi.yaml refreshed for the v1.0 surface, including
  POST /v1/chunks/prepare and /v1/chunks/finalize for single-chunk
  external-signer publish (#126).

## SDK fan-out (PaymentMode + put/get convention, all 15)

#116 antd-go, #117 antd-py/ruby/elixir, #118 antd-rust, #119 antd-csharp,
#120 antd-java, #121 antd-swift, #122 antd-dart, #123 antd-kotlin,
#124 antd-cpp, #125 antd-js/php/zig/lua, #127 antd-mcp.

## SDK example + build fixes

- fix(antd-go): make 03-files example self-contained and runnable (#91)
- fix(examples): make 04-files runnable across cpp/rust/elixir/lua/php/ruby/zig (#93)
- fix(examples): runnable dart 04_files + java Example03Files; add java Example03Chunks (#94)
- feat: gRPC transport example for antd-py and antd-rust (#113)
- feat(antd-py): 07_external_signer example + ant-dev dispatcher entry (#98)
- feat(antd-js): 07-external-signer example + antd-py empty-payments fix (#99)
- feat(rust/go): 07-external-signer examples (#100)
- feat(antd-csharp): 07_external_signer example (#101)
- feat(antd-java): 07_external_signer example (#102)
- feat(antd-kotlin): 07_external_signer example (#103)
- feat(antd-dart): 07_external_signer example (#104)
- feat(antd-ruby): 07_external_signer example (#105)
- feat(antd-php): 07_external_signer example (#106)
- chore(antd-kotlin): drop stale GraphDescendant from local proto copy (#108)

## Docs / infra

- docs: external-signer flow reference + ABI + python smoke test (#97)
- docs: add SECURITY.md with threat model and disclosure policy (#109)
- docs!: refresh per-SDK READMEs + llms-full.txt + openapi.yaml for v1.0 surface (#126)
- ci: add Go lint + test + vuln scanning for antd-go (#112)
- ci: extend antd-rust to sibling-repo parity (fmt + clippy + audit + doc) (#111)
- ci: skip antd/openapi.yaml and llms-full.txt from triggering CI (#128)
- chore(scripts): add full-stack + integration sweep helpers (#96)
- fix(antd-rust): regenerate Cargo.lock to unbreak --locked CI (#110)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant