BREAKING CHANGE: Complete refactoring from single-tool to multi-tool package support Database Schema: - Split Tool model into Package (1) and Tool (many) with one-to-many relationship - Package stores npm metadata and package-level tpmjs fields (category, env, frameworks, tier) - Tool stores individual tool exports with tool-level metadata (exportName, description, parameters, returns, aiAgent) - Unique constraint on (packageId, exportName) to prevent duplicate tools - Cascade deletes when packages are removed Type System: - Updated tpmjs field schema to support tools array - Each tool has exportName, description, parameters, returns, aiAgent - Package-level fields: category, env, frameworks shared across all tools - Backward compatible with legacy single-tool format (auto-migrates to exportName: "default") API Updates: - Updated all /api/tools routes to query Tool model with Package relations - Updated /api/tools/[slug] to accept package/export path segments - Updated tool-executor-agent to use actual exportName instead of hardcoded "default" - Updated metrics sync to calculate quality scores per Tool Frontend Updates: - Updated tool search page to display exportName as primary heading - Updated tool detail pages to show package name as secondary info - Removed tag-based filtering (tags moved to package level) Manual Tool Registry: - Added manual-tools.ts with 23 curated tools from major providers - Created sync-manual-tools.ts script to sync manual tools to database - Added MANUAL_TOOLS.md documentation for manual tool system - Added GitHub workflow for automated daily sync - Includes tools from: Vercel, Exa, Firecrawl, AWS Bedrock, Perplexity, Tavily, Superagent, Valyu Playground Updates: - Updated tool loader to load multiple tools per package - Added sanitizeToolName for OpenAI API compatibility Sync System Updates: - Updated changes feed sync to handle multi-tool packages - Updated keyword sync to upsert multiple tools per package - Added orphaned tool deletion when tools removed from package.json Migration Strategy: - Database uses same Neon instance for dev and prod - Schema updated via prisma db push (no migration files yet) - All data repopulates from npm via sync system 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
42 lines
1.4 KiB
JSON
42 lines
1.4 KiB
JSON
{
|
|
"name": "@tpmjs/monorepo",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=22",
|
|
"pnpm": ">=8"
|
|
},
|
|
"packageManager": "pnpm@10.14.0",
|
|
"scripts": {
|
|
"dev": "turbo dev",
|
|
"build": "turbo build",
|
|
"test": "turbo test",
|
|
"test:ui": "turbo test:ui",
|
|
"lint": "turbo lint",
|
|
"format": "biome format --write .",
|
|
"format:check": "biome format .",
|
|
"type-check": "turbo type-check",
|
|
"type-coverage": "type-coverage --at-least 95",
|
|
"find-deadcode": "knip",
|
|
"check-architecture": "depcruise --validate --config .dependency-cruiser.js apps packages",
|
|
"clean": "turbo clean && rm -rf node_modules .turbo",
|
|
"changeset": "changeset",
|
|
"changeset:version": "changeset version && pnpm install --no-frozen-lockfile",
|
|
"changeset:publish": "pnpm build && changeset publish",
|
|
"prepare": "node -e \"if (!process.env.CI && !process.env.VERCEL && require('fs').existsSync('.git')) { require('child_process').execSync('lefthook install', {stdio: 'inherit'}) }\""
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "^1.9.4",
|
|
"@changesets/cli": "^2.27.10",
|
|
"@total-typescript/ts-reset": "^0.6.1",
|
|
"@types/node": "^22.10.2",
|
|
"dependency-cruiser": "^17.3.1",
|
|
"knip": "^5.70.2",
|
|
"lefthook": "^1.10.1",
|
|
"tsx": "^4.21.0",
|
|
"turbo": "^2.6.1",
|
|
"type-coverage": "^2.29.7",
|
|
"typescript": "^5.9.3"
|
|
}
|
|
}
|