Files
stack/docs/scratchpads/1-project-scaffold.md
Jason Woltje 12abdfe81d feat(#93): implement agent spawn via federation
Implements FED-010: Agent Spawn via Federation feature that enables
spawning and managing Claude agents on remote federated Mosaic Stack
instances via COMMAND message type.

Features:
- Federation agent command types (spawn, status, kill)
- FederationAgentService for handling agent operations
- Integration with orchestrator's agent spawner/lifecycle services
- API endpoints for spawning, querying status, and killing agents
- Full command routing through federation COMMAND infrastructure
- Comprehensive test coverage (12/12 tests passing)

Architecture:
- Hub → Spoke: Spawn agents on remote instances
- Command flow: FederationController → FederationAgentService →
  CommandService → Remote Orchestrator
- Response handling: Remote orchestrator returns agent status/results
- Security: Connection validation, signature verification

Files created:
- apps/api/src/federation/types/federation-agent.types.ts
- apps/api/src/federation/federation-agent.service.ts
- apps/api/src/federation/federation-agent.service.spec.ts

Files modified:
- apps/api/src/federation/command.service.ts (agent command routing)
- apps/api/src/federation/federation.controller.ts (agent endpoints)
- apps/api/src/federation/federation.module.ts (service registration)
- apps/orchestrator/src/api/agents/agents.controller.ts (status endpoint)
- apps/orchestrator/src/api/agents/agents.module.ts (lifecycle integration)

Testing:
- 12/12 tests passing for FederationAgentService
- All command service tests passing
- TypeScript compilation successful
- Linting passed

Refs #93

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 14:37:06 -06:00

3.2 KiB

Issue #1: Project scaffold (monorepo, NestJS, Next.js 16)

Objective

Set up the monorepo structure with pnpm workspaces + TurboRepo containing:

  • apps/api (NestJS)
  • apps/web (Next.js 16)
  • packages/shared (types, utilities)
  • packages/ui (shared components)
  • packages/config (shared configuration)

Requirements

  • pnpm workspace configuration
  • TurboRepo for build orchestration
  • TypeScript strict mode
  • ESLint + Prettier
  • Vitest for unit tests
  • Initial package.json scripts

Approach

  1. Initialize root package.json with pnpm workspaces
  2. Configure TurboRepo (turbo.json)
  3. Set up shared packages first (config, shared, ui)
  4. Create NestJS API app
  5. Create Next.js 16 web app
  6. Configure TypeScript, ESLint, Prettier at root level
  7. Set up Vitest for testing
  8. Add build/dev/test scripts

Progress

  • Initialize pnpm workspace configuration
  • Set up TurboRepo for build orchestration
  • Create packages/config
  • Create packages/shared
  • Create packages/ui
  • Create apps/api (NestJS)
  • Create apps/web (Next.js 16)
  • Configure TypeScript strict mode
  • Set up ESLint + Prettier
  • Configure Vitest
  • Add initial package.json scripts
  • Test build and verify

Testing Results

  • pnpm build - All 4 packages build successfully
  • pnpm test - All 19 tests pass (shared: 10, api: 3, ui: 4, web: 2)

Structure Created

mosaic-stack/
├── apps/
│   ├── api/              # NestJS 11.1.12 API
│   │   ├── src/
│   │   │   ├── main.ts
│   │   │   ├── app.module.ts
│   │   │   ├── app.controller.ts
│   │   │   └── app.service.ts
│   │   └── package.json
│   └── web/              # Next.js 16.1.6 with App Router
│       ├── src/app/
│       │   ├── layout.tsx
│       │   ├── page.tsx
│       │   └── globals.css
│       └── package.json
├── packages/
│   ├── config/           # Shared TypeScript, ESLint, Prettier configs
│   │   ├── typescript/
│   │   ├── eslint/
│   │   └── prettier/
│   ├── shared/           # Shared types and utilities
│   │   └── src/
│   │       ├── types/
│   │       └── utils/
│   └── ui/               # Shared React components
│       └── src/
│           └── components/
├── package.json          # Root package.json with scripts
├── pnpm-workspace.yaml   # Workspace configuration
├── turbo.json            # TurboRepo configuration
├── tsconfig.json         # Root TypeScript config
├── eslint.config.js      # Root ESLint config
└── .prettierrc.js        # Root Prettier config

Key Scripts

  • pnpm dev - Start all dev servers (API: 3001, Web: 3000)
  • pnpm build - Build all packages
  • pnpm test - Run all tests
  • pnpm lint - Run linting
  • pnpm format - Format all files

Notes

  • Version: 0.0.1 (M1-Foundation milestone)
  • Using pnpm 10.19.0 for package management
  • TurboRepo 2.8.0 for efficient build caching
  • Next.js 16.1.6 with Turbopack for dev
  • NestJS 11.1.12 with Vitest for testing
  • TypeScript 5.8.2 in strict mode