WS2: Developer Portal (portal/) - Standalone Next.js 14 + Tailwind CSS app — independent deployment - Home page: hero, feature grid, CTA to /get-started - /pricing: free tier limits table (10 agents, 1k calls/day) + paid tier CTA - /sdks: all 4 SDKs (Node.js, Python, Go, Java) with install + code examples - /api-explorer: Swagger UI from NEXT_PUBLIC_API_URL/openapi.json, persistAuthorization - /get-started: 4-step wizard (setup → register agent → credentials → SDK snippet) - Shared Nav component with active-link highlighting - Build: 8/8 static pages, zero TypeScript errors WS3: CLI Tool (cli/ — npm package: sentryagent) - configure, register-agent, list-agents, issue-token, rotate-credentials, tail-audit-log - Auto OAuth2 token fetch + 30s-buffer cache via client_credentials flow - chalk-formatted table output, confirmation prompts, bounded audit log dedup - bash + zsh shell completion scripts - README with installation, all commands, and completion setup - Build: tsc clean, node dist/index.js --help verified Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
86 lines
23 KiB
HTML
86 lines
23 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/0d1e1814871c1ae4.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-75820735529c9609.js"/><script src="/_next/static/chunks/fd9d1056-0ffa74f19011bd1c.js" async=""></script><script src="/_next/static/chunks/23-eed73080eee64cfd.js" async=""></script><script src="/_next/static/chunks/main-app-ce894e58853e9441.js" async=""></script><script src="/_next/static/chunks/231-711da40718c2508c.js" async=""></script><script src="/_next/static/chunks/app/layout-db75ca053106eec0.js" async=""></script><title>SentryAgent.ai Developer Portal</title><meta name="description" content="Identity and access management for AI agents. Register, authenticate, and secure your agents with SentryAgent AgentIdP."/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="min-h-screen bg-slate-50 text-slate-900 antialiased"><header class="sticky top-0 z-50 border-b border-slate-200 bg-white/90 backdrop-blur"><nav class="mx-auto flex max-w-7xl items-center justify-between px-6 py-4"><a class="flex items-center gap-2" href="/"><span class="text-xl font-bold text-brand-600">SentryAgent</span><span class="rounded bg-brand-100 px-1.5 py-0.5 text-xs font-semibold text-brand-700">AgentIdP</span></a><ul class="flex items-center gap-1"><li><a class="rounded-md px-3 py-2 text-sm font-medium transition-colors text-slate-600 hover:bg-slate-100 hover:text-slate-900" href="/">Home</a></li><li><a class="rounded-md px-3 py-2 text-sm font-medium transition-colors text-slate-600 hover:bg-slate-100 hover:text-slate-900" href="/api-explorer">API Explorer</a></li><li><a class="rounded-md px-3 py-2 text-sm font-medium transition-colors text-slate-600 hover:bg-slate-100 hover:text-slate-900" href="/get-started">Get Started</a></li><li><a class="rounded-md px-3 py-2 text-sm font-medium transition-colors bg-brand-100 text-brand-700" href="/sdks">SDKs</a></li><li><a class="rounded-md px-3 py-2 text-sm font-medium transition-colors text-slate-600 hover:bg-slate-100 hover:text-slate-900" href="/pricing">Pricing</a></li></ul><a class="rounded-lg bg-brand-600 px-4 py-2 text-sm font-semibold text-white shadow-sm transition-colors hover:bg-brand-700" href="/get-started">Get Started Free</a></nav></header><main><div class="px-6 py-20"><div class="mx-auto max-w-5xl"><div class="mb-12 text-center"><h1 class="mb-4 text-4xl font-extrabold text-slate-900">Official SDKs</h1><p class="text-xl text-slate-600">Native libraries for your language of choice. Every SDK is type-safe, fully tested, and maintained by the SentryAgent team.</p></div><div class="space-y-10"><div class="rounded-2xl border border-slate-200 bg-white p-8 shadow-sm"><div class="mb-6 flex items-center justify-between"><div class="flex items-center gap-3"><h2 class="text-2xl font-bold text-slate-900">Node.js SDK</h2><span class="rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700">TypeScript</span></div><a href="https://github.com/sentryagent/sdk-node" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-brand-600 hover:underline">View on GitHub →</a></div><div class="mb-6"><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Installation</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100"><code>npm install @sentryagent/idp-sdk</code></pre></div><div><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Quick Start</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100"><code>import { AgentIdPClient } from '@sentryagent/idp-sdk';
|
|
|
|
const client = new AgentIdPClient({
|
|
apiUrl: process.env.AGENTIDP_URL!,
|
|
clientId: process.env.AGENTIDP_CLIENT_ID!,
|
|
clientSecret: process.env.AGENTIDP_CLIENT_SECRET!,
|
|
});
|
|
|
|
// Register a new agent
|
|
const agent = await client.agents.register({
|
|
name: 'my-ai-agent',
|
|
description: 'Production summarisation agent',
|
|
});
|
|
|
|
console.log('Agent ID:', agent.agentId);
|
|
|
|
// Issue an access token
|
|
const { accessToken } = await client.tokens.issue(agent.agentId);
|
|
console.log('Token:', accessToken);</code></pre></div></div><div class="rounded-2xl border border-slate-200 bg-white p-8 shadow-sm"><div class="mb-6 flex items-center justify-between"><div class="flex items-center gap-3"><h2 class="text-2xl font-bold text-slate-900">Python SDK</h2><span class="rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700">Python</span></div><a href="https://github.com/sentryagent/sdk-python" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-brand-600 hover:underline">View on GitHub →</a></div><div class="mb-6"><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Installation</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100"><code>pip install sentryagent-idp</code></pre></div><div><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Quick Start</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100"><code>from sentryagent_idp import AgentIdPClient
|
|
|
|
client = AgentIdPClient(
|
|
api_url=os.environ["AGENTIDP_URL"],
|
|
client_id=os.environ["AGENTIDP_CLIENT_ID"],
|
|
client_secret=os.environ["AGENTIDP_CLIENT_SECRET"],
|
|
)
|
|
|
|
# Register a new agent
|
|
agent = client.agents.register(
|
|
name="my-ai-agent",
|
|
description="Production summarisation agent",
|
|
)
|
|
|
|
print("Agent ID:", agent.agent_id)
|
|
|
|
# Issue an access token
|
|
token_response = client.tokens.issue(agent.agent_id)
|
|
print("Token:", token_response.access_token)</code></pre></div></div><div class="rounded-2xl border border-slate-200 bg-white p-8 shadow-sm"><div class="mb-6 flex items-center justify-between"><div class="flex items-center gap-3"><h2 class="text-2xl font-bold text-slate-900">Go SDK</h2><span class="rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700">Go</span></div><a href="https://github.com/sentryagent/sdk-go" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-brand-600 hover:underline">View on GitHub →</a></div><div class="mb-6"><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Installation</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100"><code>go get github.com/sentryagent/idp-sdk-go</code></pre></div><div><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Quick Start</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100"><code>import (
|
|
"fmt"
|
|
"os"
|
|
idp "github.com/sentryagent/idp-sdk-go"
|
|
)
|
|
|
|
client := idp.NewClient(idp.Config{
|
|
APIURL: os.Getenv("AGENTIDP_URL"),
|
|
ClientID: os.Getenv("AGENTIDP_CLIENT_ID"),
|
|
ClientSecret: os.Getenv("AGENTIDP_CLIENT_SECRET"),
|
|
})
|
|
|
|
// Register a new agent
|
|
agent, err := client.Agents.Register(ctx, &idp.RegisterAgentInput{
|
|
Name: "my-ai-agent",
|
|
Description: "Production summarisation agent",
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
fmt.Println("Agent ID:", agent.AgentID)
|
|
|
|
// Issue an access token
|
|
token, err := client.Tokens.Issue(ctx, agent.AgentID)
|
|
fmt.Println("Token:", token.AccessToken)</code></pre></div></div><div class="rounded-2xl border border-slate-200 bg-white p-8 shadow-sm"><div class="mb-6 flex items-center justify-between"><div class="flex items-center gap-3"><h2 class="text-2xl font-bold text-slate-900">Java SDK</h2><span class="rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700">Java</span></div><a href="https://github.com/sentryagent/sdk-java" target="_blank" rel="noopener noreferrer" class="text-sm font-medium text-brand-600 hover:underline">View on GitHub →</a></div><div class="mb-6"><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Installation</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100"><code><dependency>
|
|
<groupId>ai.sentryagent</groupId>
|
|
<artifactId>idp-sdk</artifactId>
|
|
<version>1.0.0</version>
|
|
</dependency></code></pre></div><div><p class="mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500">Quick Start</p><pre class="overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100"><code>import ai.sentryagent.idp.AgentIdPClient;
|
|
import ai.sentryagent.idp.model.Agent;
|
|
import ai.sentryagent.idp.model.TokenResponse;
|
|
|
|
AgentIdPClient client = AgentIdPClient.builder()
|
|
.apiUrl(System.getenv("AGENTIDP_URL"))
|
|
.clientId(System.getenv("AGENTIDP_CLIENT_ID"))
|
|
.clientSecret(System.getenv("AGENTIDP_CLIENT_SECRET"))
|
|
.build();
|
|
|
|
// Register a new agent
|
|
Agent agent = client.agents().register(
|
|
RegisterAgentRequest.builder()
|
|
.name("my-ai-agent")
|
|
.description("Production summarisation agent")
|
|
.build()
|
|
);
|
|
System.out.println("Agent ID: " + agent.getAgentId());
|
|
|
|
// Issue an access token
|
|
TokenResponse token = client.tokens().issue(agent.getAgentId());
|
|
System.out.println("Token: " + token.getAccessToken());</code></pre></div></div></div></div></div></main><footer class="border-t border-slate-200 py-8 text-center text-sm text-slate-500"><p>© <!-- -->2026<!-- --> SentryAgent.ai — All rights reserved.</p></footer><script src="/_next/static/chunks/webpack-75820735529c9609.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/0d1e1814871c1ae4.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"2:I[95751,[],\"\"]\n4:I[39275,[],\"\"]\n5:I[61343,[],\"\"]\n6:I[56390,[\"231\",\"static/chunks/231-711da40718c2508c.js\",\"185\",\"static/chunks/app/layout-db75ca053106eec0.js\"],\"Nav\"]\n8:I[76130,[],\"\"]\n9:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/0d1e1814871c1ae4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L2\",null,{\"buildId\":\"h5w-rj60Vif8vQbejZCYz\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/sdks\",\"initialTree\":[\"\",{\"children\":[\"sdks\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"sdks\",{\"children\":[\"__PAGE__\",{},[[\"$L3\",[\"$\",\"div\",null,{\"className\":\"px-6 py-20\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-5xl\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-12 text-center\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"mb-4 text-4xl font-extrabold text-slate-900\",\"children\":\"Official SDKs\"}],[\"$\",\"p\",null,{\"className\":\"text-xl text-slate-600\",\"children\":\"Native libraries for your language of choice. Every SDK is type-safe, fully tested, and maintained by the SentryAgent team.\"}]]}],[\"$\",\"div\",null,{\"className\":\"space-y-10\",\"children\":[[\"$\",\"div\",\"Node.js SDK\",{\"className\":\"rounded-2xl border border-slate-200 bg-white p-8 shadow-sm\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-6 flex items-center justify-between\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold text-slate-900\",\"children\":\"Node.js SDK\"}],[\"$\",\"span\",null,{\"className\":\"rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700\",\"children\":\"TypeScript\"}]]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/sentryagent/sdk-node\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-brand-600 hover:underline\",\"children\":\"View on GitHub →\"}]]}],[\"$\",\"div\",null,{\"className\":\"mb-6\",\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Installation\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"npm install @sentryagent/idp-sdk\"}]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Quick Start\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"import { AgentIdPClient } from '@sentryagent/idp-sdk';\\n\\nconst client = new AgentIdPClient({\\n apiUrl: process.env.AGENTIDP_URL!,\\n clientId: process.env.AGENTIDP_CLIENT_ID!,\\n clientSecret: process.env.AGENTIDP_CLIENT_SECRET!,\\n});\\n\\n// Register a new agent\\nconst agent = await client.agents.register({\\n name: 'my-ai-agent',\\n description: 'Production summarisation agent',\\n});\\n\\nconsole.log('Agent ID:', agent.agentId);\\n\\n// Issue an access token\\nconst { accessToken } = await client.tokens.issue(agent.agentId);\\nconsole.log('Token:', accessToken);\"}]}]]}]]}],[\"$\",\"div\",\"Python SDK\",{\"className\":\"rounded-2xl border border-slate-200 bg-white p-8 shadow-sm\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-6 flex items-center justify-between\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold text-slate-900\",\"children\":\"Python SDK\"}],[\"$\",\"span\",null,{\"className\":\"rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700\",\"children\":\"Python\"}]]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/sentryagent/sdk-python\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-brand-600 hover:underline\",\"children\":\"View on GitHub →\"}]]}],[\"$\",\"div\",null,{\"className\":\"mb-6\",\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Installation\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"pip install sentryagent-idp\"}]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Quick Start\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"from sentryagent_idp import AgentIdPClient\\n\\nclient = AgentIdPClient(\\n api_url=os.environ[\\\"AGENTIDP_URL\\\"],\\n client_id=os.environ[\\\"AGENTIDP_CLIENT_ID\\\"],\\n client_secret=os.environ[\\\"AGENTIDP_CLIENT_SECRET\\\"],\\n)\\n\\n# Register a new agent\\nagent = client.agents.register(\\n name=\\\"my-ai-agent\\\",\\n description=\\\"Production summarisation agent\\\",\\n)\\n\\nprint(\\\"Agent ID:\\\", agent.agent_id)\\n\\n# Issue an access token\\ntoken_response = client.tokens.issue(agent.agent_id)\\nprint(\\\"Token:\\\", token_response.access_token)\"}]}]]}]]}],[\"$\",\"div\",\"Go SDK\",{\"className\":\"rounded-2xl border border-slate-200 bg-white p-8 shadow-sm\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-6 flex items-center justify-between\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold text-slate-900\",\"children\":\"Go SDK\"}],[\"$\",\"span\",null,{\"className\":\"rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700\",\"children\":\"Go\"}]]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/sentryagent/sdk-go\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-brand-600 hover:underline\",\"children\":\"View on GitHub →\"}]]}],[\"$\",\"div\",null,{\"className\":\"mb-6\",\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Installation\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"go get github.com/sentryagent/idp-sdk-go\"}]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Quick Start\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"import (\\n \\\"fmt\\\"\\n \\\"os\\\"\\n idp \\\"github.com/sentryagent/idp-sdk-go\\\"\\n)\\n\\nclient := idp.NewClient(idp.Config{\\n APIURL: os.Getenv(\\\"AGENTIDP_URL\\\"),\\n ClientID: os.Getenv(\\\"AGENTIDP_CLIENT_ID\\\"),\\n ClientSecret: os.Getenv(\\\"AGENTIDP_CLIENT_SECRET\\\"),\\n})\\n\\n// Register a new agent\\nagent, err := client.Agents.Register(ctx, \u0026idp.RegisterAgentInput{\\n Name: \\\"my-ai-agent\\\",\\n Description: \\\"Production summarisation agent\\\",\\n})\\nif err != nil {\\n panic(err)\\n}\\nfmt.Println(\\\"Agent ID:\\\", agent.AgentID)\\n\\n// Issue an access token\\ntoken, err := client.Tokens.Issue(ctx, agent.AgentID)\\nfmt.Println(\\\"Token:\\\", token.AccessToken)\"}]}]]}]]}],[\"$\",\"div\",\"Java SDK\",{\"className\":\"rounded-2xl border border-slate-200 bg-white p-8 shadow-sm\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-6 flex items-center justify-between\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-2xl font-bold text-slate-900\",\"children\":\"Java SDK\"}],[\"$\",\"span\",null,{\"className\":\"rounded-full bg-brand-100 px-3 py-0.5 text-sm font-semibold text-brand-700\",\"children\":\"Java\"}]]}],[\"$\",\"a\",null,{\"href\":\"https://github.com/sentryagent/sdk-java\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"text-sm font-medium text-brand-600 hover:underline\",\"children\":\"View on GitHub →\"}]]}],[\"$\",\"div\",null,{\"className\":\"mb-6\",\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Installation\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-3 text-sm text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"\u003cdependency\u003e\\n \u003cgroupId\u003eai.sentryagent\u003c/groupId\u003e\\n \u003cartifactId\u003eidp-sdk\u003c/artifactId\u003e\\n \u003cversion\u003e1.0.0\u003c/version\u003e\\n\u003c/dependency\u003e\"}]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-2 text-sm font-semibold uppercase tracking-wider text-slate-500\",\"children\":\"Quick Start\"}],[\"$\",\"pre\",null,{\"className\":\"overflow-x-auto rounded-lg bg-slate-900 px-4 py-4 text-sm leading-relaxed text-slate-100\",\"children\":[\"$\",\"code\",null,{\"children\":\"import ai.sentryagent.idp.AgentIdPClient;\\nimport ai.sentryagent.idp.model.Agent;\\nimport ai.sentryagent.idp.model.TokenResponse;\\n\\nAgentIdPClient client = AgentIdPClient.builder()\\n .apiUrl(System.getenv(\\\"AGENTIDP_URL\\\"))\\n .clientId(System.getenv(\\\"AGENTIDP_CLIENT_ID\\\"))\\n .clientSecret(System.getenv(\\\"AGENTIDP_CLIENT_SECRET\\\"))\\n .build();\\n\\n// Register a new agent\\nAgent agent = client.agents().register(\\n RegisterAgentRequest.builder()\\n .name(\\\"my-ai-agent\\\")\\n .description(\\\"Production summarisation agent\\\")\\n .build()\\n);\\nSystem.out.println(\\\"Agent ID: \\\" + agent.getAgentId());\\n\\n// Issue an access token\\nTokenResponse token = client.tokens().issue(agent.getAgentId());\\nSystem.out.println(\\\"Token: \\\" + token.getAccessToken());\"}]}]]}]]}]]}]]}]}]],null],null]},[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"sdks\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-slate-50 text-slate-900 antialiased\",\"children\":[[\"$\",\"$L6\",null,{}],[\"$\",\"main\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}],[\"$\",\"footer\",null,{\"className\":\"border-t border-slate-200 py-8 text-center text-sm text-slate-500\",\"children\":[\"$\",\"p\",null,{\"children\":[\"© \",2026,\" SentryAgent.ai — All rights reserved.\"]}]}]]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L7\"],\"globalErrorComponent\":\"$8\",\"missingSlots\":\"$W9\"}]]\n"])</script><script>self.__next_f.push([1,"7:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"SentryAgent.ai Developer Portal\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Identity and access management for AI agents. Register, authenticate, and secure your agents with SentryAgent AgentIdP.\"}]]\n3:null\n"])</script></body></html> |