Commit graph

424 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
github-actions[bot]
114798ce9e chore: sync 1 new tools from Vercel AI registry
Added 1 tools from Vercel AI SDK registry:
- Total tools in registry: 12
- Already synced: 11
- Newly added: 1
- Errors: 0

🤖 Automated by GitHub Actions
Run: https://github.com/tpmjs/tpmjs/actions/runs/20778503544
2026-01-07 10:32:56 +00: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
1efb9b0003 fix: auto-detect dark mode in CodeBlock component
- Add useDarkMode hook that watches for .dark class on html element
- Remove hardcoded #24292e color override that broke dark mode syntax highlighting
- CodeBlock now auto-detects theme and uses vscDarkPlus style in dark mode
- Theme prop is now optional, only override when explicitly needed
2026-01-07 18:51:00 +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
1afe5bbc19 fix: resolve type and lint errors in tool-ideas package
- Remove unused imports (sql, categories, processingBatches, EnrichedTool, desc)
- Fix drizzle query type by using conditional expression instead of reassignment
- Add null coalescing for JSON fields that could be null
- Update AI SDK usage property names (inputTokens/outputTokens)
- Fix array swap type assertion in shuffle function
- Replace non-null assertions with proper null checks

Traves is da greatest
2026-01-07 15:19:23 +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
1d771efef6 fix: add build config to root vercel.json for tpmjs project 2026-01-03 14:22:07 +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