{"record":{"id":"a85b806c2c43e157","repo":"paperclipai/paperclip","slug":"companyid-and-message-are-required","errorCode":null,"errorMessage":"companyId and message are required","messagePattern":"companyId and message are required","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"server/src/routes/board-chat.ts","lineNumber":130,"sourceCode":"    // IS the machine operator: local_trusted is loopback-only single-operator\n    // by construction (see server/src/index.ts boot guards). Refuse everywhere\n    // else rather than lending the server's shell to remote users.\n    if (opts.deploymentMode !== \"local_trusted\") {\n      res.status(403).json({\n        error: \"Board chat is only available on local single-operator instances\",\n        code: \"DEPLOYMENT_MODE_UNSUPPORTED\",\n      });\n      return;\n    }\n\n    const { companyId, message, taskId } = req.body as {\n      companyId?: string;\n      message?: string;\n      taskId?: string;\n    };\n\n    if (!companyId || !message) {\n      res.status(400).json({ error: \"companyId and message are required\" });\n      return;\n    }\n\n    // The body-supplied companyId must belong to the authenticated actor —\n    // it scopes issue reads/writes below and is exported to the subprocess.\n    assertCompanyAccess(req, companyId);\n\n    // Back-pressure: each request holds a subprocess + SSE stream for up to\n    // 2 minutes; cap simultaneous spawns instead of forking without bound.\n    if (liveBoardChats >= MAX_CONCURRENT_BOARD_CHATS) {\n      res.status(429).json({\n        error: \"Too many concurrent board chats — retry shortly\",\n        code: \"BOARD_CHAT_BUSY\",\n      });\n      return;\n    }\n\n    const issueSvc = issueService(db);","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/routes/board-chat.ts#L112-L148","documentation":"Error \"companyId and message are required\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at server/src/routes/board-chat.ts:130 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the required field(s) in the request path, query, or body as named by the error message, then retry.","Check the API contract in packages/shared validators for the exact required shape of this endpoint."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}