From 0a5e95673504158429d1083146d627d928851779 Mon Sep 17 00:00:00 2001 From: Tianqi Zhang Date: Wed, 4 Mar 2026 20:56:01 +0800 Subject: [PATCH 1/3] Prepare MemNet SDK NuGet packaging and publish workflow --- .github/workflows/publish-sdk-packages.yml | 44 +++++++++++++++++++ README.md | 12 +++++ docs/project/TASK_BOARD.md | 2 + .../MemNet.AgentMemory.csproj | 14 ++++++ src/MemNet.AgentMemory/README.md | 15 +++++++ src/MemNet.Client/MemNet.Client.csproj | 14 ++++++ src/MemNet.Client/README.md | 14 ++++++ 7 files changed, 115 insertions(+) create mode 100644 .github/workflows/publish-sdk-packages.yml create mode 100644 src/MemNet.AgentMemory/README.md create mode 100644 src/MemNet.Client/README.md diff --git a/.github/workflows/publish-sdk-packages.yml b/.github/workflows/publish-sdk-packages.yml new file mode 100644 index 0000000..925f002 --- /dev/null +++ b/.github/workflows/publish-sdk-packages.yml @@ -0,0 +1,44 @@ +name: Publish SDK Packages + +on: + workflow_dispatch: + +jobs: + publish: + name: Pack and push MemNet SDK packages + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Restore SDK projects + run: | + dotnet restore src/MemNet.Client/MemNet.Client.csproj --configfile NuGet.Config + dotnet restore src/MemNet.AgentMemory/MemNet.AgentMemory.csproj --configfile NuGet.Config + + - name: Run SDK unit tests + run: dotnet test tests/MemNet.Sdk.UnitTests/MemNet.Sdk.UnitTests.csproj -c Release --configfile NuGet.Config + + - name: Run SDK integration tests + run: dotnet test tests/MemNet.Sdk.IntegrationTests/MemNet.Sdk.IntegrationTests.csproj -c Release --configfile NuGet.Config + + - name: Pack SDK projects + run: | + dotnet pack src/MemNet.Client/MemNet.Client.csproj -c Release --no-restore -o artifacts/nuget + dotnet pack src/MemNet.AgentMemory/MemNet.AgentMemory.csproj -c Release --no-restore -o artifacts/nuget + + - name: Push packages to NuGet.org + env: + NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} + run: | + dotnet nuget push artifacts/nuget/*.nupkg \ + --api-key "$NUGET_API_KEY" \ + --source "https://api.nuget.org/v3/index.json" \ + --skip-duplicate diff --git a/README.md b/README.md index 8951ba0..b968c1d 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,18 @@ All APIs are scoped by route: ## .NET SDK Quickstart +## .NET SDK Packages + +- `MemNet.Client`: https://www.nuget.org/packages/MemNet.Client +- `MemNet.AgentMemory`: https://www.nuget.org/packages/MemNet.AgentMemory + +Install: + +```bash +dotnet add package MemNet.Client --prerelease +dotnet add package MemNet.AgentMemory --prerelease +``` + ### Low-level client (`MemNet.Client`) ```csharp diff --git a/docs/project/TASK_BOARD.md b/docs/project/TASK_BOARD.md index 871c923..3471fe3 100644 --- a/docs/project/TASK_BOARD.md +++ b/docs/project/TASK_BOARD.md @@ -28,6 +28,8 @@ ### Quality and Release Readiness +- [x] Add NuGet package metadata/readmes for `MemNet.Client` and `MemNet.AgentMemory` +- [x] Add manual publish workflow for SDK packages to nuget.org - [-] Close Phase 17 after full validation run (`dotnet test` + smoke + docs sync) - [-] Close Phase 18 after CI passes with framework tests and coverage reporting diff --git a/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj b/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj index ba9cb8e..c5606be 100644 --- a/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj +++ b/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj @@ -8,8 +8,22 @@ net8.0 enable enable + 0.1.0-preview.1 + MemNet.AgentMemory + MemNet.AgentMemory + High-level file-first memory facade for mem.net agents on .NET. + mem.net contributors + mem.net;memory;agent;sdk;llm;tools + https://github.com/TianqiZhang/mem.net + https://github.com/TianqiZhang/mem.net + README.md + true + + + + diff --git a/src/MemNet.AgentMemory/README.md b/src/MemNet.AgentMemory/README.md new file mode 100644 index 0000000..a170d38 --- /dev/null +++ b/src/MemNet.AgentMemory/README.md @@ -0,0 +1,15 @@ +# MemNet.AgentMemory + +`MemNet.AgentMemory` is the high-level agent-facing SDK built on `MemNet.Client`. + +It provides a file-first tool facade for agent memory workflows: + +- `memory_list_files` +- `memory_load_file` +- `memory_write_file` +- `memory_patch_file` +- `memory_recall` + +Repository and full examples: + +- https://github.com/TianqiZhang/mem.net diff --git a/src/MemNet.Client/MemNet.Client.csproj b/src/MemNet.Client/MemNet.Client.csproj index f1ea946..67ac2b7 100644 --- a/src/MemNet.Client/MemNet.Client.csproj +++ b/src/MemNet.Client/MemNet.Client.csproj @@ -4,8 +4,22 @@ net8.0 enable enable + 0.1.0-preview.1 + MemNet.Client + MemNet.Client + Low-level .NET client for the mem.net memory service with deterministic file and event operations. + mem.net contributors + mem.net;memory;agent;sdk;etag;context + https://github.com/TianqiZhang/mem.net + https://github.com/TianqiZhang/mem.net + README.md + true + + + + diff --git a/src/MemNet.Client/README.md b/src/MemNet.Client/README.md new file mode 100644 index 0000000..2b4903e --- /dev/null +++ b/src/MemNet.Client/README.md @@ -0,0 +1,14 @@ +# MemNet.Client + +`MemNet.Client` is the low-level .NET SDK for mem.net. + +It provides explicit, deterministic access to: + +- file list/load/write/patch operations +- context assembly +- event write/search +- ETag conflict-safe mutation flows + +Repository and full examples: + +- https://github.com/TianqiZhang/mem.net From d10da0e72ef7d21b49f0359b9e33a22a92145f95 Mon Sep 17 00:00:00 2001 From: Tianqi Zhang Date: Wed, 4 Mar 2026 22:43:19 +0800 Subject: [PATCH 2/3] Address PR review: fix README pack metadata, doc hierarchy, and snupkg push - Change None Include to None Update for README.md in both SDK csproj files to avoid NETSDK1022 duplicate item errors in SDK-style projects - Demote '.NET SDK Packages' to h3 subsection under '.NET SDK Quickstart' so the Quickstart heading is not left empty - Add snupkg push step to publish workflow so symbol packages reach NuGet.org alongside the main nupkg files --- .github/workflows/publish-sdk-packages.yml | 4 ++++ README.md | 2 +- src/MemNet.AgentMemory/MemNet.AgentMemory.csproj | 2 +- src/MemNet.Client/MemNet.Client.csproj | 2 +- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-sdk-packages.yml b/.github/workflows/publish-sdk-packages.yml index 925f002..b60a3d8 100644 --- a/.github/workflows/publish-sdk-packages.yml +++ b/.github/workflows/publish-sdk-packages.yml @@ -42,3 +42,7 @@ jobs: --api-key "$NUGET_API_KEY" \ --source "https://api.nuget.org/v3/index.json" \ --skip-duplicate + dotnet nuget push artifacts/nuget/*.snupkg \ + --api-key "$NUGET_API_KEY" \ + --source "https://api.nuget.org/v3/index.json" \ + --skip-duplicate diff --git a/README.md b/README.md index b968c1d..8963d7f 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ All APIs are scoped by route: ## .NET SDK Quickstart -## .NET SDK Packages +### .NET SDK Packages - `MemNet.Client`: https://www.nuget.org/packages/MemNet.Client - `MemNet.AgentMemory`: https://www.nuget.org/packages/MemNet.AgentMemory diff --git a/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj b/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj index c5606be..793fd8f 100644 --- a/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj +++ b/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj @@ -21,7 +21,7 @@ - + diff --git a/src/MemNet.Client/MemNet.Client.csproj b/src/MemNet.Client/MemNet.Client.csproj index 67ac2b7..115d2e2 100644 --- a/src/MemNet.Client/MemNet.Client.csproj +++ b/src/MemNet.Client/MemNet.Client.csproj @@ -17,7 +17,7 @@ - + From f82ec6468056704f3573d68ae3ef0f5ad6dce055 Mon Sep 17 00:00:00 2001 From: Tianqi Zhang Date: Wed, 4 Mar 2026 23:08:43 +0800 Subject: [PATCH 3/3] Centralize version and package metadata in Directory.Build.props - Add src/Directory.Build.props with shared VersionPrefix/VersionSuffix, SourceLink, symbol packages, and NuGet metadata for packable projects - Slim down SDK csproj files to project-specific properties only - Mark MemoryService as IsPackable=false, remove its duplicated SourceLink/symbols config (now inherited) - Remove publish-sdk-packages.yml workflow; packages will be pushed manually via dotnet nuget push --- .github/workflows/publish-sdk-packages.yml | 48 ------------------- src/Directory.Build.props | 36 ++++++++++++++ .../MemNet.AgentMemory.csproj | 23 --------- src/MemNet.Client/MemNet.Client.csproj | 23 --------- .../MemNet.MemoryService.csproj | 12 +---- 5 files changed, 37 insertions(+), 105 deletions(-) delete mode 100644 .github/workflows/publish-sdk-packages.yml create mode 100644 src/Directory.Build.props diff --git a/.github/workflows/publish-sdk-packages.yml b/.github/workflows/publish-sdk-packages.yml deleted file mode 100644 index b60a3d8..0000000 --- a/.github/workflows/publish-sdk-packages.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: Publish SDK Packages - -on: - workflow_dispatch: - -jobs: - publish: - name: Pack and push MemNet SDK packages - runs-on: ubuntu-latest - permissions: - contents: read - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup .NET - uses: actions/setup-dotnet@v4 - with: - dotnet-version: 8.0.x - - - name: Restore SDK projects - run: | - dotnet restore src/MemNet.Client/MemNet.Client.csproj --configfile NuGet.Config - dotnet restore src/MemNet.AgentMemory/MemNet.AgentMemory.csproj --configfile NuGet.Config - - - name: Run SDK unit tests - run: dotnet test tests/MemNet.Sdk.UnitTests/MemNet.Sdk.UnitTests.csproj -c Release --configfile NuGet.Config - - - name: Run SDK integration tests - run: dotnet test tests/MemNet.Sdk.IntegrationTests/MemNet.Sdk.IntegrationTests.csproj -c Release --configfile NuGet.Config - - - name: Pack SDK projects - run: | - dotnet pack src/MemNet.Client/MemNet.Client.csproj -c Release --no-restore -o artifacts/nuget - dotnet pack src/MemNet.AgentMemory/MemNet.AgentMemory.csproj -c Release --no-restore -o artifacts/nuget - - - name: Push packages to NuGet.org - env: - NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} - run: | - dotnet nuget push artifacts/nuget/*.nupkg \ - --api-key "$NUGET_API_KEY" \ - --source "https://api.nuget.org/v3/index.json" \ - --skip-duplicate - dotnet nuget push artifacts/nuget/*.snupkg \ - --api-key "$NUGET_API_KEY" \ - --source "https://api.nuget.org/v3/index.json" \ - --skip-duplicate diff --git a/src/Directory.Build.props b/src/Directory.Build.props new file mode 100644 index 0000000..f6c56dd --- /dev/null +++ b/src/Directory.Build.props @@ -0,0 +1,36 @@ + + + + + 0.1.0 + preview.1 + + + + + true + true + true + snupkg + true + + + + + + + + + mem.net contributors + https://github.com/TianqiZhang/mem.net + https://github.com/TianqiZhang/mem.net + mem.net;memory;agent;sdk + README.md + true + + + + + + + diff --git a/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj b/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj index 793fd8f..9e9a88a 100644 --- a/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj +++ b/src/MemNet.AgentMemory/MemNet.AgentMemory.csproj @@ -8,31 +8,8 @@ net8.0 enable enable - 0.1.0-preview.1 MemNet.AgentMemory - MemNet.AgentMemory High-level file-first memory facade for mem.net agents on .NET. - mem.net contributors - mem.net;memory;agent;sdk;llm;tools - https://github.com/TianqiZhang/mem.net - https://github.com/TianqiZhang/mem.net - README.md - true - - - - - - - - - - - - true - true - true - snupkg diff --git a/src/MemNet.Client/MemNet.Client.csproj b/src/MemNet.Client/MemNet.Client.csproj index 115d2e2..9afca01 100644 --- a/src/MemNet.Client/MemNet.Client.csproj +++ b/src/MemNet.Client/MemNet.Client.csproj @@ -4,31 +4,8 @@ net8.0 enable enable - 0.1.0-preview.1 MemNet.Client - MemNet.Client Low-level .NET client for the mem.net memory service with deterministic file and event operations. - mem.net contributors - mem.net;memory;agent;sdk;etag;context - https://github.com/TianqiZhang/mem.net - https://github.com/TianqiZhang/mem.net - README.md - true - - - - - - - - - - - - true - true - true - snupkg diff --git a/src/MemNet.MemoryService/MemNet.MemoryService.csproj b/src/MemNet.MemoryService/MemNet.MemoryService.csproj index 804a3ea..2859141 100644 --- a/src/MemNet.MemoryService/MemNet.MemoryService.csproj +++ b/src/MemNet.MemoryService/MemNet.MemoryService.csproj @@ -5,16 +5,10 @@ enable enable false + false false - - true - true - true - snupkg - - $(DefineConstants);MEMNET_ENABLE_AZURE_SDK bin/$(Configuration)/azure/ @@ -31,8 +25,4 @@ - - - -