Files
stack/CLAUDE.md
Jarvis 774b76447d
Some checks failed
ci/woodpecker/pr/ci Pipeline failed
ci/woodpecker/push/ci Pipeline failed
fix: rename all packages from @mosaic/* to @mosaicstack/*
- Updated all package.json name fields and dependency references
- Updated all TypeScript/JavaScript imports
- Updated .woodpecker/publish.yml filters and registry paths
- Updated tools/install.sh scope default
- Updated .npmrc registry paths (worktree + host)
- Enhanced update-checker.ts with checkForAllUpdates() multi-package support
- Updated CLI update command to show table of all packages
- Added KNOWN_PACKAGES, formatAllPackagesTable, getInstallAllCommand
- Marked checkForUpdate() with @deprecated JSDoc

Closes #391
2026-04-04 21:43:23 -05:00

1.5 KiB

CLAUDE.md — Mosaic Stack

Project

Self-hosted, multi-user AI agent platform. TypeScript monorepo.

Stack

  • API: NestJS + Fastify adapter (apps/gateway)
  • Web: Next.js 16 + React 19 (apps/web)
  • ORM: Drizzle ORM + PostgreSQL 17 + pgvector (packages/db)
  • Auth: BetterAuth (packages/auth)
  • Agent: Pi SDK (packages/agent, packages/cli)
  • Queue: Valkey 8 (packages/queue)
  • Build: pnpm workspaces + Turborepo
  • CI: Woodpecker CI
  • Observability: OpenTelemetry → Jaeger

Commands

pnpm typecheck        # TypeScript check (all packages)
pnpm lint             # ESLint (all packages)
pnpm format:check     # Prettier check
pnpm test             # Vitest (all packages)
pnpm build            # Build all packages

# Database
pnpm --filter @mosaicstack/db db:push      # Push schema to PG (dev)
pnpm --filter @mosaicstack/db db:generate  # Generate migrations
pnpm --filter @mosaicstack/db db:migrate   # Run migrations

# Dev
docker compose up -d                  # Start PG, Valkey, OTEL, Jaeger
pnpm --filter @mosaicstack/gateway exec tsx src/main.ts  # Start gateway

Conventions

  • ESM everywhere ("type": "module", .js extensions in imports)
  • NodeNext module resolution
  • Explicit @Inject() decorators in NestJS (tsx/esbuild doesn't support emitDecoratorMetadata)
  • DTOs in *.dto.ts files at module boundaries
  • OTEL tracing imported before NestJS bootstrap (import './tracing.js')
  • All three gates must pass before push: typecheck, lint, format:check