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:
@@ -28,44 +28,44 @@
|
||||
|
||||
## 4. WS2: Developer Portal — Setup & Core Pages
|
||||
|
||||
- [ ] 4.1 Scaffold `portal/` as a standalone Next.js 14 app with Tailwind CSS — `npx create-next-app@latest portal --typescript --tailwind`
|
||||
- [ ] 4.2 Add `NEXT_PUBLIC_API_URL` env var support — create `portal/.env.example`
|
||||
- [ ] 4.3 Create portal home page (`portal/app/page.tsx`) — hero, product description, CTA to `/get-started`
|
||||
- [ ] 4.4 Create `/pricing` page with free tier limits table (10 agents, 1,000 calls/day) and paid tier CTA
|
||||
- [ ] 4.5 Create `/sdks` page listing all 4 SDKs with installation commands and minimal code examples
|
||||
- [ ] 4.6 Create shared nav component with links to: Home, API Explorer, Get Started, SDKs, Pricing
|
||||
- [x] 4.1 Scaffold `portal/` as a standalone Next.js 14 app with Tailwind CSS — `npx create-next-app@latest portal --typescript --tailwind`
|
||||
- [x] 4.2 Add `NEXT_PUBLIC_API_URL` env var support — create `portal/.env.example`
|
||||
- [x] 4.3 Create portal home page (`portal/app/page.tsx`) — hero, product description, CTA to `/get-started`
|
||||
- [x] 4.4 Create `/pricing` page with free tier limits table (10 agents, 1,000 calls/day) and paid tier CTA
|
||||
- [x] 4.5 Create `/sdks` page listing all 4 SDKs with installation commands and minimal code examples
|
||||
- [x] 4.6 Create shared nav component with links to: Home, API Explorer, Get Started, SDKs, Pricing
|
||||
|
||||
## 5. WS2: Developer Portal — API Explorer & Onboarding Wizard
|
||||
|
||||
- [ ] 5.1 Install `swagger-ui-react` in `portal/` — add to portal package.json
|
||||
- [ ] 5.2 Create `/api-explorer` page embedding Swagger UI loaded from `NEXT_PUBLIC_API_URL/openapi.json`
|
||||
- [ ] 5.3 Configure Swagger UI with `persistAuthorization: true` and Bearer token auth scheme
|
||||
- [ ] 5.4 Create `/get-started` wizard — Step 1: account setup instructions
|
||||
- [ ] 5.5 Create wizard Step 2: agent name input → calls `POST /agents` via API → displays agent ID
|
||||
- [ ] 5.6 Create wizard Step 3: generate credentials → calls credentials endpoint → displays client ID/secret with copy buttons
|
||||
- [ ] 5.7 Create wizard Step 4: SDK selection → displays ready-to-run code snippet for chosen SDK (Node.js / Python / Go / Java)
|
||||
- [ ] 5.8 Wizard state management using React `useState` — no external state library needed
|
||||
- [ ] 5.9 Build `portal/` — `npm run build` passes without errors or TypeScript errors
|
||||
- [x] 5.1 Install `swagger-ui-react` in `portal/` — add to portal package.json
|
||||
- [x] 5.2 Create `/api-explorer` page embedding Swagger UI loaded from `NEXT_PUBLIC_API_URL/openapi.json`
|
||||
- [x] 5.3 Configure Swagger UI with `persistAuthorization: true` and Bearer token auth scheme
|
||||
- [x] 5.4 Create `/get-started` wizard — Step 1: account setup instructions
|
||||
- [x] 5.5 Create wizard Step 2: agent name input → calls `POST /agents` via API → displays agent ID
|
||||
- [x] 5.6 Create wizard Step 3: generate credentials → calls credentials endpoint → displays client ID/secret with copy buttons
|
||||
- [x] 5.7 Create wizard Step 4: SDK selection → displays ready-to-run code snippet for chosen SDK (Node.js / Python / Go / Java)
|
||||
- [x] 5.8 Wizard state management using React `useState` — no external state library needed
|
||||
- [x] 5.9 Build `portal/` — `npm run build` passes without errors or TypeScript errors
|
||||
|
||||
## 6. WS3: CLI Tool — Setup & Configuration
|
||||
|
||||
- [ ] 6.1 Scaffold `cli/` directory with `package.json` (name: `sentryagent`, bin: `sentryagent`) — TypeScript with `commander` and `chalk`
|
||||
- [ ] 6.2 Create `cli/src/config.ts` — read/write `~/.sentryagent/config.json` with `apiUrl`, `clientId`, `clientSecret`
|
||||
- [ ] 6.3 Implement `sentryagent configure` command — prompts for API URL, client ID, client secret using `readline` — writes to config file
|
||||
- [ ] 6.4 Implement config validation helper — fail with "Not configured. Run `sentryagent configure` first." if config missing
|
||||
- [ ] 6.5 Implement `sentryagent --version` outputting version from package.json
|
||||
- [ ] 6.6 Implement `sentryagent --help` showing all available commands
|
||||
- [x] 6.1 Scaffold `cli/` directory with `package.json` (name: `sentryagent`, bin: `sentryagent`) — TypeScript with `commander` and `chalk`
|
||||
- [x] 6.2 Create `cli/src/config.ts` — read/write `~/.sentryagent/config.json` with `apiUrl`, `clientId`, `clientSecret`
|
||||
- [x] 6.3 Implement `sentryagent configure` command — prompts for API URL, client ID, client secret using `readline` — writes to config file
|
||||
- [x] 6.4 Implement config validation helper — fail with "Not configured. Run `sentryagent configure` first." if config missing
|
||||
- [x] 6.5 Implement `sentryagent --version` outputting version from package.json
|
||||
- [x] 6.6 Implement `sentryagent --help` showing all available commands
|
||||
|
||||
## 7. WS3: CLI Tool — Agent Commands
|
||||
|
||||
- [ ] 7.1 Implement `sentryagent register-agent --name <name> [--description <desc>]` — calls `POST /agents`, outputs agent ID
|
||||
- [ ] 7.2 Implement `sentryagent list-agents` — calls `GET /agents`, outputs formatted table with chalk
|
||||
- [ ] 7.3 Implement `sentryagent issue-token --agent-id <id>` — calls `POST /oauth2/token`, outputs access token and expiry
|
||||
- [ ] 7.4 Implement `sentryagent rotate-credentials --agent-id <id>` — prompts for confirmation, calls rotate endpoint, outputs new secret
|
||||
- [ ] 7.5 Implement `sentryagent tail-audit-log [--agent-id <id>]` — polls `GET /audit/logs` every 5s, streams new events to stdout, runs until Ctrl+C
|
||||
- [ ] 7.6 Implement `sentryagent completion bash` and `sentryagent completion zsh` — output shell completion scripts
|
||||
- [ ] 7.7 Write `cli/README.md` — installation, configuration, all commands with examples, shell completion setup
|
||||
- [ ] 7.8 Build CLI — `npm run build` in `cli/` passes; `node dist/index.js --help` works
|
||||
- [x] 7.1 Implement `sentryagent register-agent --name <name> [--description <desc>]` — calls `POST /agents`, outputs agent ID
|
||||
- [x] 7.2 Implement `sentryagent list-agents` — calls `GET /agents`, outputs formatted table with chalk
|
||||
- [x] 7.3 Implement `sentryagent issue-token --agent-id <id>` — calls `POST /oauth2/token`, outputs access token and expiry
|
||||
- [x] 7.4 Implement `sentryagent rotate-credentials --agent-id <id>` — prompts for confirmation, calls rotate endpoint, outputs new secret
|
||||
- [x] 7.5 Implement `sentryagent tail-audit-log [--agent-id <id>]` — polls `GET /audit/logs` every 5s, streams new events to stdout, runs until Ctrl+C
|
||||
- [x] 7.6 Implement `sentryagent completion bash` and `sentryagent completion zsh` — output shell completion scripts
|
||||
- [x] 7.7 Write `cli/README.md` — installation, configuration, all commands with examples, shell completion setup
|
||||
- [x] 7.8 Build CLI — `npm run build` in `cli/` passes; `node dist/index.js --help` works
|
||||
|
||||
## 8. WS4: Agent Marketplace
|
||||
|
||||
|
||||
Reference in New Issue
Block a user