{"record":{"id":"dbf39bec2376adca","repo":"paperclipai/paperclip","slug":"projectid-is-required","errorCode":null,"errorMessage":"projectId is required","messagePattern":"projectId is required","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/plugins/plugin-llm-wiki/src/worker.ts","lineNumber":784,"sourceCode":"      return { managedSkills: await reconcileWikiSkillResources(ctx, readCompanyIdFromParams(params)) };\n    });\n\n    ctx.actions.register(\"reset-managed-skills\", async (params) => {\n      return { managedSkills: await resetWikiSkillResources(ctx, readCompanyIdFromParams(params)) };\n    });\n\n    ctx.actions.register(\"select-managed-agent\", async (params) => {\n      const agentId = stringField(params.agentId);\n      if (!agentId) throw new Error(\"agentId is required\");\n      return selectWikiAgentResource(ctx, {\n        companyId: readCompanyIdFromParams(params),\n        agentId,\n      });\n    });\n\n    ctx.actions.register(\"select-managed-project\", async (params) => {\n      const projectId = stringField(params.projectId);\n      if (!projectId) throw new Error(\"projectId is required\");\n      return selectWikiProjectResource(ctx, {\n        companyId: readCompanyIdFromParams(params),\n        projectId,\n      });\n    });\n\n    ctx.actions.register(\"reset-managed-routine\", async (params) => {\n      return ctx.routines.managed.reset(\n        routineKeyField(params.routineKey),\n        readCompanyIdFromParams(params),\n        routineOverridesFromParams(params),\n      );\n    });\n\n    ctx.actions.register(\"reconcile-managed-routine\", async (params) => {\n      return ctx.routines.managed.reconcile(\n        routineKeyField(params.routineKey),\n        readCompanyIdFromParams(params),","sourceCodeStart":766,"sourceCodeEnd":802,"githubUrl":"https://github.com/paperclipai/paperclip/blob/67001ec6eb96ae601aa27bc91d9b2415d665334a/packages/plugins/plugin-llm-wiki/src/worker.ts#L766-L802","documentation":"Thrown by the select-managed-project worker action when params.projectId is missing or blank. The action binds a project to the company's managed wiki resources; without a projectId there is nothing to select.","triggerScenarios":"Calling select-managed-project without projectId, with an empty string, or whitespace-only.","commonSituations":"Operator forgot to pass the project id; param keyed 'project_id'; project picker submitted before selection.","solutions":["Pass a valid projectId that exists for the company.","Use camelCase param name (projectId).","Verify the project via ctx.projects.get before calling."],"exampleFix":"// before\nctx.actions.run('select-managed-project', { companyId });\n// after\nctx.actions.run('select-managed-project', { companyId, projectId });","handlingStrategy":"validation","validationCode":"function assertProjectId(value: unknown) {\n  if (typeof value !== 'string' || !value.trim()) throw new Error('projectId is required');\n}","typeGuard":"function isNonBlankString(value: unknown): value is string {\n  return typeof value === 'string' && value.trim().length > 0;\n}","tryCatchPattern":null,"preventionTips":["Verify the project exists with ctx.projects.get before selecting.","Use camelCase param keys (projectId)."],"tags":["paperclip","wiki","project","validation"],"backgroundTag":null,"analyzedSha":"67001ec6eb96ae601aa27bc91d9b2415d665334a","analyzedAt":"2026-08-12T12:05:45.408Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}