{ "name": "hivegrid-cloud", "version": "1.7.0", "private": true, "packageManager": "pnpm@11.12.0", "sideEffects": false, "type": "module", "scripts": { "dev": "pnpm --filter @hivegrid/web dev", "dev:local": "bash scripts/dev/local.sh", "dev:local:credentials": "pnpm exec tsx scripts/ensure-local-credentials.ts", "dev:services": "docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d postgres redis clamav", "dev:services:mark-local": "bash scripts/dev/mark-local-database.sh", "dev:services:down": "docker compose -f docker-compose.yml -f docker-compose.dev.yml down", "dev:db:roles": "node scripts/dev-provision-rls-roles.mjs", "env:pull": "node scripts/worktree-session.mjs env-pull", "env:edit": "node scripts/worktree-session.mjs env-edit", "session:start": "node scripts/worktree-session.mjs start", "session:finish": "node scripts/worktree-session.mjs finish", "build": "pnpm --filter @hivegrid/db prisma:generate && pnpm --filter @hivegrid/db build && pnpm --filter @hivegrid/web build", "build:ci": "pnpm run build", "sbom": "node scripts/generate-sbom.mjs", "subframe:sync": "npx -y @subframe/cli@1.209.0 sync --all", "lint": "eslint --max-warnings=0 --ext .tsx,.ts .", "test": "node scripts/run-core-tests.mjs run apps/web/app/ apps/portal-domain-controller/src scripts tools/api-inventory/scan-api-routes.test.ts packages/db/src/*boundary.test.ts", "test:packages": "node scripts/verify-package-test-scripts.mjs && pnpm --filter './packages/*' --filter '!@hivegrid/foundation' --filter '!@hivegrid/view-models' --filter '!@hivegrid/ui-app' --filter '!@hivegrid/ui-subframe' --filter '!@hivegrid/ui-mock' --if-present test", "test:component:p20": "playwright test --config=playwright-ct.config.ts", "test:foundation": "vitest run packages/foundation/src packages/view-models/src packages/ui-app/src packages/ui-subframe/src packages/ui-mock/src", "verify:ci-baseline": "node scripts/verify-ci-baseline.mjs", "verify:env-drift": "node --import tsx scripts/check-env-drift.mjs", "verify:health-baseline": "node scripts/verify-health-baseline.mjs", "verify:api-inventory": "tsx scripts/check-api-inventory.ts && pnpm exec vitest run tools/api-inventory/scan-api-routes.test.ts apps/api/src/route-access-inventory.test.ts apps/api/src/route-access-inventory-doc.test.ts", "verify:i18n": "tsx scripts/i18n-check.ts && tsx scripts/i18n-quality.ts && node scripts/verify-i18n-german-diacritics.mjs && node scripts/verify-hardcoded-strings.mjs && eslint --max-warnings=0 --ext .tsx,.ts packages/ui-app/src packages/ui-subframe/src packages/ui-mock/src", "verify:i18n-performance": "tsx scripts/i18n-catalog-performance.ts", "verify:phase-c-boundaries": "node scripts/verify-phase-c-boundaries.mjs", "verify:ui-visual": "tsx scripts/verify-ui-mock-visual.ts", "verify:ui-hot-swap": "tsx scripts/verify-ui-hot-swap.ts", "test:hot-swap": "pnpm exec vitest run scripts/verify-ui-hot-swap.test.ts && pnpm run verify:ui-hot-swap", "verify:tenant-isolation-report": "tsx scripts/tenant-isolation-report.ts --check", "verify:cross-cutting-models": "node scripts/verify-cross-cutting-models-complete.mjs", "verify:sidebar-routes": "pnpm exec vitest run apps/web/app/application/sidebar/AdminSidebar.test.tsx apps/web/app/application/sidebar/AppSidebar.test.tsx apps/web/app/components/layouts/sidebars/shadcn/app-sidebar.test.tsx apps/web/app/routes/admin/admin-route-targets.test.ts apps/web/app/routes.test.ts", "verify:gitea-ci-workflow": "node scripts/verify-gitea-ci-workflow.mjs", "verify:action-pins": "node scripts/verify-action-pins.mjs && node scripts/verify-container-image-pins.mjs && node scripts/verify-upstream-source-pins.mjs && node scripts/verify-workflow-node-runtime.mjs", "verify:workflow-outbox-native": "pnpm exec vitest run apps/worker/src/outbox/event-router.test.ts apps/worker/src/jobs/workflow-trigger.test.ts apps/worker/src/jobs/workflow-trigger-bootstrap.test.ts apps/worker/src/jobs/workflow-trigger-boundary.test.ts apps/worker/src/jobs/workflow-trigger-executor-factory.test.ts apps/worker/src/jobs/workflow-trigger-native-executor.test.ts apps/worker/src/jobs/workflow-trigger-store.test.ts apps/worker/src/health.test.ts apps/worker/src/index.test.ts packages/foundation/src/workflows.test.ts apps/web/app/modules/workflowEngine/routes/workflow-engine/workflow-producer-inventory.test.ts", "verify:plugin-runtime-live": "node scripts/verify-plugin-runtime-live.mjs", "verify:db-migrate-status": "node scripts/verify-db-migrate-status.mjs", "verify:db-migrate-status:staging": "bash scripts/verify-db-migrate-status-staging.sh", "verify:prisma-baseline": "node scripts/verify-prisma-baseline.mjs", "verify:prisma-baseline-equivalence": "bash scripts/verify-prisma-baseline-equivalence.sh", "verify:migrations-parity": "bash scripts/verify-migrations-schema-parity.sh", "verify:shk-first-steps-migration": "bash scripts/verify-shk-first-steps-migration.sh", "verify:identity-invite-migration": "bash scripts/verify-identity-invite-migration.sh", "verify:openapi-security": "tsx scripts/openapi-guard.ts", "verify:deploy-workflow": "node scripts/verify-gitea-deploy-workflow.mjs", "verify:deploy-readiness": "node scripts/verify-deploy-readiness.mjs", "verify:docker-baseline": "node scripts/verify-docker-baseline.mjs", "verify:docker-non-root": "node scripts/verify-docker-non-root.mjs", "verify:tenant-policy-contract": "node scripts/generate-tenant-policy-contract.mjs --check", "verify:rls-live": "bash scripts/verify-rls-live.sh", "verify:platform-leads-rls-live": "bash scripts/verify-platform-leads-rls-live.sh", "verify:platform-notification-redis-live": "bash scripts/verify-platform-notification-redis-live.sh", "verify:platform-leads-tooling": "tsc -p scripts/platform-leads/tsconfig.json && eslint --max-warnings=0 scripts/platform-leads/*.ts && vitest run scripts/platform-leads/*.test.ts", "verify:rls-release-readiness": "node scripts/verify-rls-release-readiness.mjs", "verify:migrator-role": "node scripts/verify-migrator-role.mjs", "verify:runtime-closures": "node scripts/verify-runtime-closures.mjs", "verify:bundle-size": "node scripts/verify-bundle-size.mjs", "verify:route-inventory": "node scripts/verify-route-inventory.mjs", "verify:source-health": "node scripts/verify-source-health.mjs", "verify:eslint-baseline": "node scripts/verify-eslint-baseline.mjs", "verify:a11y-baseline": "node scripts/verify-a11y-baseline.mjs", "verify:secrets": "node scripts/verify-secrets.mjs", "verify:test-density": "node scripts/verify-test-density.mjs", "verify:test-coverage": "node scripts/verify-test-coverage.mjs", "test:coverage": "node scripts/vitest-cli-compat.mjs run --coverage apps/web/app/ scripts tools/api-inventory/scan-api-routes.test.ts packages/db/src/*boundary.test.ts", "coverage:badge": "node scripts/coverage-summary.mjs", "metrics:commit-history": "node scripts/metrics/commit-history.mjs", "metrics:loc-history": "node scripts/metrics/loc-history.mjs", "verify:a11y-coverage": "node scripts/verify-a11y-coverage.mjs", "verify:color-contrast": "node scripts/verify-color-contrast.mjs", "test:a11y": "pnpm exec vitest run apps/web/app/components/ui/button.a11y.test.tsx apps/web/app/components/ui/errors/ErrorPage.a11y.test.tsx apps/web/app/components/ui/*.axe.test.tsx apps/web/app/components/core/SkipToContent.test.tsx apps/web/app/components/aceternity/HoverEffect.a11y.test.tsx apps/web/app/components/ui/lists/ViewToggle.a11y.test.tsx apps/web/app/components/ui/lists/ViewToggleWithUrl.a11y.test.tsx apps/web/app/components/ui/tabs/TabsWithIcons.a11y.test.tsx scripts/verify-color-contrast.test.mjs", "verify:production-seed-artifact": "node scripts/verify-production-seed-artifact.mjs", "verify:docker-runtime-smoke": "bash scripts/docker-web-runtime-smoke.sh hivegrid-web:smoke", "verify:docker-api-runtime-smoke": "bash scripts/docker-api-runtime-smoke.sh hivegrid-api:smoke", "verify:docker-mcp-runtime-smoke": "bash scripts/docker-mcp-runtime-smoke.sh hivegrid-mcp:smoke", "verify:docker-worker-runtime-smoke": "bash scripts/docker-worker-runtime-smoke.sh hivegrid-worker:smoke", "verify:docker-hocuspocus-runtime-smoke": "bash scripts/docker-hocuspocus-runtime-smoke.sh hivegrid-hocuspocus:smoke", "verify:docker-portal-domain-controller-runtime-smoke": "bash scripts/docker-portal-domain-controller-runtime-smoke.sh hivegrid-portal-domain-controller:smoke", "verify:portal-domain-controller-deploy": "node scripts/verify-portal-domain-controller-deploy.mjs", "verify:auth-api-body-baseline": "node scripts/verify-auth-api-body-baseline.mjs", "verify:api-auth-routing-baseline": "node scripts/verify-api-auth-routing-baseline.mjs", "verify:api-auth-enforced-baseline": "node scripts/verify-api-auth-enforced-baseline.mjs", "verify:mfa-scope-baseline": "node scripts/verify-mfa-scope-baseline.mjs", "verify:impersonation-scope-baseline": "node scripts/verify-impersonation-scope-baseline.mjs", "verify:api-auth-hardening-baseline": "node scripts/verify-api-auth-hardening-baseline.mjs", "verify:transactional-mail-provider-baseline": "node scripts/verify-transactional-mail-provider-baseline.mjs", "verify:db-boundary-baseline": "node scripts/verify-db-boundary-baseline.mjs", "verify:observability-console-baseline": "node scripts/verify-observability-console-baseline.mjs", "verify:permissions-audit-baseline": "node scripts/verify-permissions-audit-baseline.mjs", "verify:audit-cascade-guard": "node scripts/verify-audit-cascade-guard.mjs", "verify:permission-matrix": "node scripts/verify-permission-matrix.mjs", "verify:billing-boundary-baseline": "node scripts/verify-billing-boundary-baseline.mjs", "verify:role-permission-baseline": "node scripts/verify-role-permission-baseline.mjs", "verify:notification-boundary-baseline": "node scripts/verify-notification-boundary-baseline.mjs", "verify:realtime-boundary-baseline": "node scripts/verify-realtime-boundary-baseline.mjs", "verify:storage-boundary-baseline": "node scripts/verify-storage-boundary-baseline.mjs", "verify:export-boundary-baseline": "node scripts/verify-export-boundary-baseline.mjs", "verify:import-boundary-baseline": "node scripts/verify-import-boundary-baseline.mjs", "verify:security-gdpr-docs": "node scripts/verify-security-gdpr-docs.mjs", "verify:host-aware-url-baseline": "node scripts/verify-host-aware-url-baseline.mjs", "verify:theme-error-state-baseline": "node scripts/verify-theme-error-state-baseline.mjs", "verify:i18n-hardcoded-baseline": "node scripts/verify-i18n-hardcoded-baseline.mjs", "verify:hardcoded-strings": "node scripts/verify-hardcoded-strings.mjs", "verify:tenant-auth-baseline": "node scripts/verify-tenant-auth-baseline.mjs", "verify:onboarding-flow": "node scripts/verify-onboarding-flow.mjs", "verify:platform-admin-dashboard-baseline": "node scripts/verify-platform-admin-dashboard-baseline.mjs", "verify:settings-api-onboarding-baseline": "node scripts/verify-settings-api-onboarding-baseline.mjs", "verify:health-ci-quality-baseline": "node scripts/verify-health-ci-quality-baseline.mjs", "verify:staging-live-uat-readiness": "node scripts/verify-staging-live-uat-readiness.mjs", "customer-portal:uat:catalog": "tsx scripts/customer-portal-uat/provision-catalog.ts", "billing:catalog": "tsx scripts/billing-catalog/sync.ts", "verify:billing-catalog": "vitest run scripts/billing-catalog/*.test.ts packages/entitlements/src/commercial-catalog.test.ts", "customer-portal:uat:commercial-fixture": "tsx scripts/customer-portal-uat/provision-commercial-fixture.ts", "customer-portal:uat:fixture": "tsx scripts/customer-portal-uat/provision-fixture.ts", "customer-portal:uat:project-invitation-contact": "tsx scripts/customer-portal-uat/provision-project-invitation-contact.ts", "customer-portal:uat:mail-adapter": "python3 scripts/customer-portal-uat/portal_setup_mail_adapter.py", "verify:customer-portal-mail-adapter": "python3 -m unittest discover -s scripts/customer-portal-uat -p '*_test.py'", "verify:customer-portal-uat": "vitest run scripts/customer-portal-uat/*.test.ts", "verify:docs-links": "tsx scripts/docs-link-check.ts", "verify:core-build-without-plugins-smoke": "node scripts/verify-core-build-without-plugins-smoke.mjs", "verify:removed-modules": "tsx scripts/scan-removed-modules.ts", "verify:load": "node scripts/run-load-tests.mjs", "typecheck": "pnpm --filter @hivegrid/portal-domain-controller typecheck && pnpm --filter @hivegrid/web typecheck", "prettier": "prettier --write '**/*.{ts,tsx}'", "start": "pnpm --filter @hivegrid/web start", "db:generate": "pnpm --filter @hivegrid/db prisma:generate", "db:prepare:portal-legacy-commerce-recut": "node scripts/assert-portal-legacy-commerce-recut-db-push.mjs && pnpm exec prisma db execute --file prisma/rls/portal-legacy-commerce-recut-pre-db-push.sql --config prisma.config.ts", "db:roles:provision": "node scripts/provision-rls-roles.mjs", "db:migrate:deploy": "pnpm --filter @hivegrid/db prisma:migrate:deploy", "seed": "pnpm --filter @hivegrid/db seed", "seed:e2e-readiness": "tsx scripts/seed-e2e-readiness.ts", "seed:demo": "HIVEGRID_DEMO_SEED=1 tsx scripts/seed-hivegrid-demo.ts", "seed:demo-pro": "tsx scripts/seed-demo-pro-crm.ts", "seed:staging-data": "tsx scripts/seed-demo-pro-crm.ts", "seed:demo-pro:geodata": "tsx scripts/validate-demo-pro-geodata.ts", "seed:prod": "NODE_ENV=production pnpm --filter @hivegrid/db seed", "permissions:sync": "pnpm --filter @hivegrid/db permissions:sync", "migrate:api-keys": "tsx scripts/migrate-api-keys.ts", "platform-leads:backfill": "tsx scripts/platform-leads/backfill-cli.ts", "platform-leads:source-bootstrap": "tsx scripts/platform-leads/source-bootstrap-cli.ts", "verify:licenses": "node scripts/verify-licenses.mjs", "verify:lighthouse": "node scripts/run-lighthouse.mjs", "prepare": "node -e \"process.exit(process.env.CI ? 0 : 1)\" || lefthook install || true", "verify:e2e-a11y": "node scripts/run-playwright-a11y.mjs", "verify:e2e-customer-portal-invitation": "playwright test tests/e2e/va-p26a-customer-portal.smoke.spec.ts --config=playwright.config.ts --grep 'stateful invitation lifecycle' --project=chromium --reporter=line", "verify:e2e-mutating-readiness:local": "REQUIRE_E2E_A11Y=1 REQUIRE_AUTH_E2E=1 REQUIRE_E2E_READINESS=1 REQUIRE_E2E_MUTATING_READINESS=1 E2E_A11Y_STRICT=1 E2E_BROWSER_MATRIX=1 E2E_ALLOW_WORKFLOW_RUN=1 E2E_ALLOW_CHAT_SEND=1 E2E_ALLOW_REGISTRATION_CREATE=1 E2E_ALLOW_ACCOUNT_CREATE=1 E2E_ALLOW_NO_TENANT_ACCOUNT_CREATE=1 E2E_ALLOW_PLUGIN_LIFECYCLE_MUTATION=1 E2E_ALLOW_PLUGIN_SETTINGS_WRITE=1 pnpm run verify:e2e-a11y", "verify:e2e-mutating-readiness:worker-local": "E2E_REQUIRE_WORKFLOW_OUTBOX_DRAIN=1 pnpm run verify:e2e-mutating-readiness:local" }, "dependencies": { "@aws-sdk/client-s3": "3.1048.0", "@epic-web/cachified": "^4.0.0", "@headlessui/react": "^2.2.0", "@hello-pangea/dnd": "^18.0.1", "@hivegrid/brand": "workspace:*", "@hivegrid/config": "workspace:*", "@hivegrid/db": "workspace:*", "@hivegrid/entitlements": "workspace:*", "@hivegrid/i18n": "workspace:*", "@hivegrid/logger": "workspace:*", "@hivegrid/mail": "workspace:*", "@hivegrid/queue": "workspace:*", "@hivegrid/storage": "workspace:*", "@hivegrid/ui": "workspace:*", "@hivegrid/url": "workspace:*", "@hocuspocus/provider": "4.3.0", "@monaco-editor/react": "^4.6.0", "@popperjs/core": "^2.11.8", "@prisma/adapter-pg": "7.8.0", "@prisma/client": "7.8.0", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-aspect-ratio": "^1.1.2", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-checkbox": "^1.3.2", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-context-menu": "^2.2.6", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-hover-card": "^1.1.15", "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-progress": "^1.1.8", "@radix-ui/react-radio-group": "^1.3.7", "@radix-ui/react-scroll-area": "^1.2.10", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-slider": "^1.3.5", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-switch": "^1.2.5", "@radix-ui/react-tabs": "^1.1.3", "@radix-ui/react-toggle": "^1.1.2", "@radix-ui/react-toggle-group": "^1.1.2", "@radix-ui/react-tooltip": "^1.2.8", "@react-router/node": "7.18.1", "@react-router/remix-config-routes-adapter": "0.0.0-nightly-bf7ecb711-20240911", "@sindresorhus/slugify": "^2.2.1", "@tiptap/core": "^2.11.5", "@tiptap/extension-collaboration": "2.27.2", "@tiptap/extension-collaboration-cursor": "2.27.2", "@tiptap/extension-color": "^2.11.5", "@tiptap/extension-highlight": "^2.11.5", "@tiptap/extension-horizontal-rule": "^2.11.5", "@tiptap/extension-image": "^2.11.5", "@tiptap/extension-link": "^2.11.5", "@tiptap/extension-placeholder": "^2.0.3", "@tiptap/extension-text-style": "^2.11.5", "@tiptap/extension-underline": "^2.11.5", "@tiptap/pm": "^2.11.5", "@tiptap/react": "^2.11.5", "@tiptap/starter-kit": "^2.11.5", "@tiptap/suggestion": "^2.11.5", "@xyflow/react": "^12.10.0", "ajv": "^8.12.0", "bcryptjs": "^3.0.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "dagre": "^0.8.5", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "decimal.js": "^10.4.3", "dotenv": "^16.6.1", "embla-carousel-react": "^8.6.0", "handlebars": "^4.7.8", "html-to-text": "^9.0.5", "i18next": "24.2.3", "i18next-browser-languagedetector": "^7.1.0", "i18next-http-backend": "3.0.6", "input-otp": "^1.4.2", "is-ip": "^3.1.0", "isbot": "^3.7.0", "jsonwebtoken": "^9.0.0", "lru-cache": "^10.1.0", "lucide-react": "^0.482.0", "mailchecker": "^6.0.1", "monaco-editor": "0.55.1", "motion": "^12.23.26", "otpauth": "^9.5.1", "pdfjs-dist": "6.0.227", "pg": "^8.20.0", "pino": "^9.14.0", "platform": "^1.3.6", "prisma": "7.8.0", "qrcode.react": "^4.2.0", "react": "19.2.3", "react-colorful": "^5.6.1", "react-day-picker": "^9.7.0", "react-dom": "19.2.3", "react-hook-form": "^7.54.2", "react-i18next": "^15.1.0", "react-resizable-panels": "^2.1.7", "react-router": "7.18.1", "react-sortablejs": "^6.1.4", "react-use-measure": "^2.1.7", "recharts": "^2.15.3", "remix-i18next": "^7.0.1", "sonner": "^1.7.4", "spin-delay": "^1.1.0", "tailwind-merge": "^3.0.2", "tippy.js": "^6.3.7", "use-debounce": "^9.0.3", "vaul": "^1.1.2", "y-protocols": "1.0.6", "yjs": "13.6.30", "zod": "^3.25.72", "zustand": "^5.0.6" }, "devDependencies": { "@axe-core/playwright": "^4.10.0", "@headlessui/tailwindcss": "^0.2.2", "@playwright/experimental-ct-react": "1.59.1", "@playwright/test": "1.59.1", "@react-router/dev": "7.18.1", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.1.12", "@tailwindcss/typography": "^0.5.9", "@tailwindcss/vite": "4.2.4", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@types/dagre": "^0.7.52", "@types/html-to-text": "^9.0.1", "@types/jsonwebtoken": "^9.0.6", "@types/pg": "^8.20.0", "@types/platform": "^1.3.4", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@typescript-eslint/eslint-plugin": "^8.59.2", "@typescript-eslint/parser": "^8.59.2", "@vitejs/plugin-react": "4.7.0", "@vitest/coverage-v8": "3.2.7", "axe-core": "^4.11.4", "esbuild": "0.28.1", "eslint": "^8.54.0", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react-hooks": "^7.1.1", "jsdom": "^26.1.0", "jsonc-eslint-parser": "^3.1.0", "lefthook": "^1.7.0", "markdownlint-cli": "^0.48.0", "minimatch": "^10.0.1", "playwright": "1.59.1", "postcss": "^8.4.32", "prettier": "^3.5.3", "prettier-plugin-tailwindcss": "^0.6.14", "tailwindcss": "^4.1.12", "tailwindcss-animate": "^1.0.7", "tsx": "^4.6.2", "typescript": "^5.3.2", "vite": "7.3.6", "vite-tsconfig-paths": "^4.2.2", "vitest": "^3.2.7" } }