Skip to content

NimBus v4.8.0

Choose a tag to compare

@akakaule akakaule released this 13 Oct 16:27
· 19 commits to master since this release
180f8d7

NimBus 4.8.0 adds agent API keys, so agents built on NimBus.Agents can call the agent API wherever sign-in is required, and adds workflow prompts to the operator MCP server. It also fixes bugs in the agent API, NimBus Identity, the SQL Server libraries and the Resolver.

Highlights

  • Added agent API keys. A site Owner issues each agent its own key in Settings → Agent keys, sees when it was last used, and can revoke or remove it. The agent sends the key as X-NimBus-Agent-Key (AgentOptions.ApiKey), and it works only on /api/agent/*.
  • Added four workflow prompts to the operator MCP server: triage, investigate-message, recover-message and failure-report. They only guide the client; every read and change still goes through the existing tools, with their authorization and audit.
  • Changed Operations → Delete all events to wipe the endpoint completely. It recreates the endpoint's subscription and Deferred subscription, then deletes its events and stored message history, and it is now audit-logged. The storage-only Purge data… item is gone from the endpoint row menu.
  • Added an aspire deploy path that publishes the CrmErpDemo to Azure Container Apps, including the Agent Zone and the enrichment agent, which signs in with an agent API key.
  • Fixed the agent API handing out and settling the same pending hand-off twice when an agent returned to receive before the Resolver had processed its settlement. That also wrote two CompleteHandoff audit rows.
  • Fixed every request from a NimBus Identity user who holds a role failing with a 500 ("Collection was modified").
  • Fixed the NimBus Identity bootstrap admin being created with no role, which left a fresh store with no one able to grant access.
  • Fixed the NimBus SQL Server libraries failing to sign in with Authentication=Active Directory … connection strings on SqlClient 7.
  • Fixed three gaps in the Resolver's throttled-store redelivery. Dead-letter replay now starts a fresh throttle budget, any failure to schedule the retry copy falls back to broker redelivery, and throttled heartbeats retry in place.

Compatibility

IEndpointMetadataStore adds GetAgentApiKeySettings, TrySetAgentApiKeySettings, GetAgentApiKeyUsage and RecordAgentApiKeyUse, and IMessageTrackingStore adds PurgeStoredMessages. None has a default implementation, so custom stores must add them; the Cosmos DB, SQL Server and in-memory stores already do. SQL Server applies migration 0024_AgentApiKeys on startup; with VerifyOnly, run it from your pipeline first. Cosmos DB keeps agent keys in the existing settings container, so no nb infra apply is needed. MessageAuditType adds AgentApiKeyCreated, AgentApiKeyRevoked and AgentApiKeyRemoved, which are always recorded.

The WebApp adds GET/POST /api/admin/agent-keys, POST /api/admin/agent-keys/{keyId}/revoke and DELETE /api/admin/agent-keys/{keyId}, all for site Owners only. A request carrying an agent key whose X-Agent-Id names a different agent gets 403. Delete all events now also recreates the endpoint's Service Bus subscriptions and deletes its stored message history; audit records are kept. POST /api/endpoint/{endpointName}/purge remains but the UI no longer calls it. A newly created Identity bootstrap admin is now a site Owner (EIP_Management). The SQL Server libraries now depend on Microsoft.Data.SqlClient.Extensions.Azure. The three-argument HandoffSettlementService constructor is obsolete. No topology change or wire change.

This release was validated at commit 180f8d7 with the full .NET Release build and 3,776 tests in CI (2 skipped), live Cosmos DB and SQL Server conformance suites with no skipped tests, and Service Bus emulator compatibility checks. The frontend production build and 726 frontend tests passed against the release commit's sources. The hand-off fix was checked live in the local CrmErpDemo, with one settlement and one audit row for each of six contacts. The agents' Azure deployment was checked through aspire publish output only, not a real deploy.

PRs: #239, #240, #242, #243, #244, #245, #246, #247, #248, #249, #250, #252, #253, #254, #255, #256, #257, #258, #259

Commits: v4.7.0...v4.8.0