- Add @tpmjs/tools-page-brief for URL content extraction - Add @tpmjs/tools-compare-pages for cross-source validation - Add @tpmjs/tools-source-credibility for credibility scoring - Add @tpmjs/tools-claim-checklist for factual claim extraction - Add @tpmjs/tools-timeline-from-text for timeline generation - Move createBlogPost to packages/tools/official/ - Add blocks.yml for Blocks framework validation - Update pnpm-workspace.yaml to include official tools
159 lines
4.9 KiB
Markdown
159 lines
4.9 KiB
Markdown
# TPMJS Feature Roadmap
|
|
|
|
## User System & Social Features
|
|
|
|
### 1. User Authentication System
|
|
- [ ] Add authentication (OAuth with GitHub/Google)
|
|
- [ ] User profile pages (`/user/[username]`)
|
|
- [ ] Store user preferences and settings
|
|
- [ ] API key management for programmatic access
|
|
|
|
### 2. User Collections
|
|
- [ ] Create named collections of tools (e.g., "My AI Agents", "Data Processing")
|
|
- [ ] Public/private collection visibility
|
|
- [ ] Share collections via URL
|
|
- [ ] Fork/clone collections from other users
|
|
- [ ] Collection descriptions and tags
|
|
|
|
**Database Schema:**
|
|
```prisma
|
|
model User {
|
|
id String @id @default(cuid())
|
|
email String @unique
|
|
name String?
|
|
avatarUrl String?
|
|
collections Collection[]
|
|
ratings Rating[]
|
|
createdAt DateTime @default(now())
|
|
}
|
|
|
|
model Collection {
|
|
id String @id @default(cuid())
|
|
name String
|
|
description String?
|
|
isPublic Boolean @default(false)
|
|
userId String
|
|
user User @relation(fields: [userId], references: [id])
|
|
tools CollectionTool[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
}
|
|
|
|
model CollectionTool {
|
|
id String @id @default(cuid())
|
|
collectionId String
|
|
collection Collection @relation(fields: [collectionId], references: [id])
|
|
toolId String
|
|
tool Tool @relation(fields: [toolId], references: [id])
|
|
addedAt DateTime @default(now())
|
|
notes String? // User's notes about why this tool is in the collection
|
|
|
|
@@unique([collectionId, toolId])
|
|
}
|
|
```
|
|
|
|
### 3. Package Ratings & Reviews
|
|
- [ ] 1-5 star rating system
|
|
- [ ] Optional text reviews
|
|
- [ ] Aggregate rating displayed on tool cards
|
|
- [ ] Sort/filter by rating
|
|
- [ ] Prevent duplicate ratings (one per user per tool)
|
|
- [ ] Verified usage badge (user has actually executed the tool)
|
|
|
|
**Database Schema:**
|
|
```prisma
|
|
model Rating {
|
|
id String @id @default(cuid())
|
|
score Int // 1-5
|
|
review String? @db.Text
|
|
userId String
|
|
user User @relation(fields: [userId], references: [id])
|
|
toolId String
|
|
tool Tool @relation(fields: [toolId], references: [id])
|
|
verified Boolean @default(false) // True if user has executed the tool
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([userId, toolId])
|
|
}
|
|
```
|
|
|
|
### 4. Integrate Collections with SDK Tools
|
|
|
|
**@tpmjs/search-registry:**
|
|
- [ ] Add `collection` parameter to filter tools by collection ID
|
|
- [ ] Add `collectionName` parameter to filter by collection name
|
|
- [ ] Return collection metadata in search results
|
|
- [ ] Support searching within user's own collections
|
|
|
|
**@tpmjs/registry-execute:**
|
|
- [ ] Accept collection ID to scope tool execution
|
|
- [ ] Log which collection a tool was executed from (for analytics)
|
|
- [ ] Support executing all tools in a collection sequentially
|
|
|
|
**API Endpoints:**
|
|
```
|
|
GET /api/collections - List public collections
|
|
GET /api/collections/[id] - Get collection details
|
|
POST /api/collections - Create collection (auth required)
|
|
PUT /api/collections/[id] - Update collection (auth required)
|
|
DELETE /api/collections/[id] - Delete collection (auth required)
|
|
POST /api/collections/[id]/tools - Add tool to collection
|
|
DELETE /api/collections/[id]/tools/[toolId] - Remove tool from collection
|
|
|
|
GET /api/tools?collection=[id] - Filter tools by collection
|
|
GET /api/users/[username]/collections - Get user's public collections
|
|
```
|
|
|
|
---
|
|
|
|
## Implementation Order
|
|
|
|
1. **Phase 1: User System** (required for everything else)
|
|
- Authentication with NextAuth.js
|
|
- User model and basic profile
|
|
|
|
2. **Phase 2: Collections**
|
|
- Collection CRUD
|
|
- Add/remove tools from collections
|
|
- Collection pages
|
|
|
|
3. **Phase 3: Ratings**
|
|
- Rating submission
|
|
- Display ratings on tool cards
|
|
- Sort by rating
|
|
|
|
4. **Phase 4: SDK Integration**
|
|
- Update @tpmjs/search-registry
|
|
- Update @tpmjs/registry-execute
|
|
- Collection-aware execution
|
|
|
|
---
|
|
|
|
## Benchmark Comparison Page
|
|
|
|
### Overview
|
|
- [ ] Create `/benchmarks` page to compare tool performance
|
|
- [ ] Display execution time comparisons across similar tools
|
|
- [ ] Show token usage efficiency metrics
|
|
- [ ] Compare success rates and reliability
|
|
|
|
### Features
|
|
- [ ] Side-by-side tool comparison UI
|
|
- [ ] Historical performance trends (charts)
|
|
- [ ] Filter by category to compare relevant tools
|
|
- [ ] Export benchmark data as JSON/CSV
|
|
|
|
### Data Collection
|
|
- [ ] Track execution metrics from playground simulations
|
|
- [ ] Aggregate anonymous performance data
|
|
- [ ] Calculate percentile rankings within categories
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- Consider rate limiting on ratings to prevent abuse
|
|
- Collections could have a "featured" flag for editorial picks
|
|
- Future: collaborative collections (multiple editors)
|
|
- Future: collection analytics (views, forks, tool executions)
|