{ "name": "sebastian-monorepo", "private": true, "engines": { "node": ">=20 <25" }, "workspaces": [ "server", "ee/server", "ee/packages/*", "ee/temporal-workflows", "services/workflow-worker", "services/email-service", "shared", "packages/*", "sdk/*", "sdk/samples/*", "sdk/samples/*/*", "tools/generators" ], "scripts": { "install:ignore": "npm ci --ignore-scripts", "migrate": "knex migrate:latest", "seed": "knex seed:run", "test:local": "cd server && dotenv -e ../.env.localtest -- vitest \"$@\"", "generate:proto": "mkdir -p ee/server/src/generated && protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto --ts_proto_out=ee/server/src/generated --ts_proto_opt=esModuleInterop=true,outputServices=false,useExactTypes=false --proto_path=ee/server/protos workflow.proto", "mcp:registry:generate": "node ee/scripts/generate-chat-registry.mjs", "dev": "NX_LOAD_DOT_ENV_FILES=false NODE_ENV=development NX_TUI=false npx nx next:dev server", "dev:turbo": "NX_LOAD_DOT_ENV_FILES=false NODE_ENV=development NX_TUI=false npx nx next:dev server -- --turbo", "build": "npm run build:assemblyscript && npx nx build-deps server && cd server && USE_PREBUILT=true EDITION=community NEXT_PUBLIC_EDITION=community npm run build:turbo", "build:source": "npm run build:assemblyscript && cd server && EDITION=community NEXT_PUBLIC_EDITION=community npm run build:turbo", "build:webpack": "npm run build:assemblyscript && cd server && EDITION=community NEXT_PUBLIC_EDITION=community npm run build", "build:prebuilt": "npm run build:assemblyscript && npx nx build-deps server && cd server && USE_PREBUILT=true npm run build", "build:ce": "npm run build:assemblyscript && npx nx build-deps server && cd server && USE_PREBUILT=true EDITION=community NEXT_PUBLIC_EDITION=community npm run build:turbo", "build:ee": "npm run build:assemblyscript && cd server && EDITION=ee NEXT_PUBLIC_EDITION=enterprise npm run build:enterprise", "build:assemblyscript": "node scripts/build-assemblyscript-if-needed.mjs", "build:assemblyscript:force": "cd server/src/invoice-templates/assemblyscript && npm install --cache ../../../../.npm-cache && npm run build", "build:perf": "node scripts/build-perf-harness.mjs", "start": "cd server && npm start", "runner:up": "./scripts/dev-runner.sh up -d", "runner:down": "./scripts/dev-runner.sh down", "runner:logs": "./scripts/dev-runner.sh logs -f", "dev:runner": "RUNNER_BACKEND=docker RUNNER_DOCKER_HOST=${RUNNER_DOCKER_HOST:-http://localhost:${RUNNER_DOCKER_PORT:-8085}} RUNNER_PUBLIC_BASE=/runner npm run dev", "build:shared": "npx nx build @alga-psa/shared", "build:workflow-worker": "cd services/workflow-worker && npm run build", "build:sdk": "npm -w sdk/alga-client-sdk run build", "dev:sdk": "npm -w sdk/alga-client-sdk run dev", "start:workflow-worker": "cd services/workflow-worker && npm run start", "dev:workflow-worker": "cd services/workflow-worker && npm run dev", "create-tenant": "cd server && npm run create-tenant --", "rollback-tenant": "cd server && npm run rollback-tenant", "search:backfill": "tsx server/src/scripts/search-backfill.ts", "lint": "eslint \"{server,ee/server,ee/packages,shared,services,packages}/**/*.{js,mjs,cjs,ts,jsx,tsx}\"", "guard:temporal-packaging-contract": "node scripts/check-temporal-worker-packaging-contract.mjs", "guard:temporal-dist-smoke": "node scripts/temporal-worker-dist-import-smoke.mjs", "test:temporal-readiness:fast": "TEMPORAL_TEST_SKIP_ENV_BOOTSTRAP=1 npx vitest --root ee/temporal-workflows src/workflows/__tests__/generic-job-workflow.temporal.test.ts src/config/__tests__/startupValidation.test.ts", "guard:temporal-readiness:fast": "npm run guard:temporal-packaging-contract && npm run guard:temporal-dist-smoke && npm run test:temporal-readiness:fast", "guard:temporal-readiness:docker": "node scripts/temporal-worker-docker-parity.mjs", "guard:keyboard-shortcuts-boundary": "node scripts/guard-keyboard-shortcuts-boundary.mjs", "guard:no-bidi-control-chars": "node scripts/guard-no-bidi-control-chars.mjs", "test:workflow-runtime-v2-compose-smoke": "node scripts/workflow-runtime-v2-compose-smoke.mjs", "guard:ext-v2": "git grep -nE \"ee/server/src/lib/extensions/ui/(descriptors|pages|tabs|navigation)|ee/server/src/lib/extensions/security/propWhitelist\\.ts|ee/server/src/lib/extensions/schemas/(manifest\\.schema|extension-points\\.schema)\\.ts|ee/server/src/lib/extensions/validator\\.ts|/api/extensions/\" -- 'server/**' 'ee/server/**' 'shared/**' 'services/**' ':!**/*.md' ':!**/node_modules/**' ':!**/dist/**' ':!**/build/**' ':!**/.next/**' ':!**/out/**' ':!**/apiRegistry.generated.ts' ':!**/registry.generated.ts' || true; test $(git grep -nE \"ee/server/src/lib/extensions/ui/(descriptors|pages|tabs|navigation)|ee/server/src/lib/extensions/security/propWhitelist\\.ts|ee/server/src/lib/extensions/schemas/(manifest\\.schema|extension-points\\.schema)\\.ts|ee/server/src/lib/extensions/validator\\.ts|/api/extensions/\" -- 'server/**' 'ee/server/**' 'shared/**' 'services/**' ':!**/*.md' ':!**/node_modules/**' ':!**/dist/**' ':!**/build/**' ':!**/.next/**' ':!**/out/**' ':!**/apiRegistry.generated.ts' ':!**/registry.generated.ts' | wc -l) -eq 0", "guard:no-tracked-env-backups": "node scripts/guard-no-tracked-env-backups.mjs", "playwright:bootstrap-db": "node --import tsx/esm scripts/bootstrap-playwright-db.ts", "test:nx": "vitest run --config tools/nx-tests/vitest.config.ts", "affected:test": "NX_DAEMON=false nx affected -t test --output-style=static", "affected:build": "NX_DAEMON=false nx affected -t build --output-style=static", "guard:hocuspocus-compose-build": "node scripts/guard-hocuspocus-compose-build.mjs" }, "dependencies": { "@anthropic-ai/sdk": "^0.30.1", "@aws-sdk/client-s3": "^3.984.0", "@aws-sdk/s3-request-presigner": "^3.984.0", "@blocknote/core": "^0.47.3", "@blocknote/mantine": "^0.47.3", "@blocknote/react": "^0.47.3", "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@floating-ui/dom": "^1.6.0", "@hello-pangea/dnd": "^18.0.1", "@hocuspocus/provider": "^2.13.5", "@huggingface/inference": "^2.8.0", "@js-temporal/polyfill": "^0.4.4", "@mantine/core": "^8.0.0", "@mantine/form": "^8.0.0", "@mantine/hooks": "^8.0.0", "@nestjs/common": "^11.0.3", "@nestjs/config": "^4.0.3", "@openai/codex": "^0.58.0", "@radix-ui/react-checkbox": "^1.1.1", "@radix-ui/react-collapsible": "^1.1.0", "@radix-ui/react-dialog": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.4", "@radix-ui/react-form": "^0.1.0", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-navigation-menu": "^1.2.0", "@radix-ui/react-primitive": "^2.0.0", "@radix-ui/react-select": "^2.1.1", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-switch": "^1.1.0", "@radix-ui/react-tabs": "^1.1.0", "@radix-ui/themes": "^3.1.3", "@rjsf/shadcn": "^6.0.0-beta.8", "@rjsf/utils": "^6.4.1", "@rjsf/validator-ajv8": "^6.0.0-beta.8", "@stripe/stripe-js": "^8.0.0", "@syncedstore/core": "^0.6.0", "@tailwindcss/forms": "^0.5.7", "@tanstack/react-table": "^8.20.5", "@tiptap/extension-collaboration": "^3.12.0", "@tiptap/extension-collaboration-caret": "^3.0.0", "@tiptap/extension-image": "^3.20.1", "@tiptap/extension-link": "^3.0.0", "@tiptap/extension-underline": "^3.0.0", "@tiptap/react": "^3.0.7", "@tiptap/starter-kit": "^3.0.7", "@types/archiver": "^6.0.3", "@types/bcryptjs": "^2.4.6", "@types/react-dropzone": "^4.2.2", "@types/redis": "^4.0.10", "@vitest/coverage-v8": "^4.0.18", "archiver": "^7.0.1", "asc": "^2.1.5", "assemblyscript": "^0.27.37", "axios": "^1.16.0", "bcryptjs": "^2.4.3", "class-variance-authority": "^0.7.0", "clean": "^4.0.2", "clsx": "^2.1.1", "cmdk": "^1.0.4", "cross-spawn": "^7.0.3", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "dompurify": "^3.4.0", "dotenv": "^16.4.5", "ejs": "^3.1.10", "elkjs": "^0.10.0", "emoticon": "^4.1.0", "ffmpeg-static": "^5.2.0", "ffprobe-static": "^3.1.0", "fluent-ffmpeg": "^2.1.3", "fractional-indexing": "^3.2.0", "fs": "^0.0.1-security", "handlebars": "^4.7.8", "imapflow": "^1.3.1", "immer": "^10.1.1", "ini": "^5.0.0", "ink": "^6.8.0", "json-as": "^1.1.19", "jsonwebtoken": "^9.0.2", "kiwi.js": "^1.1.3", "knex": "^3.1.0", "lucide-react": "^0.428.0", "marked": "^14.1.3", "moment": "^2.30.1", "next": "^16.2.6", "next-auth": "^5.0.0-beta.30", "node-vault": "^0.10.2", "nodemailer": "^8.0.5", "null-loader": "^4.0.1", "parsimmon": "^1.18.1", "pdf-lib": "^1.17.1", "pdf2pic": "^3.1.3", "pg": "^8.16.0", "pg-boss": "^10.1.5", "pg-query-stream": "^4.6.0", "posthog-js": "^1.255.1", "posthog-node": "^4.18.0", "puppeteer": "^24.10.1", "qrcode": "^1.5.4", "querystring-es3": "^0.2.1", "radash": "^12.1.0", "react": "^19.2.4", "react-big-calendar": "^1.15.0", "react-day-picker": "^9.5.0", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^19.2.4", "react-dropzone": "^14.3.5", "react-error-boundary": "^4.1.2", "react-hook-form": "^7.52.2", "react-hot-toast": "^2.4.1", "react-icons": "^5.2.1", "react-markdown": "^9.0.1", "react-resizable-panels": "^3.0.6", "react-server-dom-webpack": "^19.2.6", "reactflow": "^11.11.4", "recharts": "^2.12.7", "redis": "^4.7.0", "remark-gfm": "^4.0.0", "rrule": "^2.8.1", "sharp": "^0.34.3", "spawn-sync": "^2.0.0", "speakeasy": "^2.0.0", "swr": "^2.3.0", "tailwind-merge": "^2.6.0", "tar-stream": "^3.1.7", "tinycolor2": "^1.6.0", "tsx": "^4.20.3", "turndown": "^7.2.0", "ua-parser-js": "^2.0.6", "uuid": "^11.1.1", "winston": "^3.13.1", "winston-daily-rotate-file": "^5.0.0", "y-prosemirror": "^1.3.7", "y-webrtc": "^10.3.0", "y-websocket": "^2.0.4", "yjs": "^13.6.18", "zod": "^3.23.8", "zustand": "^4.5.7" }, "devDependencies": { "@bytecodealliance/wizer": "^10.0.0", "@eslint/js": "^9.17.0", "@nx/docker": "^22.6.5", "@nx/eslint": "^22.6.5", "@nx/next": "^22.6.5", "@nx/playwright": "^22.6.5", "@nx/vite": "^22.6.5", "@nx/vitest": "^22.6.5", "@playwright/test": "^1.36.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.6.3", "@testing-library/user-event": "^14.6.1", "@types/dompurify": "^3.0.5", "@types/ejs": "^3.1.5", "@types/fluent-ffmpeg": "^2.1.27", "@types/google-protobuf": "^3.15.12", "@types/jest": "^29.5.14", "@types/jsonwebtoken": "^9.0.6", "@types/knex": "^0.16.1", "@types/lodash": "^4.17.20", "@types/node": "^20.19.24", "@types/nodemailer": "^7.0.9", "@types/parsimmon": "^1.10.9", "@types/qrcode": "^1.5.5", "@types/react": "^19", "@types/react-beautiful-dnd": "^13.1.8", "@types/react-big-calendar": "^1.8.9", "@types/react-dom": "^19", "@types/speakeasy": "^2.0.10", "@types/tinycolor2": "^1.4.6", "@types/turndown": "^5.0.5", "@types/ua-parser-js": "^0.7.39", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^8.8.0", "@typescript-eslint/parser": "^8.8.0", "@vitest/coverage-istanbul": "^4.0.18", "eslint": "^9.0.0", "eslint-plugin-custom-rules": "file:server/eslint-plugins", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "globals": "^15.14.0", "ink-testing-library": "^4.0.0", "jsdom": "^25.0.1", "nx": "^22.6.5", "postcss": "^8.5.10", "protobufjs": "^7.5.8", "tailwindcss": "^3.4.7", "ts-morph": "^25.0.1", "ts-node": "^10.9.2", "ts-proto": "^2.6.0", "typescript": "^5.7.3", "vite": "^7.0.0", "vitest": "^4.0.18" }, "description": "This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).", "main": "index.js", "directories": { "doc": "docs" }, "keywords": [], "author": "", "license": "ISC", "type": "module", "resolutions": {}, "overrides": { "preact": "^10.25.4", "tsup": "^8.5.1", "fast-xml-parser": ">=5.7.0", "fast-xml-builder": ">=1.1.7", "serialize-javascript": ">=6.0.3", "basic-ftp": ">=5.3.1", "form-data": ">=4.0.2", "tough-cookie": ">=4.1.4", "jsonpath-plus": ">=10.4.0", "body-parser": ">=1.20.3", "tar-fs": ">=2.1.2", "tar": ">=7.5.8", "markdown-it": ">=14.1.1", "mdast-util-to-hast": ">=13.2.1", "js-yaml": ">=4.1.1", "koa": ">=2.16.2", "rollup": ">=4.59.0", "minimatch": ">=9.0.5", "brace-expansion": ">=1.1.13", "yaml": ">=2.8.3", "nx": { "brace-expansion": "^2.0.3", "axios": ">=1.15.2" }, "qs": ">=6.14.0", "path-to-regexp@0.1": "0.1.12", "svgo": ">=4.0.1", "jws": ">=4.0.1", "glob": ">=11.0.0", "lodash": ">=4.18.1", "@nestjs/core": ">=11.1.18", "mailparser": ">=3.9.8", "@protobufjs/utf8": ">=1.1.1", "i18next-fs-backend": ">=2.6.4", "@opentelemetry/otlp-transformer": { "protobufjs": ">=8.2.0" }, "engine.io-client": { "ws": ">=8.20.1" }, "next": { "postcss": ">=8.5.10" }, "fast-uri": ">=3.1.2", "picomatch": ">=2.3.2", "ws": ">=8.20.1", "follow-redirects": ">=1.16.0", "ip-address": ">=10.1.1" } }