Space Docs
Guides
  • Pre-commit hook: Biome on staged files + full-monorepo pnpm typecheck (turbo-cached, cold ~30s). It blocks — fix first.
  • ^build in turbo: tests + typecheck build deps first; if type errors appear after changing a package, run pnpm build.
  • Workspace header: frontend sends x-workspace-id on every tRPC request; missing → user's default workspace.
  • Master workspace bypass: scopedFilter skips the check for the master UUID — never use it for user-facing ops.
  • Next.js: both apps output: "standalone" (.next/standalone deploys) + ignoreBuildErrors: true — rely on pnpm typecheck.
  • Async event dispatch: polling-based (1s) — events aren't processed immediately after a mutation.
  • CI: .github/workflows/ci.yml runs typecheck + lint + test on PR/push to main against pgvector/pgvector:pg16. No Temporal (activities run as plain TS); no Playwright; deploys manual via deploy.sh.
  • Temporal activities import directly: they run in regular Node (not sandboxed) — lazy await import() heavy deps like @react-pdf/renderer.
  • Shared enum: assetTypeEnum lives in assets.ts, imported by products.ts — update in one place.
  • Open-redirect: quote/invoice tracking URLs embed the redirect target inside the signed JWT — never take it from query params.
  • Stripe webhook: POST /api/webhooks/stripe handles quote (payment_intent.*) + invoice (checkout.session.*), routed by session.metadata.invoiceId.
  • Automation allowlist: ActionExecutor.UPDATABLE_FIELDS gates automatable fields — extend it when adding one.
  • Ask model: ASK_MODEL_ID (default claude-sonnet-4-6, …/ask/model.ts) must exist in MODEL_PRICING (boot-checked); HybridRetriever.vectorDistanceMax 0.6; test embedders need createTestHybridRetriever.