aff58646d1
Must-fix:
- mcp.module: drop the now-dead EnvironmentModule import (and its stale
comment). McpService no longer injects EnvironmentService; EnvironmentModule
is @Global and imported at the app root, so DI still resolves.
Stability:
- environment.service: route getSandboxTtlMs + the three SANDBOX_MAX_*_BYTES
caps through a shared getPositiveIntEnv() helper that warns once per key and
falls back to the default on a non-integer or <= 0 value (previously the byte
caps did a bare parseInt, so SANDBOX_MAX_TOTAL_BYTES=0 made every stash_page
fail against a 0-byte cap). TTL behavior is unchanged.
Simplification:
- sandbox.controller: replace the homemade UUID_RE with the project's shared
`uuid` validator (import { validate as isValidUUID } from 'uuid'), matching
the attachment routes; update the spec fixtures to valid v4 UUIDs.
- mcp.service: inline the single-caller one-liner buildSandboxConfig() to
this.sandboxStore.asSink() at the wiring site.
Docs:
- CHANGELOG: add an [Unreleased] > Added entry for #243 (stash_page tool,
anonymous GET /api/sb/:id, five SANDBOX_* env vars).
- AGENTS.md: note that GET /api/sb/:id is in the workspace-gate preHandler's
excludedPaths and is fully tokenless, unlike /api/files/public/... which
still resolves a workspace and needs an attachment JWT.
Tests: cap-getter validation (0/-5/abc -> default, valid -> parsed), updated
UUID fixtures. apps/server jest sandbox/environment/mcp: 233 pass.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
18 lines
788 B
TypeScript
18 lines
788 B
TypeScript
import { Module } from '@nestjs/common';
|
|
import { McpController } from './mcp.controller';
|
|
import { McpService } from './mcp.service';
|
|
import { DatabaseModule } from '@docmost/db/database.module';
|
|
import { AuthModule } from '../../core/auth/auth.module';
|
|
import { TokenModule } from '../../core/auth/token.module';
|
|
|
|
// Community MCP feature: the server itself serves the Model Context Protocol
|
|
// over HTTP at /mcp. DatabaseModule (global) provides WorkspaceRepo. AuthModule
|
|
// supplies AuthService (per-user HTTP-Basic login validation) and TokenModule
|
|
// supplies TokenService (Bearer access-JWT verification for the token fallback).
|
|
@Module({
|
|
imports: [DatabaseModule, AuthModule, TokenModule],
|
|
controllers: [McpController],
|
|
providers: [McpService],
|
|
})
|
|
export class McpModule {}
|