diff --git a/services/cowork-service/src/lib/feature-flags.ts b/services/cowork-service/src/lib/feature-flags.ts index 84374d8d..002b9d7b 100644 --- a/services/cowork-service/src/lib/feature-flags.ts +++ b/services/cowork-service/src/lib/feature-flags.ts @@ -9,18 +9,21 @@ import { config } from './config.js'; const registry = createFlagRegistry({ defaults: { + // ── Product-specific flags (seed.ts clawcowork entry) ── sandbox_enabled: true, plugins_enabled: true, - computer_use_enabled: false, - browser_extension_enabled: false, - connectors_enabled: true, + mcp_connectors_enabled: true, scheduling_enabled: true, + computer_use_enabled: false, parallel_agents_enabled: true, + marketplace_enabled: true, wasm_plugins_enabled: false, - dispatch_api_enabled: false, - marketplace_enabled: false, - institutional_knowledge_enabled: false, + llm_multi_model_enabled: false, audit_logging_enabled: true, + platform_auth_required: false, + dispatch_api_enabled: true, + // ── Common flag (from COMMON_FLAGS in seed.ts) ── + telemetry_enabled: false, }, enabled: config.FEATURE_FLAGS_ENABLED, }); diff --git a/services/cowork-service/src/lib/ipc-bridge.ts b/services/cowork-service/src/lib/ipc-bridge.ts index 5da4e317..0badaeeb 100644 --- a/services/cowork-service/src/lib/ipc-bridge.ts +++ b/services/cowork-service/src/lib/ipc-bridge.ts @@ -109,7 +109,7 @@ export class IpcBridge { /** Send a JSON-RPC call and await the response. */ async call(method: string, params: Record): Promise { - if (!this.child?.stdin?.writable && method !== 'initialize') { + if (!this.child?.stdin?.writable) { throw new Error('IPC bridge not started'); } diff --git a/services/cowork-service/src/modules/health/routes.ts b/services/cowork-service/src/modules/health/routes.ts index 8630e0b0..99b331ca 100644 --- a/services/cowork-service/src/modules/health/routes.ts +++ b/services/cowork-service/src/modules/health/routes.ts @@ -31,13 +31,15 @@ export async function healthRoutes(app: FastifyInstance) { }; } - const allOk = Object.values(checks).every(c => c.status === 'ok'); + const ipcConnected = getIpcBridge().isRunning; + const depsOk = Object.values(checks).every(c => c.status === 'ok'); + const allOk = depsOk && ipcConnected; reply.code(allOk ? 200 : 503); return { status: allOk ? 'ok' : 'degraded', service: config.SERVICE_NAME, productId: PRODUCT_ID, - ipcBridge: getIpcBridge().isRunning ? 'connected' : 'disconnected', + ipcBridge: ipcConnected ? 'connected' : 'disconnected', checks, timestamp: new Date().toISOString(), };