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>
1 line
8.2 KiB
JavaScript
1 line
8.2 KiB
JavaScript
(()=>{var e={};e.id=931,e.ids=[931],e.modules={7849:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external")},2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},5403:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},4749:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},9695:(e,t,s)=>{"use strict";s.r(t),s.d(t,{GlobalError:()=>i.a,__next_app__:()=>m,originalPathname:()=>x,pages:()=>c,routeModule:()=>u,tree:()=>d}),s(908),s(7341),s(5866);var r=s(3191),n=s(8716),a=s(7922),i=s.n(a),l=s(5231),o={};for(let e in l)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(o[e]=()=>l[e]);s.d(t,o);let d=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(s.bind(s,908)),"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(s.bind(s,7341)),"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(s.t.bind(s,5866,23)),"next/dist/client/components/not-found-error"]}],c=["/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/app/page.tsx"],x="/page",m={require:s,loadChunk:()=>Promise.resolve()},u=new r.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},5642:(e,t,s)=>{Promise.resolve().then(s.bind(s,4174))},6643:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,2994,23)),Promise.resolve().then(s.t.bind(s,6114,23)),Promise.resolve().then(s.t.bind(s,9727,23)),Promise.resolve().then(s.t.bind(s,9671,23)),Promise.resolve().then(s.t.bind(s,1868,23)),Promise.resolve().then(s.t.bind(s,4759,23))},3557:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,9404,23))},4174:(e,t,s)=>{"use strict";s.d(t,{Nav:()=>l});var r=s(326);s(7577);var n=s(434),a=s(5047);let i=[{href:"/",label:"Home"},{href:"/api-explorer",label:"API Explorer"},{href:"/get-started",label:"Get Started"},{href:"/sdks",label:"SDKs"},{href:"/pricing",label:"Pricing"}];function l(){let e=(0,a.usePathname)();return r.jsx("header",{className:"sticky top-0 z-50 border-b border-slate-200 bg-white/90 backdrop-blur",children:(0,r.jsxs)("nav",{className:"mx-auto flex max-w-7xl items-center justify-between px-6 py-4",children:[(0,r.jsxs)(n.default,{href:"/",className:"flex items-center gap-2",children:[r.jsx("span",{className:"text-xl font-bold text-brand-600",children:"SentryAgent"}),r.jsx("span",{className:"rounded bg-brand-100 px-1.5 py-0.5 text-xs font-semibold text-brand-700",children:"AgentIdP"})]}),r.jsx("ul",{className:"flex items-center gap-1",children:i.map(({href:t,label:s})=>{let a="/"===t?"/"===e:e.startsWith(t);return r.jsx("li",{children:r.jsx(n.default,{href:t,className:["rounded-md px-3 py-2 text-sm font-medium transition-colors",a?"bg-brand-100 text-brand-700":"text-slate-600 hover:bg-slate-100 hover:text-slate-900"].join(" "),children:s})},t)})}),r.jsx(n.default,{href:"/get-started",className:"rounded-lg bg-brand-600 px-4 py-2 text-sm font-semibold text-white shadow-sm transition-colors hover:bg-brand-700",children:"Get Started Free"})]})})}},7341:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>c,metadata:()=>d});var r=s(9510);s(7272);var n=s(8570);let a=(0,n.createProxy)(String.raw`/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/components/Nav.tsx`),{__esModule:i,$$typeof:l}=a;a.default;let o=(0,n.createProxy)(String.raw`/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/components/Nav.tsx#Nav`),d={title:"SentryAgent.ai Developer Portal",description:"Identity and access management for AI agents. Register, authenticate, and secure your agents with SentryAgent AgentIdP."};function c({children:e}){return r.jsx("html",{lang:"en",children:(0,r.jsxs)("body",{className:"min-h-screen bg-slate-50 text-slate-900 antialiased",children:[r.jsx(o,{}),r.jsx("main",{children:e}),r.jsx("footer",{className:"border-t border-slate-200 py-8 text-center text-sm text-slate-500",children:(0,r.jsxs)("p",{children:["\xa9 ",new Date().getFullYear()," SentryAgent.ai — All rights reserved."]})})]})})}},908:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>i});var r=s(9510),n=s(7371);let a=[{icon:"\uD83D\uDD11",title:"Agent Identity",description:"Assign every AI agent a cryptographic identity backed by W3C DIDs. No more shared secrets or hard-coded API keys."},{icon:"\uD83D\uDEE1️",title:"OAuth 2.0 & OIDC",description:"Issue short-lived access tokens with fine-grained scopes. Integrate with any standards-compliant authorization server."},{icon:"\uD83D\uDCCB",title:"Full Audit Trail",description:"Every agent action is logged with tamper-evident entries. Meet SOC 2, ISO 27001, and enterprise compliance requirements."},{icon:"⚡",title:"High Performance",description:"Token issuance p95 under 500 ms at 1,000 concurrent agents. Redis-backed rate limiting scales horizontally."}];function i(){return(0,r.jsxs)(r.Fragment,{children:[r.jsx("section",{className:"bg-gradient-to-b from-brand-50 to-white px-6 py-24 text-center",children:(0,r.jsxs)("div",{className:"mx-auto max-w-3xl",children:[r.jsx("span",{className:"mb-4 inline-block rounded-full bg-brand-100 px-4 py-1 text-sm font-semibold text-brand-700",children:"Identity for AI Agents"}),(0,r.jsxs)("h1",{className:"mb-6 text-5xl font-extrabold leading-tight tracking-tight text-slate-900",children:["Secure Every Agent."," ",r.jsx("span",{className:"text-brand-600",children:"Trust Every Call."})]}),r.jsx("p",{className:"mb-10 text-xl leading-relaxed text-slate-600",children:"SentryAgent AgentIdP is the identity and access management platform built for AI agents. Register agents, issue OAuth 2.0 tokens, enforce policies, and audit every interaction — all from a single API."}),(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 sm:flex-row",children:[r.jsx(n.default,{href:"/get-started",className:"rounded-xl bg-brand-600 px-8 py-3 text-base font-semibold text-white shadow-md transition-colors hover:bg-brand-700",children:"Get Started Free"}),r.jsx(n.default,{href:"/api-explorer",className:"rounded-xl border border-slate-300 bg-white px-8 py-3 text-base font-semibold text-slate-700 shadow-sm transition-colors hover:bg-slate-50",children:"Explore the API"})]})]})}),r.jsx("section",{className:"px-6 py-20",children:(0,r.jsxs)("div",{className:"mx-auto max-w-6xl",children:[r.jsx("h2",{className:"mb-12 text-center text-3xl font-bold text-slate-900",children:"Everything your agents need to stay secure"}),r.jsx("div",{className:"grid gap-8 sm:grid-cols-2 lg:grid-cols-4",children:a.map(({icon:e,title:t,description:s})=>(0,r.jsxs)("div",{className:"rounded-2xl border border-slate-200 bg-white p-6 shadow-sm",children:[r.jsx("div",{className:"mb-3 text-3xl",children:e}),r.jsx("h3",{className:"mb-2 text-lg font-semibold text-slate-900",children:t}),r.jsx("p",{className:"text-sm leading-relaxed text-slate-600",children:s})]},t))})]})}),r.jsx("section",{className:"bg-brand-600 px-6 py-16 text-center text-white",children:(0,r.jsxs)("div",{className:"mx-auto max-w-2xl",children:[r.jsx("h2",{className:"mb-4 text-3xl font-bold",children:"Ready to secure your AI agents?"}),r.jsx("p",{className:"mb-8 text-lg text-brand-100",children:"Get started in minutes. Free tier includes 10 agents and 1,000 API calls per day — no credit card required."}),r.jsx(n.default,{href:"/get-started",className:"inline-block rounded-xl bg-white px-8 py-3 text-base font-semibold text-brand-700 shadow-md transition-colors hover:bg-brand-50",children:"Start Building Now"})]})})]})}},7371:(e,t,s)=>{"use strict";s.d(t,{default:()=>n.a});var r=s(1812),n=s.n(r)},1812:(e,t,s)=>{"use strict";let{createProxy:r}=s(8570);e.exports=r("/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/link.js")},7272:()=>{}};var t=require("../webpack-runtime.js");t.C(e);var s=e=>t(t.s=e),r=t.X(0,[24],()=>s(9695));module.exports=r})(); |