AI agent for ABP.io / ASP.NET Zero
If your product is built on ASP.NET Zero, the adapter is a thin translation layer over the auth, permissions, application services, and notifications ABP already ships.
Auth method: jwt (ASP.NET Zero bearer tokens / AbpSession)
ASP.NET Zero (ASP.NET Core plus the ABP framework) already provides the three things every Cambiary adapter needs: JWT authentication via AbpSession, a rich permission system in IPermissionChecker, and application services (IApplicationService over IRepository<T>). You are not building auth, permissions, or data access — you are exposing the ones you already have. That is why this is the easy case.
The adapter maps one-to-one onto infrastructure you already run: identity and tenant come from IAbpSession, getPermissions projects IPermissionChecker.IsGranted results into platform tool-permission strings, executeTool dispatches into your existing application services, and pushNotification reuses ABP's notification system. Tenant context maps straight from IAbpSession.TenantId, lining up with ABP's own multi-tenancy so runs and audit are already tenant-scoped.
This is the reference adapter that actually exists in the repository (adapters/pms-ats/), backing the platform's first fully worked reference workflow — governed candidate screening inside a People Management Suite. A worked C# controller shows each of the five methods reusing ABP primitives.
The integration path.
Embed <agentic-panel> in your Angular or MVC page and feed it the current AbpSession token plus the entity on screen as a references-only HostContext.
Add an adapter controller (AgentAdapterController : AbpController) that reuses ABP's auth, IPermissionChecker, and application services.
Map ABP permissions to platform tool-permission strings in getPermissions (e.g. IsGrantedAsync("Pages.ATS.Resumes") to tool.list_resumes.execute).
Dispatch executeTool idempotently into your IApplicationService classes; honor the idempotencyKey so retries replay rather than repeat.
Register the host once with authMethod "jwt"; tenantId comes from IAbpSession.TenantId.
Worked C# adapter controller (abridged)
[Route("agent-adapter")]
public class AgentAdapterController : AbpController
{
private readonly IPermissionChecker _permissionChecker;
private readonly IResumeAppService _resumeAppService;
// validateToken — ABP already validated the JWT; AbpSession carries identity.
[HttpGet("whoami")]
public object WhoAmI() =>
new { valid = AbpSession.UserId.HasValue, userId = AbpSession.UserId };
// getPermissions — map ABP permissions to platform tool-permission strings.
[HttpGet("permissions")]
public async Task<string[]> GetPermissions()
{
var perms = new List<string>();
if (await _permissionChecker.IsGrantedAsync("Pages.ATS.Resumes"))
perms.Add("tool.list_resumes.execute");
if (await _permissionChecker.IsGrantedAsync("Pages.ATS.Analysis.Save"))
perms.Add("tool.save_analysis.execute");
return perms.ToArray();
}
// executeTool — idempotent dispatch into existing application services.
[HttpPost("tools/{toolId}/execute")]
public async Task<ToolResult> Execute(string toolId, [FromBody] ToolArgs a)
{
if (await _idem.SeenAsync(a.IdempotencyKey))
return await _idem.ReplayAsync(a.IdempotencyKey);
return toolId switch
{
"list_resumes" => Ok(await _resumeAppService.ListAsync(a.Args["jobId"])),
"save_analysis" => Ok(await _resumeAppService.SaveAnalysisAsync(a.Args)),
_ => Fail("unknown tool"),
};
}
} Other integration paths.
The host changes; the two seams do not. Whichever platform you start from, writes still pass through the governance gate — permission, policy, approval, audit.
Shopify
A hosted app using OAuth2, where the adapter holds the Admin API token. One adapter serves both storefront shoppers and back-office merchants — persona is just the user's role and permissions.
Self-hosted commercenopCommerce
Self-hosted commerce with JWT auth and C# services. Swapping it for Shopify is an adapter-internal detail, invisible to the platform core.
Any stackBuild your own adapter
Support desks, internal tools, and multi-system single-tenant orchestration. Implement five methods in-process in TypeScript or out-of-process over HTTP in any language — C#, PHP, Python.
This is a documented integration approach with worked code — not a pre-built, install-and-go production connector. Governance, the adapter SDK, idempotency, and audit are built; the gateway-to-registered-adapter write dispatch is still maturing. See the full build-status honesty box →
Start your ABP.io / ASP.NET Zero integration.
The adapter SDK and worked examples are in the docs. We'll walk your team through the two seams, the governance gate, and this path end to end.