{ "name": "studio", "version": "0.0.9", "private": true, "type": "module", "scripts": { "preinstall": "npx only-allow pnpm", "predev": "node scripts/clean-turbopack-cache.mjs", "dev": "next dev -p ${STUDIO_PORT:-8082}", "build": "next build && if [ \"$SKIP_ASSET_UPLOAD\" != \"1\" ]; then ./../../scripts/upload-static-assets.sh; fi", "start": "next start -p 8082", "lint": "eslint .", "lint:ratchet": "tsx scripts/ratchet-eslint-rules.ts --rule react-hooks/exhaustive-deps --rule import/no-anonymous-default-export --rule @tanstack/query/exhaustive-deps --rule @typescript-eslint/no-explicit-any --rule no-restricted-imports --rule no-restricted-exports --rule react/no-unstable-nested-components", "lint:ratchet:type-checks": "tsx scripts/ratchet-eslint-rules.ts --rule studio/require-safe-sql-fragment --eslint-args \"--config eslint.type-checks.config.cjs .\"", "clean": "rimraf node_modules tsconfig.tsbuildinfo .next .turbo", "test": "vitest --run --coverage", "test:watch": "vitest watch", "test:ui": "vitest --ui", "test:update": "vitest --run --update", "test:ci": "vitest --run --coverage", "test:report": "open coverage/lcov-report/index.html", "deploy:staging": "VERCEL_ORG_ID=team_E6KJ1W561hMTjon1QSwOh0WO VERCEL_PROJECT_ID=QmcmhbiAtCMFTAHCuGgQscNbke4TzgWULECctNcKmxWCoT vercel --prod -A .vercel/staging.json", "pretypecheck": "next typegen", "typecheck": "tsc --noEmit", "build:deno-types": "tsx scripts/deno-types.ts", "build:graphql-types": "tsx scripts/download-graphql-schema.mts && pnpm graphql-codegen --config scripts/codegen.ts", "build:graphql-types:watch": "pnpm graphql-codegen --config scripts/codegen.ts --watch", "evals:setup": "cp node_modules/libpg-query/wasm/libpg-query.wasm evals/libpg-query.wasm", "evals:run": "braintrust eval --no-send-logs evals/assistant.eval.ts", "evals:upload": "braintrust eval evals/assistant.eval.ts", "scorers:deploy": "IS_BRAINTRUST_PUSH=true braintrust push evals/scorer-online.ts" }, "dependencies": { "@ai-sdk/amazon-bedrock": "^4.0.81", "@ai-sdk/mcp": "^1.0.25", "@ai-sdk/openai": "^3.0.41", "@ai-sdk/provider": "^3.0.8", "@ai-sdk/provider-utils": "^4.0.19", "@ai-sdk/react": "^3.0.118", "@aws-sdk/credential-providers": "^3.1041.0", "@dagrejs/dagre": "^1.0.4", "@dnd-kit/core": "^6.1.0", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@graphiql/react": "^0.37.3", "@graphiql/toolkit": "^0.11.3", "@hcaptcha/react-hcaptcha": "^1.12.0", "@heroicons/react": "^2.1.3", "@hookform/resolvers": "^3.1.1", "@mjackson/multipart-parser": "^0.10.1", "@modelcontextprotocol/sdk": "^1.29.0", "@monaco-editor/react": "^4.6.0", "@next/bundle-analyzer": "16.2.3", "@number-flow/react": "^0.3.2", "@sentry/nextjs": "catalog:", "@std/path": "npm:@jsr/std__path@^1.0.8", "@stripe/react-stripe-js": "6.1.0", "@stripe/stripe-js": "9.1.0", "@supabase/auth-js": "catalog:", "@supabase/mcp-server-supabase": "^0.7.0", "@supabase/pg-meta": "workspace:*", "@supabase/realtime-js": "catalog:", "@supabase/shared-types": "0.1.88", "@supabase/sql-to-rest": "^0.1.6", "@supabase/supabase-js": "catalog:", "@tanstack/react-hotkeys": "^0.9.1", "@tanstack/react-query": "^5.0.0", "@tanstack/react-query-devtools": "^5.0.0", "@tanstack/react-table": "^8.21.3", "@tanstack/react-virtual": "^3.13.12", "@types/d3-geo": "^3.1.0", "@uidotdev/usehooks": "^2.4.1", "@vercel/functions": "^2.1.0", "@xyflow/react": "^12.10.1", "@zip.js/zip.js": "^2.7.29", "ai": "^6.0.116", "ai-commands": "workspace:*", "awesome-debounce-promise": "^2.1.0", "common": "workspace:*", "common-tags": "^1.8.2", "config": "workspace:*", "cron-parser": "^4.9.0", "cronstrue": "^2.50.0", "crypto-js": "^4.2.0", "d3-geo": "^3.1.1", "dayjs": "^1.11.10", "dev-tools": "workspace:*", "file-saver": "^2.0.5", "framer-motion": "^11.18.2", "generate-password-browser": "^1.1.0", "graphiql": "^5.2.2", "html-to-image": "^1.11.13", "http-status": "^2.1.0", "icons": "workspace:*", "idb": "^8.0.2", "immutability-helper": "^3.1.1", "ip-num": "^1.5.1", "json-logic-js": "^2.0.2", "lodash": "catalog:", "lucide-react": "^0.436.0", "markdown-table": "^3.0.3", "memoize-one": "^5.0.1", "mime-db": "^1.53.0", "monaco-editor": "0.52.2", "next": "catalog:", "next-themes": "catalog:", "nuqs": "2.7.1", "openai": "^4.104.0", "openapi-fetch": "0.12.4", "papaparse": "^5.3.1", "path-to-regexp": "^8.0.0", "pg-minify": "^1.6.3", "radix-ui": "catalog:", "randombytes": "^2.1.0", "react": "catalog:", "react-data-grid": "7.0.0-beta.47", "react-day-picker": "^9.11.1", "react-dom": "catalog:", "react-error-boundary": "^4.0.13", "react-grid-layout": "^1.4.2", "react-hook-form": "^7.71.2", "react-inlinesvg": "^4.0.4", "react-intersection-observer": "^9.5.3", "react-markdown": "^10.1.0", "react-resizable": "3.0.5", "react-simple-maps": "4.0.0-beta.6", "react-use": "^17.5.0", "recharts": "catalog:", "remark-gfm": "^4.0.0", "shared-data": "workspace:*", "sonner": "^1.5.0", "sql-formatter": "^15.0.0", "sqlstring": "^2.3.2", "streamdown": "^1.3.0", "stripe-experiment-sync": "1.0.31", "tus-js-client": "^4.1.0", "ui": "workspace:*", "ui-patterns": "workspace:*", "use-debounce": "^7.0.1", "use-stick-to-bottom": "^1.1.1", "uuid": "^14.0.0", "valtio": "catalog:", "zod": "catalog:", "zxcvbn": "^4.4.2" }, "devDependencies": { "@faker-js/faker": "^9.9.0", "@graphql-codegen/cli": "5.0.5", "@graphql-typed-document-node/core": "^3.2.0", "@radix-ui/react-use-escape-keydown": "^1.1.1", "@smithy/property-provider": "^4.0.4", "@supabase/postgres-meta": "^0.64.4", "@testing-library/dom": "^10.0.0", "@testing-library/jest-dom": "^6.6.0", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.0.0", "@types/common-tags": "^1.8.1", "@types/crypto-js": "^4.2.2", "@types/file-saver": "^2.0.2", "@types/json-logic-js": "^1.2.1", "@types/lodash": "^4.14.172", "@types/markdown-table": "^3.0.0", "@types/mime-db": "^1.43.5", "@types/node": "catalog:", "@types/papaparse": "^5.3.1", "@types/randombytes": "^2.0.3", "@types/react": "catalog:", "@types/react-beautiful-dnd": "^13.1.2", "@types/react-datepicker": "^4.3.4", "@types/react-dom": "catalog:", "@types/react-grid-layout": "^1.3.0", "@types/react-simple-maps": "^3.0.1", "@types/recharts": "^1.8.23", "@types/sqlstring": "^2.3.0", "@types/zxcvbn": "^4.4.1", "@typescript-eslint/utils": "8.48.0", "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "catalog:", "@vitest/ui": "catalog:", "api-types": "workspace:*", "autoevals": "^0.0.132", "braintrust": "^3.9.0", "common": "workspace:*", "config": "workspace:*", "date-fns": "^2.30.0", "eslint-config-supabase": "workspace:*", "eslint-plugin-barrel-files": "^2.0.7", "eslint-plugin-jsx-a11y": "^6.10.2", "graphql-ws": "5.14.1", "import-in-the-middle": "^2.0.0", "jsdom-testing-mocks": "^1.13.1", "libpg-query": "17.6.0", "msw": "^2.3.0", "next-router-mock": "^0.9.13", "node-mocks-http": "^1.17.2", "postcss": "catalog:", "raw-loader": "^4.0.2", "require-in-the-middle": "^8.0.0", "tailwindcss": "catalog:", "tsconfig": "workspace:*", "tsx": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vite-tsconfig-paths": "catalog:", "vitest": "catalog:" } }