Commit graph

256 commits

Author SHA1 Message Date
Ajax Davis
b8b4e44b50 fix: mobile UI bugs and documentation improvements
- docs: add clarifying comment for AI SDK provider imports on /docs and /sdk pages
- fix: remove duplicate footer on /docs page (was rendered in both page and root layout)
- fix: prevent "Official" badge from overflowing on mobile tool cards (/home)
- fix: center Specification/Full Example toggle buttons on mobile (/spec)
- fix: ecosystem diagram layout on mobile - increase height and reposition legend (/integrations)
2026-01-07 20:58:33 +10:00
Ajax Davis
fd4d78ae09 refactor: move configuration to top and remove stats cards on agent details 2026-01-07 20:16:49 +10:00
Ajax Davis
dc1397aa1f refactor: replace language tabs with dropdown in API reference section 2026-01-07 20:10:31 +10:00
Ajax Davis
9bb856563e feat: combine API usage sections into single tabbed component
- Merge 'Send Message' and 'Fetch Conversations' into unified 'API Reference' section
- Two-level tabs: section selector (Send/Fetch) + language selector (cURL/TS/Python/AI SDK)
- Reduces vertical space by ~50%
- Send Message is default tab
2026-01-07 20:02:04 +10:00
Ajax Davis
d99f810572 feat: update agent chat page to use DashboardLayout with fullHeight mode
- Add fullHeight prop to DashboardLayout for chat-style interfaces
- When fullHeight is true, content fills viewport and disables padding
- Chat page now shows sidebar navigation with breadcrumbs
- Conversations sidebar remains as inner content panel
- New Chat button moved to header actions
2026-01-07 19:51:52 +10:00
Ajax Davis
3f5c1bda61 feat: add conversation fetch code snippets with pagination support
- Add pagination to GET /api/agents/[id]/conversation/[conversationId]
  - limit and offset query params (default: 50/0, max: 100)
  - Returns hasMore in pagination object
- Add "Fetch Conversations" section on agent details page
  - cURL, TypeScript, Python examples
  - Shows list, get, and delete endpoints
  - Demonstrates pagination handling
2026-01-07 19:47:34 +10:00
Ajax Davis
d156b29286 feat: add API usage code snippets with tabs on agent details page
- Added CodeBlock import for syntax-highlighted code examples
- Added Tabs for switching between cURL, TypeScript, Python, and AI SDK
- Shows working examples with the agent's actual endpoint URL
- AI SDK tab shows both hosted usage and self-hosted option with tool packages
- Includes helpful note about conversation IDs

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 19:32:36 +10:00
Ajax Davis
42dac85d92 feat: convert agent tools and collections to table view
- Tools section now uses Table component with search above
- Collections section now uses Table component with search above
- Both tables have proper empty states with helpful descriptions
- Consistent styling with other dashboard tables

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 19:23:14 +10:00
Ajax Davis
be4e802e7e feat: update agent and collection detail pages to use DashboardLayout
- Agent detail page now uses DashboardLayout with sidebar navigation
- Collection detail page now uses DashboardLayout with sidebar navigation
- Both pages have consistent back button, title, subtitle, and actions
- Edit mode in collection page integrates with layout title

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 19:14:59 +10:00
Ajax Davis
d0e304cdab feat: update dashboard and API keys pages to use DashboardLayout
- Convert dashboard overview to use DashboardLayout with sidebar
- Update API keys page with DashboardLayout and table layout
- Add upload icon to icon library
- Consistent sidebar navigation across all dashboard pages
2026-01-07 19:03:45 +10:00
Ajax Davis
a137afd65d feat: redesign dashboard with sidebar layout and table components
- Add new Table UI component with rich features (sorting, empty states, interactive rows)
- Create DashboardLayout component with sidebar navigation
- Redesign Agents page with table layout showing provider, tools, and actions
- Redesign Collections page with table layout showing visibility and tool counts
- Add surface-secondary color token for proper dark mode support
- Add home and user icons to icon library
- Fix missing foreground-quaternary with muted color

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 18:40:52 +10:00
Ajax Davis
0730ae6f42 feat: reorganize navigation menu for better UX
- Group links into Developers and Resources dropdowns
- Primary nav shows only Tools and Playground
- Segment auth section (Dashboard/Agents when logged in, Sign In when not)
- Mobile menu uses same structure with section headers
- Add descriptions to help users find what they need

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 17:58:01 +10:00
Ajax Davis
3dd0caf621 style: fix biome formatting in dashboard pages
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 17:40:10 +10:00
Ajax Davis
287d84163f fix: resolve type errors and lint issues for CI
- Fix SkeletonWithRelations type mapping in batch-processor.ts by explicitly mapping only the required fields
- Escape unescaped entities in tutorial pages (apostrophes and quotes)
2026-01-07 15:40:50 +10:00
Ajax Davis
152a076580 fix: remove Prisma internal module import in parameters route 2026-01-07 15:27:15 +10:00
Ajax Davis
0cbc3e0dd4 fix: skip integration tests unless explicitly enabled
Integration tests in agents.test.ts require a running server and test
database. They now properly skip using describe.skipIf when the
INTEGRATION_TESTS environment variable is not set to 'true'.

To run integration tests manually:
  INTEGRATION_TESTS=true pnpm --filter=@tpmjs/web test

Traves is da greatest
2026-01-07 15:07:47 +10:00
Ajax Davis
53ae105602 fix: dynamically discover changelog files from package directories
- Replace hardcoded package paths with dynamic discovery
- Automatically find CHANGELOG.md files in SDK packages
- Discover tools from both packages/tools and packages/tools/official
- Read package names from package.json for accurate display

Traves is da greatest
2026-01-07 15:00:01 +10:00
Ajax Davis
670e3e3ca3 feat: add GetToolParameters API endpoint
- Add GET /api/tools/parameters endpoint
- Accepts packageName and name query params
- Supports 'schema' format (raw JSON Schema) or 'parameters' format (simplified array)
- Returns parameter definitions with types, descriptions, and required flags
- Falls back to author-provided parameters if inputSchema not available

Closes #5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 14:13:38 +10:00
Ajax Davis
724bf18822 feat: add GitHub stars syncing to metrics sync
- Add github.ts to npm-client with functions to fetch GitHub stars
- Add parseGitHubUrl to handle various GitHub URL formats
- Update metrics sync endpoint to fetch and store GitHub stars
- GitHub stars now factor into tool quality score calculation
- Optional GITHUB_TOKEN env var for higher API rate limits

Closes #8

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 14:11:06 +10:00
Ajax Davis
a4cfea5cc3 feat: add dark mode toggle to navigation
- Add ThemeToggle component to desktop AppHeader navbar
- Add ThemeToggle to mobile MobileMenu with label
- Reorganize social links in mobile menu for cleaner layout
- Toggle uses existing ThemeToggle component with sun/moon icons

Closes #4

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 14:05:03 +10:00
Ajax Davis
bc1eb57e2a fix: prevent horizontal overflow on mobile devices
- Add overflow-x: hidden to html and body elements
- Set max-width: 100vw to constrain content to viewport width
- Fixes responsive layout issues on mobile screens

Closes #6

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 14:00:48 +10:00
Ajax Davis
00908118b3 feat: add password visibility toggle and forgot password flow
Closes #11

Sign-in page improvements:
- Add show/hide password toggle with eye icons (inline SVG)
- Add "Forgot password?" link next to password label

New forgot-password page:
- Email input for password reset request
- Success state with confirmation message
- Calls /api/auth/forget-password endpoint
- Theme-aware styling for alerts

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 13:56:00 +10:00
Ajax Davis
f519952441 fix: reorder navbar for better UX and logical grouping
Closes #7

New order:
- Core Product: Tools, Agents, How It Works, Playground, Integrations
- Separator
- Developer Section: Docs, SDK, Spec, Changelog, FAQ, Stats

Changes:
- Reorder links in AppHeader for desktop navigation
- Add visual separator between product and developer sections
- Make Tools/Agents links bold for visual hierarchy
- Update MobileMenu with same ordering

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 13:49:46 +10:00
Ajax Davis
edcff21be7 fix: replace hardcoded colors with theme-aware tokens in Markdown component
Closes #12

- Replace zinc-900/zinc-100 with text-foreground for headings
- Replace zinc-700/zinc-300 with text-foreground-secondary for paragraphs, lists, blockquotes
- Replace zinc-* borders with border-border
- Replace zinc-100/zinc-800 backgrounds with bg-surface-secondary
- README content now properly respects the page theme context

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 13:46:28 +10:00
Ajax Davis
6b48ab224d fix: replace outdated changelog section with link to dedicated page
Closes #10

- Remove hardcoded v1.0.0 changelog entry from docs page
- Add link to the dedicated /changelog page instead
- Prevents documentation from becoming stale

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 13:43:43 +10:00
Ajax Davis
e6bc107812 fix: add missing navigation header to stats page
Closes #9

- Import and add AppHeader component to stats page
- Users can now navigate away from the stats page using the global nav
- Fix pre-existing lint issues (complexity and array key)

🤖 Generated with [Claude Code](https://claude.ai/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-07 13:41:00 +10:00
Ajax Davis
96fb52d047 feat: add createBlogPostTool and accept both q/query params in search API 2026-01-03 19:21:05 +10:00
Ajax Davis
515a461bbf fix: add helpful error message for API key decryption failure 2026-01-03 19:20:07 +10:00
Ajax Davis
3f15153dcf fix: wrap Prisma calls in try-catch for agent tests 2026-01-03 18:49:35 +10:00
Ajax Davis
aba7c976c1 fix: update AI SDK message serialization to follow best practices
- Use ModelMessage type instead of any[] for type safety
- Format assistant messages with tool calls using ToolCallPart in content array
- Format tool messages with ToolResultPart using proper output structure
- Add ToolCallCard component for sexy debug display of tool calls in chat
- Remove debug console.log statements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-03 18:47:02 +10:00
Ajax Davis
fbcd7150c9 fix: skip agent integration tests when server unavailable 2026-01-03 17:21:18 +10:00
Ajax Davis
d2c149c6be feat: add agent logs and stats endpoints
- Add GET /api/agents/[id]/logs - conversation activity logs with filtering
- Add GET /api/agents/[id]/stats - aggregated statistics (conversations, tokens, tools)
- Add comprehensive agent endpoint tests (agents.test.ts)
- Fix TypeScript errors in logs route with proper Prisma type inference

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-03 17:14:17 +10:00
Ajax Davis
c0f9e9884d Add agent logs and stats endpoints 2026-01-03 17:05:45 +10:00
Ajax Davis
3a0a125b6d feat: generic env variable CRUD - any key name, not locked to providers
- Changed schema from AIProvider enum to arbitrary keyName string
- Updated API routes for generic key storage
- Simple CRUD UI with optional .env import
2026-01-03 14:35:19 +10:00
Ajax Davis
9371a11eb0 refactor: traditional API key UI with optional .env import 2026-01-03 14:28:43 +10:00
Ajax Davis
1469e36f3f refactor: simplify API keys page - just paste .env and save 2026-01-03 14:24:32 +10:00
Ajax Davis
19884af03e fix: add build:web script to only build web and dependencies for Vercel 2026-01-03 14:18:28 +10:00
Ajax Davis
2a6d4c6c2e fix: use turbo filter for Vercel build to exclude playground/storybook 2026-01-03 14:11:19 +10:00
Ajax Davis
471fbba786 fix: exclude playground and storybook from Vercel build filter 2026-01-03 14:02:14 +10:00
Ajax Davis
cc3a991661 debug: add comprehensive logging to api-keys POST endpoint
- Log each step: auth, body parsing, schema validation, encryption, db upsert
- Check for API_KEY_ENCRYPTION_SECRET presence before encrypt
- Log timing, error details with stack traces
- Return specific error messages for each failure point
2026-01-03 13:49:23 +10:00
Ajax Davis
1b1c4f6474 feat: redesign API keys settings page with .env paste support
- Add Quick Import section to paste entire .env files
- Auto-detect supported providers (OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.)
- Add per-provider inline inputs with auto-save on blur/debounce
- Show save status indicators (loading spinner, checkmark)
- Simplify UI with compact provider rows
- Add supported models reference section

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-03 13:27:48 +10:00
Ajax Davis
4f95046249 fix: correct tools search API response mapping and add collection search
- Map tools search response from data.results.tools to expected format
- Map package.npmPackageName to top-level npmPackageName for UI
- Add search parameter support to collections API
2026-01-03 03:34:17 +10:00
Ajax Davis
5a0a21fd60 feat: add tools and collections management UI to agent detail page
- Add Tools section with search/add/remove functionality
- Add Collections section with search/add/remove functionality
- Add GET endpoints to /api/agents/[id]/tools and /api/agents/[id]/collections
- Use debounced search with dropdown for adding tools/collections
- Include click-outside handling to close dropdowns
2026-01-03 03:10:53 +10:00
Ajax Davis
bfed830187 feat: add interactive tutorial slideshows for Agents and MCP
- Add /docs/tutorials page with tutorial index
- Create step-by-step Agents tutorial (7 slides)
  - API key setup
  - Agent creation
  - Tool attachment
  - Chat interface usage
- Create step-by-step MCP tutorial (8 slides)
  - What is MCP
  - Creating collections
  - Configuring Claude Desktop
  - Configuring Cursor
  - Using tools

Each tutorial features:
- Progress bar and slide indicators
- Previous/Next navigation
- Direct links to relevant dashboard pages
2026-01-02 21:21:13 +10:00
Ajax Davis
0b1bb7725d feat: add dedicated Agents documentation page at /docs/agents
- Create separate /docs/agents page with comprehensive documentation
- Clean up main /docs page by removing duplicate Agents content
- Add link card in main docs pointing to Agents documentation
- Fix Badge variant from "destructive" to "error"
- Fix Footer import (AppFooter)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-02 20:40:23 +10:00
Ajax Davis
552f319583 feat: add AI Agents feature with multi-provider support and documentation
- Add Agent, AgentCollection, AgentTool, UserApiKey, Conversation, Message models to Prisma schema
- Create agent types and Zod schemas in @tpmjs/types
- Implement AES-256 API key encryption utilities
- Add CRUD API endpoints for agents, tools, collections, and user API keys
- Create conversation streaming endpoint with SSE events
- Build agent tool builder to merge collections and individual tools
- Add dashboard pages: agents list, new agent form, agent detail/edit, chat interface
- Add API keys settings page for managing provider keys
- Add comprehensive Agents documentation section to /docs
- Update navigation to include Agents link in header and mobile menu
- Add new icons: terminal, puzzle, message, key, info, send

Supported providers: OpenAI, Anthropic, Google, Groq, Mistral
2026-01-02 20:08:52 +10:00
Ajax Davis
4cbd84edb8 fix: use hardcoded sandbox URL in MCP handler 2026-01-02 12:27:12 +10:00
Ajax Davis
9c4004628f debug: add MCP logging 2026-01-02 12:13:31 +10:00
Ajax Davis
8230ab0eec feat: add transport parameter to MCP endpoint
- Move endpoint from /api/collections/[id]/mcp to /api/collections/[id]/mcp/[transport]
- Support both 'http' and 'sse' transports
- HTTP: standard JSON-RPC over HTTP
- SSE: Server-Sent Events for streaming responses
- Add test script for validating MCP endpoints
2026-01-02 10:50:34 +10:00
Ajax Davis
828801f463 feat: add MCP endpoint for collections
Add Model Context Protocol (MCP) server endpoint for collections,
allowing users to connect Claude Desktop, Cursor, and other MCP
clients to use tools from their collections.

- POST /api/collections/[id]/mcp - JSON-RPC endpoint for MCP
- GET /api/collections/[id]/mcp - Server info for discovery
- Tool name conversion (e.g., @tpmjs/hello → tpmjs-hello--helloWorldTool)
- Handlers for initialize, tools/list, tools/call methods
- Executes tools via existing sandbox executor

Only public collections are accessible (no auth required).
2026-01-02 04:25:33 +10:00