* Return `defs` with `projectPath` marked `required` in each tool's inputSchema. * * Used for the NO-DEFAULT-PROJECT tool surface (issue #993): when the MCP server * has no default project to fall back to — a gateway server started outside any * repo, or a monorepo root whose `.codegraph/` index
(defs: ToolDefinition[])
| 775 | * `required` list (status/files) gains `['projectPath']`. |
| 776 | */ |
| 777 | function withRequiredProjectPath(defs: ToolDefinition[]): ToolDefinition[] { |
| 778 | return defs.map((tool) => { |
| 779 | if (!tool.inputSchema.properties.projectPath) return tool; |
| 780 | const required = tool.inputSchema.required ?? []; |
| 781 | if (required.includes('projectPath')) return tool; |
| 782 | return { |
| 783 | ...tool, |
| 784 | inputSchema: { ...tool.inputSchema, required: [...required, 'projectPath'] }, |
| 785 | }; |
| 786 | }); |
| 787 | } |
| 788 | |
| 789 | /** |
| 790 | * Allowlist-filtered tool definitions WITHOUT an engine — the static surface the |