feat(phase-4): WS2 + WS3 — Developer Portal (Next.js 14) and CLI tool (sentryagent)

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>
This commit is contained in:
SentryAgent.ai Developer
2026-04-02 04:29:50 +00:00
parent 1b682c22b2
commit d1e6af25aa
147 changed files with 8079 additions and 29 deletions

View File

@@ -0,0 +1 @@
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"231":{"*":{"id":"9404","name":"*","chunks":[],"async":false}},"16585":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"39275":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"49947":{"*":{"id":"3512","name":"*","chunks":[],"async":false}},"56390":{"*":{"id":"4174","name":"*","chunks":[],"async":false}},"61343":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"63933":{"*":{"id":"6435","name":"*","chunks":[],"async":false}},"66513":{"*":{"id":"6114","name":"*","chunks":[],"async":false}},"76130":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"95751":{"*":{"id":"2994","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/components/app-router.js":{"id":95751,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/components/app-router.js":{"id":95751,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/components/client-page.js":{"id":66513,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/components/client-page.js":{"id":66513,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/components/error-boundary.js":{"id":76130,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":76130,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/components/layout-router.js":{"id":39275,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39275,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/components/not-found-boundary.js":{"id":16585,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":16585,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/components/render-from-template-context.js":{"id":61343,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":61343,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/app/globals.css":{"id":58877,"name":"*","chunks":["231","static/chunks/231-711da40718c2508c.js","185","static/chunks/app/layout-db75ca053106eec0.js"],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/components/Nav.tsx":{"id":56390,"name":"*","chunks":["231","static/chunks/231-711da40718c2508c.js","185","static/chunks/app/layout-db75ca053106eec0.js"],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/client/link.js":{"id":231,"name":"*","chunks":["231","static/chunks/231-711da40718c2508c.js","931","static/chunks/app/page-d3d46720ba5b5546.js"],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/node_modules/next/dist/esm/client/link.js":{"id":231,"name":"*","chunks":["231","static/chunks/231-711da40718c2508c.js","931","static/chunks/app/page-d3d46720ba5b5546.js"],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/components/SwaggerExplorer.tsx":{"id":49947,"name":"*","chunks":[],"async":false},"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/components/GetStartedWizard.tsx":{"id":63933,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/":[],"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/app/layout":["static/css/0d1e1814871c1ae4.css"],"/home/ubuntu/vj_ai_agents_dev/sentryagent-idp/portal/app/page":[]}}