- Add JSON Schema validation using Ajv for structured output assertions - Add extractJsonFromOutput() to parse JSON from various formats (direct, markdown, embedded) - Add validateJsonSchema() for proper schema validation with error messages - Implement structured error handling with ScenarioExecutionError class - Add 8 error categories: COLLECTION_NOT_FOUND, NO_COLLECTION, NO_TOOLS, etc. - Add comprehensive unit tests for execute.ts (16 tests) - Expand evaluate.test.ts with JSON Schema validation tests (36 tests total) - Refactor ExpandedRunDetails.tsx into smaller components for assertions and conversation display
91 lines
3 KiB
JSON
91 lines
3 KiB
JSON
{
|
|
"name": "@tpmjs/web",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"postinstall": "prisma generate --schema=../../packages/db/prisma/schema.prisma",
|
|
"dev": "next dev",
|
|
"build": "prisma generate --schema=../../packages/db/prisma/schema.prisma && next build",
|
|
"start": "next start",
|
|
"lint": "eslint .",
|
|
"type-check": "tsc --noEmit",
|
|
"clean": "rm -rf .next .turbo",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:integration": "INTEGRATION_TESTS=true vitest run --config vitest.integration.config.mjs",
|
|
"test:integration:watch": "INTEGRATION_TESTS=true vitest --config vitest.integration.config.mjs",
|
|
"test:setup-credentials": "tsx src/test/integration/_helpers/setup-test-credentials.ts",
|
|
"test:setup-openai-key": "tsx src/test/integration/_helpers/setup-openai-key.ts",
|
|
"test:cleanup-orphans": "tsx src/test/integration/_helpers/cleanup-orphans.ts",
|
|
"generate-og": "tsx scripts/generate-og-images.ts"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/anthropic": "^3.0.9",
|
|
"@ai-sdk/devtools": "^0.0.8",
|
|
"@ai-sdk/google": "^3.0.6",
|
|
"@ai-sdk/groq": "^3.0.4",
|
|
"@ai-sdk/mistral": "^3.0.5",
|
|
"@ai-sdk/openai": "3.0.7",
|
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
"@prisma/client": "^6.19.1",
|
|
"@react-three/drei": "^10.7.7",
|
|
"@react-three/fiber": "^9.5.0",
|
|
"@tpmjs/db": "workspace:*",
|
|
"@tpmjs/env": "workspace:*",
|
|
"@tpmjs/npm-client": "workspace:*",
|
|
"@tpmjs/package-executor": "workspace:*",
|
|
"@tpmjs/registry-execute": "workspace:*",
|
|
"@tpmjs/registry-search": "workspace:*",
|
|
"@tpmjs/types": "workspace:*",
|
|
"@tpmjs/ui": "workspace:*",
|
|
"@tpmjs/utils": "workspace:*",
|
|
"@types/d3": "^7.4.3",
|
|
"@types/react-syntax-highlighter": "^15.5.13",
|
|
"@vercel/analytics": "^1.6.1",
|
|
"@vercel/blob": "^2.0.0",
|
|
"@vercel/kv": "^3.0.0",
|
|
"ai": "6.0.49",
|
|
"ajv": "^8.17.1",
|
|
"ajv-formats": "^3.0.1",
|
|
"better-auth": "^1.4.10",
|
|
"bm25": "^0.1.1",
|
|
"d3": "^7.9.0",
|
|
"next": "^16.1.1",
|
|
"next-themes": "^0.4.6",
|
|
"openai": "^6.15.0",
|
|
"prisma": "^6.19.1",
|
|
"react": "^19.2.3",
|
|
"react-dom": "^19.2.3",
|
|
"react-markdown": "^10.1.0",
|
|
"react-syntax-highlighter": "^16.1.0",
|
|
"react-virtuoso": "^4.18.1",
|
|
"rehype-raw": "^7.0.0",
|
|
"rehype-sanitize": "^6.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"resend": "^6.7.0",
|
|
"sonner": "^2.0.7",
|
|
"streamdown": "^1.6.11",
|
|
"swr": "^2.2.5",
|
|
"three": "^0.182.0",
|
|
"zod": "^4.3.5"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@tpmjs/eslint-config": "workspace:*",
|
|
"@tpmjs/tailwind-config": "workspace:*",
|
|
"@tpmjs/tsconfig": "workspace:*",
|
|
"@types/node": "^25.0.3",
|
|
"@types/react": "^19.2.7",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@types/three": "^0.182.0",
|
|
"autoprefixer": "^10.4.23",
|
|
"dotenv": "^17.2.3",
|
|
"eslint": "^9.39.2",
|
|
"eslint-config-next": "^16.1.1",
|
|
"postcss": "^8.5.6",
|
|
"tailwindcss": "^3.4.19",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.9.3",
|
|
"vitest": "^4.0.16"
|
|
}
|
|
}
|