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>
3.2 KiB
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
- Initialize root package.json with pnpm workspaces
- Configure TurboRepo (turbo.json)
- Set up shared packages first (config, shared, ui)
- Create NestJS API app
- Create Next.js 16 web app
- Configure TypeScript, ESLint, Prettier at root level
- Set up Vitest for testing
- 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 successfullypnpm 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 packagespnpm test- Run all testspnpm lint- Run lintingpnpm 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